Ternary Suchbaum

Gertrud Kaulbach Juli 26, 2016 T 10 0
FONT SIZE:
fontsize_dec
fontsize_inc

In der Informatik ist ein ternäres Suchbaum eine Art von trie, wo Knoten werden als binärer Suchbaum angeordnet. Wie andere Präfix Bäumen kann eine ternäre Suchbaum als assoziatives Map-Struktur mit der Fähigkeit zur inkrementellen String-Suche verwendet werden. Es sind jedoch auch ternäre Suchbäume platzsparender im Vergleich zu Standard-Präfix Bäumen, auf Kosten der Geschwindigkeit. Häufige Anwendungen für ternäre Suchbäume gehören Rechtschreibprüfung und automatische Vervollständigung.

Bezeichnung

Jeder Knoten eines ternären Suchbaum speichert ein einzelnes Zeichen, ein Objekt, und Hinweise auf seine drei Kinder üblicherweise mit dem Namen "gleich kid" "lo kid" und "hallo Kind." Ein Knoten kann auch einen Zeiger zu seinem Elternknoten als auch als ein Indikator, ob oder ob nicht der Knoten kennzeichnet das Ende eines Wortes. Die lo kid Zeiger muss auf einen Knoten, deren Zeichenwert geringer ist als der aktuelle Knoten verweisen. Umgekehrt muss die Hallo kid Zeiger auf einen Knoten, dessen Charakter ist größer als der aktuelle Knotenpunkt. Die folgende Abbildung zeigt ein ternäres Suchbaum mit den Saiten "als", "at", "cup", "niedlich", "er", "i" und "uns":

Wie bei anderen Trie-Datenstruktur, wobei jeder Knoten in einem ternären Suchbaum repräsentiert ein Präfix der gespeicherten Strings. Alle Zeichenketten in der Mitte Teilbaum eines Knotens beginnen mit dem Präfix.

Ternary Suchbaum Operationen

Sieh nach oben

So suchen Sie einen bestimmten Knoten oder die Daten mit einem Knoten zugeordnet ist, wird ein String-Schlüssel benötigt wird. Eine Nachschlagverfahren beginnt durch Prüfen der Wurzelknoten des Baumes und der Bestimmung, welche der folgenden Bedingungen stattgefunden hat. Wenn das erste Zeichen der Zeichenfolge kleiner als die Zeichen in dem Wurzelknoten kann eine rekursive Lookup auf den Baum, dessen Wurzel das lo Kind des aktuellen Root aufgerufen werden. Ebenso, wenn die ersten Zeichen größer ist als der aktuelle Knoten in dem Baum, dann wird ein rekursiver Aufruf an die Baum, dessen Wurzel die Hallo Kind des aktuellen Knotens durchgeführt werden. Als letzte Fall wird, wenn das erste Zeichen des Strings ist gleich dem Zeichen des aktuellen Knotens, dann die Funktion den Knoten, wenn es keine weiteren Zeichen in der Taste. Wenn es mehr Zeichen im Schlüssel dann muss das erste Zeichen des Schlüssels entfernt werden und ein rekursiver Aufruf ist angesichts der Gleich Kind-Knoten und das modifizierte Schlüssel gemacht. Dies kann auch in einer nicht rekursiven Art und Weise über einen Zeiger auf den aktuellen Knoten und einen Zeiger auf das aktuelle Zeichen der Taste geschrieben werden.

Einfügung

Einfügen eines Werts in einem ternären Suche rekursiv viel wie Abfragen definiert sind definiert werden. Dieses rekursive Verfahren wird kontinuierlich am Knoten des Baumes mit Hilfe eines Schlüssels, die progressiv kürzer Beschneiden Buchstaben aus der Vorderseite der Taste aufgerufen wird. Wenn dieses Verfahren einen Knoten, der nicht erzeugt wurde erreicht, erzeugt er den Knoten und ordnet sie den Zeichenwert des ersten Zeichens im Schlüssel. Ob ein neuer Knoten erzeugt oder nicht, überprüft das Verfahren, ob das erste Zeichen in der Zeichenfolge größer oder kleiner als die Zeichenwert in dem Knoten und macht einen rekursiven Aufruf auf den entsprechenden Knoten in der Suchoperation. Falls ist jedoch erste Zeichen des Schlüssels gleich des Knotens Wert dann die Einfügung Verfahren beruht auf der gleich Kind und erste Zeichen der Taste aufgerufen wird beschnitten entfernt. Wie binäre Suche Bäume und andere Datenstrukturen, können ternäre Suchbäume degenerierten abhängig von der Reihenfolge der Schlüssel zu werden. Einfügen von Schlüsseln in Ordnung ist ein Weg, um die denkbar schlechteste degenerierten Baum zu erreichen. Einfügen der Schlüssel in zufälliger Reihenfolge erzeugt oft eine ausgewogene Struktur.

Laufzeit

Die Laufzeit des ternären Suchbäume variiert signifikant mit der Eingabe. Ternary Suchbäume laufen am besten, wenn gegeben mehrere ähnliche Zeichenfolgen, vor allem, wenn diese Strings ein gemeinsames Präfix. Alternativ sind ternäre Suchbäume wirksam ist, wenn die Speicherung einer großen Anzahl von relativ kurzen Zeichenfolgen. Laufzeiten für ternäre Suchbäume sind ähnlich wie binäre Suchbäume, dass sie in der Regel laufen in logarithmischer Zeit, sondern kann in linearer Zeit in der degenerierten Fall laufen.

Zeit Komplexität für ternäre Suchbaum Operationen:

Vergleich zu anderen Datenstrukturen

Tries

Obwohl langsamer als andere Präfix Bäume können ternäre Suchbäume für größere Datenmengen besser geeignet, die aufgrund ihrer Raumeffizienz.

Hash-Karten

Hash-Tabellen können auch anstelle von ternären Suchbäume für die Zuordnung Saiten Werte verwendet werden. Allerdings Hash-Karten auch häufig verwenden mehr Speicher als ternäre Suchbäume. Zusätzlich sind Hash-Karten in der Regel langsamer an die Berichterstattung einen String, der nicht in der gleichen Datenstruktur, weil es muss die gesamte Zeichenkette und nicht nur die ersten Zeichen zu vergleichen. Es gibt einige Hinweise, die ternäre Suchbäume schneller als Hash-Karten läuft zeigt. Darüber hinaus müssen Hash-Karten nicht für viele der Anwendungen von ternären Suchbäume, wie nahe Nachbar Lookups zu erlauben.

Verwendungen

Ternären Suchbäume können verwendet werden, um viele Probleme bei der eine große Anzahl von Zeichenfolgen müssen gespeichert und in einer beliebigen Reihenfolge abgerufen werden lösen. Einige der am häufigsten oder am meisten nützlich dafür sind unter:

  • Jedesmal, wenn ein Trie könnte verwendet werden, aber ein weniger speicherintensive Struktur bevorzugt.
  • Eine schnelle und platzsparende Datenstruktur für das Mapping-Strings mit anderen Daten.
  • Um eine Funktion zur automatischen Vervollständigung implementieren.
  • Als Rechtschreibprüfung
  • Nahes Nachbar Suche
  • Als Datenbank vor allem bei der Indizierung von mehreren Nicht-Schlüsselfelder ist wünschenswert
  • Anstelle einer Hash-Tabelle.
  Like 0   Dislike 0
Vorherige Artikel Bistum Požega
Nächster Artikel Stuart Dryburgh
Bemerkungen (0)
Keine Kommentare

Fügen Sie einen Kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Zeichen übrig: 3000
captcha