Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm
DIGITALE BÄUME –
TRIES
1
Übersicht
0. Einführung 1. Algorithmen
2. Eigenschaften von Programmiersprachen 3. Algorithmenparadigmen
4. Suchen & Sortieren 5. Hashing
6. Komplexität von Algorithmen 7. Abstrakte Datentypen (ADT) 8. Listen
9. Bäume 10. Graphen
2
Lernziele des Kapitels
¨ Verstehen, was ein digitaler Baum ist und wie er
funkHoniert?
¨ Kennenlernen von Tries und ihrer Arbeitsweise.
¨ ImplemenHerung von Tries kennenlernen.
¨ Kennenlernen der OperaHonen auf Tries.
¨ Spezielle Tries - Patricia-Bäume - kennenlernen.
2
4
Suchbäume - bisher
o In jedem aufgesuchten Knoten gibt es einen vollständigen Vergleich zwischen Schlüsselwerten.
o Ist der Suchschlüssel nicht im Baum, wird dies erst in einem BlaSknoten festgestellt.
⇒ Aufwand für vollständige Schlüsselvergleiche ist groß.
⇒ Speicherplatz für vollständige Schlüsselspeicherung ist hoch.
5
Idee für eine andere OrganisaHon von Suchbäumen:
Digitale Suchbäume
o Idee: In jedem aufgesuchten Knoten werden
aufeinanderfolgende Teile des Suchschlüssels miteinander verglichen:
⇒ Jede unterschiedliche Folge von Teilschlüsseln ergibt einen eigenen Suchweg im Baum
⇒ Alle Schlüssel mit gleichem Präfix haben in der Länge des Präfixes den gleichen Suchweg.
⇒ Die Ziffern oder Zeichendarstellung der verwendeten Suchschlüssel werden ausgenutzt.
⇒ Schlüssel = Folge von alphabeHschen Zeichen, Ziffern, Bits oder Gruppen dieser Elemente.
⇒ MächHgkeit des Alphabets für die Schlüsselteile = m à m-Wege- Baum.
6
Idee für eine andere OrganisaHon von Suchbäumen:
Digitale Suchbäume
⇒ Au^au des Digitalbaums: Zerlegung des Schlüssels der Länge L in L/k Teile gleicher Länge.
⇒ Aneinanderreihung der Schlüsselteile = Weg im Digitalbaum; i-te Kante = i-ter Teil des Schlüssels.
⇒ Baum = Menge, der für alle Schlüssel zu speichernden Wege.
⇒ Die Markierungen aller von einem Knoten abgehenden Kanten sind paarweise verschieden.
⇒ Aussehen des Baums hängt ab von der darzustellenden Schlüsselmenge.
⇒ Höhe des Baums = Anzahl der Teile des längsten Schlüsselwertes; bei fester Schlüssellänge L à h = L/k
7
Digitalbaum: Beispiel
17 21 39 47
02 17 99 15 17 49 11
47
10 25
20 50
01 17
34 25
170234 170225 171717 219901 391550 391720 394910 394925 471147
• Schlüssel: 6-stellige Zahlen (L = 6)
• Schlüsselteile = Ziffernpaare (k = 2)
• Grad des Baums m = 100
8
Tries
o Spezielle ImplemenHerung von digitalen Bäumen.
¤ Digital leitet sich aus der Behandlung der Schlüssel ab. Diese werden als Zeichen- oder Ziffernfolgen eines Zahlensystems zur Basis n
betrachtet.
o n-äre Baumstruktur, wobei n = Anzahl der Zeichen des Alphabets dieser ZeichenkeSen.
9
Historie & Namensgebung
o 1959 von Renee de la Briandais entwickelt.
o 1960 Namensgebung von Edward Fredkin.
o Ursprung vom englischen Wort „Retrieval“.
o Zweck: Suchen und Wiederauffinden von ZeichenkeSen.
Trie, Try, Tree ?
11
Struktur 1/3
o Für ein Alphabet mit N Zeichen enthält jeder Knoten ein Feld mit N Verweisen.
o Für ein Alphabet ohne Umlaute, ausschließlich bestehend aus Großbuchstaben, können die Knoten demnach 26 Verweise auf Folgeknoten enthalten.
o Wörter werden als Buchstabenfolgen aufgefasst.
o Verzweigungen gibt es dort, wo verschiedene Buchstaben unterschieden werden müssen.
o Kein Wort darf Präfix eines anderen sein.
¤ Das kann man lösen, indem man ein im Alphabet nicht enthaltenes Zeichen (z.B. Blank) an jedes Wort anhängt.
12
Struktur 2/3
o Die eigentlichen Schlüssel werden nur in den BlaSknoten gespeichert.
o Teilschlüssel der inneren Knoten dienen hierbei nur zur Wegfindung.
o Struktur eines Trie ist unabhängig der Einfügereihenfolge. D.h.
für jede Menge von unterschiedlichen Schlüsseln exisHert ein eindeuHger Trie.
13
Struktur 3/3
26-ärer Trie
14
Trie: Beispiel 1
A B
N R T
BE
K T
ANNE
ARK ART
AT
16
Suchen 1/3
• Ausgehend von der Wurzel wird für jedes Zeichen des Suchschlüssels der jeweilige Verweis verfolgt.
A B
N R T
BE
K T
ANNE
ARK ART
AT
• Suchschlüssel: AT
• Vergleich des ersten Zeichens AT
17
Suchen 2/3
• Ausgehend von der Wurzel wird für jedes Zeichen des Suchschlüssels der jeweilige Verweis verfolgt.
A B
N R T
BE
K T
ANNE
ARK ART
AT
• Suchschlüssel: AT
• Vergleich des nächsten Zeichens AT
18
Suchen 3/3
o Erfolglose Suche bei:
¤ Ende auf einem BlaS das nicht dem Suchschlüssel entspricht.
¤ Ende auf einem Inneren Knoten der keinen Verweis auf das zu testende Zeichen enthält.
19
Einfügen 1/5
o Zum Einfügen wird zuerst der Algorithmus zur Suche angewandt.
o Falls der Schlüssel im Trie vorhanden ist, wird die OperaHon abgebrochen.
o Im Falle dass der Schlüssel noch nicht im Trie vorhanden ist, wird die Suche im letzten noch übereinsHmmenden Knoten unterbrochen.
20
Einfügen 2/5
o Falls die Suche auf einem inneren Knoten endet, wird ein neues BlaS mit dem Suchschlüssel generiert und der
passende Verweis des inneren Knotens mit diesem verknüpr.
o Beispiel: ARI
21
Einfügen 3/5
A B
N R T
BE
K T
ANNE
ARK ART
AT
A B
N R T
BE
K T
ANNE
ARI ART
AT
ARK I
Einzufügender Schlüssel: ARI
22
Einfügen 4/5
o Falls die Suche in einem BlaS endet, müssen für alle Zeichen in denen der Suchschlüssel und der Schlüssel des BlaSes
übereinsHmmen neue innere Knoten angelegt werden.
o Beispiel: ANI
23
Einfügen 5/5
ANNE
A B
N R T
BE
K T
ARI ART
AT
ARK I
A B
N R T
BE
K T
ARI ART
AT
ARK I
ANNE ANI
I N
Einzufügender Schlüssel: ANI
24
Aufwand / Höhe
o Suchaufwand im „Worst-Case“ und Erfolgsfall eines Schlüssel der Länge m ist O(m).
o Die Höhe eines Tries wird durch die Länge des längsten in ihm enthaltenen Schlüssels besHmmt.
25
Speicherkonsum 1/5
26
Speicherkonsum 2/5
o
Auffällig: Die ImplemenHerung der Knoten ist sehr speicheraufwändig.
o
Besonders in Heferen Ebenen eines Tries werden hier nur sehr wenige ArrayposiHonen belegt.
o
Seltene oder sogar nichtvorhandene
BuchstabenkombinaHonen führen zu leeren Verweisen:
¤ Schlüssel die mit X,Y beginnen
¤ KombinaHonen wie XX, XZ, etc.
27
¨ ImplemenHerung eines Knotens als verkeSete Liste zur SpeicheropHmierung.
¨ Symbol: Speicherung des Zeichens das die Kante (nextLevel) zum nächsten Knoten bezeichnet.
¨ Leaf: Referenz auf ein BlaS, ansonsten NULL.
¨ nextLevel: Referenz auf den nächsten Knoten, ansonsten NULL.
¨ nextSymbol: Referenz auf das nächste Element der Liste.
¨ Nachteil: Langsamer als StaHsche Arrays.
Speicherkonsum 3/5
Symbol Leaf Next
Level Next Symbol
28
Speicherkonsum 4/5
A B
N R T
BE
K T
ANNE
ARK ART
AT
29
A NULL Next
Level Next Symbol
N NULL Symbol Next R NULL Next
Level Next
Symbol T NULL Next
Symbol
B NULL NULL
ANNE
BE
. . .
ATSpeicherkonsum 5/5
30
Binäre digitale Suchbäume / Binäre Tries
o Unterschied zum Binärbaum und Digitalbaum: in dem Baum wird nicht entsprechend des Ergebnisses des Vergleiches zwischen den Schlüsseln verzweigt, sondern entsprechend der Bits des Schlüssels.
¤ Erste Ebene à das führendes Bit.
¤ Zweite Ebene à das zweite führende Bit.
¤ Solange weiter, bis ein äußerer Knoten vorgefunden wird.
o Die Algorithmen für binäre digitale Suchbäume sind prakHsch dieselben wie für Binärbäume. Einziger Unterschied: die
VergleichsoperaHon der Schlüssel.
¤ Die auszuführenden OperaHonen unterscheiden sich im wesentlichen nicht von den bisher vorgestellten Tries.
35
Binäre Tries
¨
Die linke Kante eines Knotens verweist auf die Teilbäume die als führendes Bit 0 haben.
¨
Die rechte Kante eines Knotens verweist auf die
Teilbäume die als führendes Bit 1 haben.
36
Beispiel:
SchriSweises Einfügen 1/5
1. Einfügen: A
1 A 00001 19 S 10011 5 E 00101 18 R 10010 3 C 00011
37
Beispiel:
SchriSweises Einfügen 2/5
2. Einfügen: S
1 A 00001 19 S 10011 5 E 00101 18 R 10010 3 C 00011
38
Beispiel:
SchriSweises Einfügen 3/5
3. Einfügen: E
1 A 00001 19 S 10011 5 E 00101 18 R 10010 3 C 00011
39
Beispiel:
SchriSweises Einfügen 4/5
4. Einfügen: R
1 A 00001 19 S 10011 5 E 00101 18 R 10010 3 C 00011
40
Beispiel:
SchriSweises Einfügen 5/5
5. Einfügen: C
1 A 00001 19 S 10011 5 E 00101 18 R 10010 3 C 00011
41
Wörter
o Für Wörter gelten dieselben Regeln.
o Zur Generierung von Worten werden einfach die Bitstrings ihrer einzelnen Zeichen zusammengesetzt.
¤ z.B. A=00001, S=10011 AS=0000110011
42
Binäre Tries - Eigenscharen
o Der ungünsHgste Fall für binäre Tries ist viel besser als für binäre Suchbäume, wenn die Anzahl der Schlüssel groß ist und die Schlüssel nicht lang sind.
o Die Länge des längsten Pfades in binärem Trie = längste ÜbereinsHmmung in den führenden Bits zwischen zwei beliebigen Schlüsseln im Baum. Diese ist für viele
Anwendungen meist relaHv klein (z. B. wenn die Schlüssel aus zufälligen Bits bestehen).
45
Ausblick
o Mängel von Tries (unter anderem):
¤ Einwegeverzweigungen der BinärTries
¤ Unterschiedliche Arten von Knoten ziehen durchaus KomplikaHonen mit sich.
o Um solche Probleme zu vermeiden und auch um
Speicherplatz zu sparen wurden PATRICIA Tries entwickelt.
46
Patricia-Bäume
Ansatz von D. R. Morrisson um die 2 Unzulänglichkeiten der digitalen Tries zu vermeiden:
o PracHcal Algorithm To Retrieve InformaHon Coded In Alphanumeric (ZweckmäßigerAlgorithmus zum
Wiederauffinden von alphanumerisch kodierter InformaHon)
47
Patricia-Bäume - DefiniHon
o Grundidee: Teile, die für den Vergleich bzw. das Verzweigen irrelevant sind, werden übersprungen.
¤ Jeder Knoten enthält die Anzahl der übersprungenen Bits bzw.
Zeichen.
¤ Damit kennt man die PosiHon in der ZeichenkeSe, die für den weiteren Vergleich heranzuziehen ist.
o Gegenüber einfachem Trie è komprimierte Darstellung.
o Suchaufwand, spezielle bei sehr langen und weniger häufigen Wörtern wird reduziert.
48
Patricia-Bäume - Beispiel
2
2
t
e j
i
n
Oberkante 4
Objektmethode Objektmenge
Objektiv
Zahl in den Knoten = # der zu überspringenden Zeichen
m
Anzahl der
übersprungenen Zeichen
49
Noch Fragen?
49
50
Quellen
hSp://linux.thai.net/~thep/datrie/datrie.html
hSp://www.csse.monash.edu.au/~lloyd/HldeAlgDS/Tree/Trie/
hSp://en.wikipedia.org/wiki/Trie hSp://de.wikipedia.org/wiki/Trie
hSp://tom.biodome.org/briandais.html Algorithmen in Java – Robert Sedgewick
Algorithmen und Datenstrukturen – Gunter Saake, Kai-Uwe SaSler Datenstrukturen und Algorithmen – Harald Reß, Günter Viebeck