Algorithmen und Datenstrukturen Programmier Aufgabe

kafa175

Mitglied
Hallo Allerseits, ich bräuchte eine kleine Hilfe, um eine Methode zu implementieren. Die eigentliche Aufgabe habe ich bereits fertig.
Wäre sehr nett wenn sich jemand bei mir melden könnte, der sich mit Algorithmen und Datenstrukturen auskennt und mir helfen möchte..
 
K

kneitzel

Gast
Wenn du deine Problematik beschreiben würdest, dann könnte man dir helfen. Aber so lange du das Problem nicht beschreibst, wirst du kaum Hilfe bekommen.
 

kafa175

Mitglied
Ja das Problem ist halt das ich die Aufgabenstellung nicht posten kann wegen meinem Prof.
Wir haben ein SearchTree mit Autocompleting-Feature implementiert. Die Methoden dazu stehen bereits. Jetz haben wir eine Teilaufgabe, wo wir einen Datensatz hinzufügen sollen, und dabei brauche ich Hilfe.
 
K

kneitzel

Gast
Ich bin sicher, dass hier Leute helfen könnten, nur eben sieht sich hier niemand als PN Trainer oder so. Daher kannst du vielleicht überlegen, wie du mit etwas Transferleistung die Problematik darstellen kannst so dass man Dir im Forum helfen kann.
 

kafa175

Mitglied
Okay ich fang mal so an. Ich habe eine txt Datei diese enthält einen Datensatz mit 3 Millionen Queries. Dann hab ich eine Methode gegeben die noch leer ist, da soll ich die txt datei verarbeiten und daraus einen Trie bauen. Also wüsste ich gerne als erstes wie ich die Text Datei verarbeiten soll?
 

kafa175

Mitglied
Aktueller Stand: ich hab die Datei ausgelesen bekommen mittels Scanner. Könnte mir jemand eventuell helfen, mit diesen Daten eine Trie zu erstellen? Wie gesagt, die Methoden habe ich. Ich weiß nur nicht, wie ich sie darauf anwenden könnte...
 
K

kneitzel

Gast
Also die Frage ist so erst einmal noch nicht ausreichend. In der Regel ist der Code so strukturiert:
- Du erstellst eine Instanz des Baumes
- Du liest die Datei ein, und erzeugst dabei die Instanzen von Deinen Datensatz Objekten. Jede Instanz fügst Du einfach in den Baum ein.

Also in Pseudo-Code sozusagen:
Code:
tree = new Tree();
while (Datensätze vorhanden) {
  datensatz = nächster gelesener Datensatz
  tree.insert(datensatz)
}

Das wäre ein genereller Ablauf für das Lesen von Daten und füllen einer Baumstruktur.

Bei dem Einfügen in den Baum, ist dann halt immer die Frage, wie der Baum genau aussehen soll. Der Begriff Baum sagt da erst relativ wenig aus.

So ein Einfüge-Algorithmus sieht in der Regel so aus:
- Neuer Knoten mit Datensatz erstellen.
- Ist der Baum leer / Wurzel leer? -> Wurzel vom Baum = neuer Knoten, fertig
- aktueller Knoten = Wurzel.
- Endlos-Schleife:
-- Entscheidung, welcher Childknoten von aktuellem Knoten verwendet wird.
-- Childknoten in aktuellem Knoten leer? ->childknoten = neuer Knoten, fertig.
-- aktueller Knoten = Childknoten

Oder rekursiv:
- neuen Knoten mit Datensatz erstellen.
- Ist Baum leer? Wurzel = Neuer Datensatz
- insert(wurzel, neuer Knoten)

insert(aktueller Knoten, neuer Knoten)
- Wo beim aktuellen Knoten soll der neue Knoten hin?
- childknoten aussuchen.
- childknoten leer? Ja: ausgesuchter Child = neuer Knoten; Nein: insert(childknoten, neuer Knoten)

Bei einem Binary Search Tree hat man 2 Kindknoten und das es gilt eine Regel wie: Linker Teilbaum hat Werte die kleiner sind als der Wert des Knotens und der rechte Teilbaum hat Werte, die größer sind.

Die Operationen finden sich z.B. auch unter https://www.geeksforgeeks.org/binary-search-tree-data-structure/
 

mihe7

Top Contributor
Ich glaube, es geht nicht um einen Suchbaum, sondern um eine Präfixbaum (Trie). Im Prinzip gelten dort natürlich die gleichen Regeln wie für alle Bäume bzw. Graphen, so dass sich das Vorgehen nicht großartig von dem unterscheidet, was @JustNobody schon geschrieben hat.

Die Wurzel könnte der leere String sein, der Pfad von der Wurzel zum Blatt beschreibt dann ein Wort. D. h. für jeden Anfangsbuchstaben hat die Wurzel einen Kindknoten, auf die wiederum Knoten für den zweiten Buchstaben folgen usw.

Das lässt sich einfach aber ineffizient aufbauen, indem man für jedes Wort einfach von der Wurzel beginnend den jeweiligen Folgeknoten besucht, sofern dieser existiert, bzw. einfügt, falls dieser nicht existiert. Muss ein Knoten eingefügt werden, kann sofort der ganze Teilbaum (=Rest des Wortes) eingefügt werden.

Für die Speicherung der Kanten auf die Kindknoten böte sich ein sortiertes Array (bzw. eine sortierte Liste) an, da damit in logarithmischer-Zeit der richtige Kindknoten gefunden werden kann.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Algorithmen und Datenstrukturen Java Basics - Anfänger-Themen 3
B Datenstrukturen & Algorithmen => Iteratoren Java Basics - Anfänger-Themen 7
S Algorithmen Java Basics - Anfänger-Themen 1
Viktor A. Kaiser Rekursive Algorithmen Java Basics - Anfänger-Themen 9
D Algorithmen lernen Java Basics - Anfänger-Themen 45
H Übungsaufgabe algorithmen Java Basics - Anfänger-Themen 2
F Graphen-Algorithmen Java Basics - Anfänger-Themen 1
M Elementaren Algorithmen Java Basics - Anfänger-Themen 2
J Suche Tipps zum erstellen von Algorithmen Java Basics - Anfänger-Themen 5
E Algorithmen und Programmierung - Datum und Zeit ausgeben? Java Basics - Anfänger-Themen 8
S Algorithmen für Anfänger Java Basics - Anfänger-Themen 18
C Terminierung von imperativen Algorithmen Java Basics - Anfänger-Themen 13
B OOP Algorithmen und dann ? Java Basics - Anfänger-Themen 4
J Strategy: geht es immer um die Algorithmen? Java Basics - Anfänger-Themen 4
Spin Probleme mit Algorithmen Java Basics - Anfänger-Themen 8
W Algorithmen und Eigenschaften Java Basics - Anfänger-Themen 29
J Algorithmen verbessern Java Basics - Anfänger-Themen 11
B Zeitmessung von Algorithmen Java Basics - Anfänger-Themen 8
G Komplexe Algorithmen implementieren Java Basics - Anfänger-Themen 4
J Hilfe! Algorithmen --> ich schaff es nicht Java Basics - Anfänger-Themen 4
T Laufzeitanalyse von Algorithmen - Problem und Frage - Java Basics - Anfänger-Themen 1
R Algorithmen entwickeln und in Java umsetzen Java Basics - Anfänger-Themen 3
V_Fynn03 Beliebiges Element in einer Liste löschen (Java)(Lineare Datenstrukturen) Java Basics - Anfänger-Themen 9
V_Fynn03 Lineare Datenstrukturen Element löschen? Java Basics - Anfänger-Themen 2
F Datenstrukturen Java Basics - Anfänger-Themen 5
S Datenstrukturen Java Basics - Anfänger-Themen 7
L Datenstrukturen/ Listen Java Basics - Anfänger-Themen 17
J Dynamische Datenstrukturen Java Basics - Anfänger-Themen 0
B Datenstrukturen in Java Java Basics - Anfänger-Themen 6
D komplexe Datenstrukturen "klonen" Java Basics - Anfänger-Themen 4
W Übungsaufgabe:Dynamische Datenstrukturen Java Basics - Anfänger-Themen 10
K Datentypen Gleiche Zufallszahlen in verschiedenen Datenstrukturen Java Basics - Anfänger-Themen 6
G Unterschied zwischen den Datenstrukturen Java Basics - Anfänger-Themen 2
G Probleme mit Datenstrukturen (Vektor, HashMap) Java Basics - Anfänger-Themen 5
H generische Bausteine, heterogene Datenstrukturen Java Basics - Anfänger-Themen 2
J Datenstrukturen Java Basics - Anfänger-Themen 12
S Datenstrukturen Java Basics - Anfänger-Themen 7
D Richtig Vorbereiten auf eine Programmier Klausur Studium. Java Basics - Anfänger-Themen 7
B Programmier - Aufgabe Hilfe :( Java Basics - Anfänger-Themen 0
B Programmier - Aufgabe ohne Ahnung Hilfe :( Java Basics - Anfänger-Themen 5
L Suche Programmier-Projekt mit Anleitung Java Basics - Anfänger-Themen 3
J OOP Frage zu Programmier-Entscheidungen Java Basics - Anfänger-Themen 16
hdi Programmier-Stil : Speicher vs. Quellcode Java Basics - Anfänger-Themen 67
H Programmier Frage Java Basics - Anfänger-Themen 7
A programmier beispiel Java Basics - Anfänger-Themen 18
G Programmier vorschläge Java Basics - Anfänger-Themen 23
O H.E.L.P. (wie programmier ich weiter?) Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben