Algorithmen und Datenstrukturen Tries und PATRICIA Tries Prof

  • Slides: 31
Download presentation
Algorithmen und Datenstrukturen Tries und PATRICIA Tries Prof. Dr. Ralf Möller Universität zu Lübeck

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“

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

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

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

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

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 ⊥

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

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

Suche in Tries • 9

Beispiel: Suche nach organ a o p e organ r organ p g organ

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

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

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

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

Einfügen in Tries • 14

Beispiel: Einfügen von org a o p e org r org p g org

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

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

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

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

Löschen in Tries • 19

Implementierungsmöglichkeiten 1. Feld 2. Zeigerstruktur – Kinder in Liste – Kinder in Feld 20

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:

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

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

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

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

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

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

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

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

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

Komplexität • 30

Zusammenfassung • Trie – n-äres Alphabet • Speichern von Zeichenketten – binäres Alphabet •

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