Algorithmen und Datenstrukturen Tries und PATRICIA Tries Prof
- Slides: 31
Algorithmen und Datenstrukturen Tries und PATRICIA Tries Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Felix Kuhr (Übungen) sowie viele Tutoren
Danksagung Die nachfolgenden Präsentationen wurden mit einigen Änderungen übernommen aus: • „Algorithmen und Datenstrukturen“ gehalten von Sven Groppe an der Uz. L 2
Idee: Ausnutzung von gemeinsamen Präfixen a o p e r p g ape l e apple organ a n i s m organism 3
Trie • Repräsentation von Mengen von Zeichenketten • Name stammt nach Edward Fredkin von re. TRIEval – Anwendungen von Tries finden sich im Bereich des Information Retrieval • Informationsrückgewinnung aus bestehenden komplexen Daten (Beispiel Internet-Suchmaschine) – auch Radix-Baum oder Suffix-Baum genannt • Relativ kompakte Speicherung von Daten insbesondere mit gemeinsamen Präfixen Edward Fredkin, Trie Memory, Communications of the ACM 3 (9), S. 490– 499, 1960 4
Trie • Voraussetzung – Daten darstellbar als Folge von Elementen aus einem (endlichen) Alphabet • Beispiele – Zeichenkette „Otto“ besteht aus Zeichen ‚O‘, ‚t‘ und ‚o‘ (Alphabet ist alle Zeichen) – Zahl 7 ist darstellbar als Folge von Bits 111 (Alphabet ist {0, 1}) – Unter den Elementen aus dem Alphabet besteht eine Ordnung 5
Trie – Beispiel mit Bits als Alphabet 0 0 1 0 0 1 1 6
Trie - Definition • Sei S das Alphabet der zu speichernden Wörter inklusive ⊥ für „leeres Zeichen“ • Dann ist ein Trie ein Baum mit folgenden Bedingungen – Jeder Knoten hat 0 bis maximal |S| Kinder – Jede Kante ist durch genau einen Bezeichner aus S gekennzeichnet – Die Kanten zu den Kindern eines Knotens haben unterschiedliche Bezeichner • d. h. es gibt keine Kanten eines Knotens mit demselben Bezeichner • in der Regel werden die Kanten sortiert dargestellt und gespeichert – ⊥ steht nur über einen Blattknoten und auch nur wenn der Elternknoten des Blattknotens weitere Kindsknoten besitzt • Der Wert eines Blattknotens ergibt sich aus der Konkatenation der Kantenbezeichner von der Wurzel zum Blattknoten 7
Beispiel: Suche nach ape a o ape p ape e r p g ape l Gefunden! (Blattknoten erreicht e und Ende des zu suchendes Wortes erreicht) apple organ a n i s m organism 8
Suche in Tries • 9
Beispiel: Suche nach organ a o p e organ r organ p g organ ape l e apple Gefunden! organ a organ n organ i s m organism 10
Beispiel: Suche nach apricot a p r i c o tp Nicht Gefunden! (Keine Kante mit ‚r‘) e a o r p g ape l e apple organ a n i s m organism 11
Beispiel: Suche nach org a o p e org r org p g org ape l e apple organ a n i s m organism 12
Einfügen: Beispiel apricot a o a p r i c o tp e ape r r p g l i c e o apple t apricot organ a n i s m organism 13
Einfügen in Tries • 14
Beispiel: Einfügen von org a o p e org r org p g org ape l e apple organ a org n i s m organism 15
Beispiel: Einfügen von ape-man ape–man a o a p e – m a np ape–man e – m ape-man r p g l ape e apple organ a n i s m organism 16
Löschen von ape a o p e r p g ape l e apple organ a n i s m organism 17
Löschen von organism a o p e r p g ape l e apple organ a n i s m organism 18
Löschen in Tries • 19
Implementierungsmöglichkeiten 1. Feld 2. Zeigerstruktur – Kinder in Liste – Kinder in Feld 20
Analyse der Implementationsmöglichkeiten • Kinder in Liste – Vorteile: Geringer Platzbedarf O(n) – Nachteil: Suchen, Einfügen und Entfernen in O(|S|) pro betrachteten Knoten • Kinder in Feld mit Größe der Kinderanzahl – Vorteil: Geringer Platzbedarf O(n), Suchen in O(log |S|) pro Knoten (binäre Suche unter den Kindern) – Nachteile: Einfügen und Entfernen in O(|S|) pro betr. Knoten • Kinder in Feld mit Größe |S| – Vorteile: Direkte Adressierung der Kante mit gegebener Beschriftung (Falls Zeichen k-tes Zeichen im Alphabet ist, so betrachte k-tes Kind) Suchen, Einfügen und Entfernen in O(1) pro betr. Knoten – Nachteil: Platzbedarf von O(n∙|S|) 21
Komplexität der Basisoperationen (Suchen, Einfügen, Löschen) • Alle Basisoperationen hängen ab – von der Tiefe t des Tries • t ist gleich der (maximalen) Länge der eingefügten Wörter – sowie der Kosten f(|S|) pro Knoten für diese Operation • Abhängig von Speicherstruktur des Tries (siehe vorherige Folie) – O(t∙f(|S|)) • Bei geeigneter Implementation oder kleinem |S|: – O(t) 22
Patricia Tries • In Tries haben viele Knoten nur 1 Kind und es bilden sich oft lange “Ketten” mit solchen Knoten • Idee: Diese lange “Ketten” zusammenfassen – Konsequenz: Kanten sind nicht nur mit einem Zeichen, sondern mit Teilwörtern beschriftet Donald R. Morrison, PATRICIA - Practical Algorithm to Retrieve Information Coded in Alphanumeric, Journal of the ACM, 15(4): 514534, October 1968 23
Trie: a o p e Patricia Trie: r p g ape l e apple organ e a ape n i s ap organ ple apple ism organism Bedingungen: • Ausgehende Kanten eines Knotens starten niemals mit demselben Zeichen! • Knoten haben 0 oder 2 bis |S| viele Kinder, niemals hat ein Knoten 1 Kind! m organism 24
Trie (binär): 0 0 1 1 0 0 Patricia Trie: 0 0 1 00 1 1 1 0 01 1 11 25
Konsequenzen für die Basisoperationen • Suchen – Anstatt Vergleich von Zeichen nun Vergleich von Teilzeichenketten, sonst keine wesentliche Änderung gegenüber Suchen in Tries • Einfügen – Neuer Sonderfall: Aufteilen eines Knotens, „falls Bezeichner der eingehenden Kante (echte) Teilzeichenkette des einzufügenden Wortes ist“ • Löschen – Neuer Sonderfall: Nach Löschen überprüfen, ob Knoten vereinigt werden können 26
Beispiel Suchen nach ape ap ape e ape ple apple organ ism organism 27
Sonderfall beim Einfügen von organization bzw. org e ap organ ple apple ism organism e ap organ ple apple i organ sm zation organism organization e ap organ ple ap ism organism e ape org ple apple an ism organism 28
Beispiel für neuen Sonderfall beim Löschen von apple Zwischenschritt: e ap organ ple ap ism organism e organ ape ism organism ape organ ism organism 29
Komplexität • 30
Zusammenfassung • Trie – n-äres Alphabet • Speichern von Zeichenketten – binäres Alphabet • Speichern von z. B. Zahlen • Patricia Trie – kompaktere Darstellung – n-äres Alphabet – binäres Alphabet 31 31
- Aud tu bs
- Algorithmen und datenstrukturen lmu
- Algorithmen und datenstrukturen eth
- Datenstrukturen und algorithmen rwth
- Bauinformatik tu dresden
- Rekursive datenstrukturen
- Tkam chapter 27-31 summary
- Standard trie example
- Old opie occasionally tries
- Cranial nerve mnemonic
- Old opie occasionally tries
- Standard tries
- Evans tries an o level author
- Cranial nerves mnemonic old opie
- Ali ahmed is a mathematics professor who tries to involve
- 5 tries
- Meherjan passage summary
- Introduction of evans tries an o level
- La profesora patricia inicia las actividades
- Patricia dlamini
- The journey by patricia grace
- Patricia martinez
- Patricia zigarmi
- Patricia martinez
- Patrix patricia manual
- Patricia castillo anal
- Nurse novice to expert
- Patricia kittler vitorio
- Patrix patricia manual
- Ginecóloga elda patricia
- Patricia kelliher
- Patricia va a california chapter 6