4. Textalgorithmen Arten von String-Matching-Problemen ...
4. Textalgorithmen Arten von String-Matching-Problemen ...
4. Textalgorithmen Arten von String-Matching-Problemen ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>4.</strong> <strong>Textalgorithmen</strong> Trie<br />
Suffix-Bäume<br />
<strong>4.</strong> <strong>Textalgorithmen</strong> Trie<br />
Trie<br />
• In diesem Abschnitt sollen Datenstrukturen zur Beschleunigung des<br />
exakten <strong>String</strong>-<strong>Matching</strong>s (Problem <strong>4.</strong>1) untersucht werden.<br />
• Konkret liegt folgende Situation vor:<br />
– Gegeben ist ein (evtl. sehr langer) <strong>String</strong> text.<br />
– Man hat Anfragen an text gemäß Problem <strong>4.</strong>1, d.h. es sind alle<br />
(oder ein) Vorkommen eines beliebigen <strong>String</strong>s pat in text aufzufinden.<br />
– Gesucht ist eine Datenstruktur D, mit der nach einer Preprocessingphase<br />
für text solche Anfragen in sublinearer Zeit beantwortet<br />
werden können.<br />
Definition <strong>4.</strong><strong>4.</strong> Es sei Σ ein endliches Alphabet. Ein Trie (auch Σ-<br />
Baum genannt) ist ein Wurzelbaum mit den folgenden Eigenschaften:<br />
(i) Die Kanten des Baumes sind mit Zeichen aus Σ markiert.<br />
(ii) Für jeden Knoten k des Baums und jedes Zeichen c ∈ Σ gibt es<br />
höchstens eine Kante, die <strong>von</strong> k ausgeht und mit c markiert ist.<br />
Für einen Knoten k in einem Trie bezeichnet path(k) den <strong>String</strong>, der sich<br />
aus der Folge der Kantenmarkierungen auf dem Pfad <strong>von</strong> der Wurzel<br />
nach k ergibt.<br />
Für eine Menge P <strong>von</strong> <strong>String</strong>s bezeichnet T rie(P ) den kleinsten Trie<br />
Information Retrieval — FH Bonn-Rhein-Sieg, SS 06 234<br />
Information Retrieval — FH Bonn-Rhein-Sieg, SS 06 236<br />
<strong>4.</strong> <strong>Textalgorithmen</strong> Trie<br />
Anforderungen an die Datenstruktur D:<br />
<strong>4.</strong> <strong>Textalgorithmen</strong> Trie<br />
mit der Eigenschaft:<br />
• Die Größe <strong>von</strong> D sollte linear in |text| sein.<br />
∀pat ∈ P ∃k : pat = path(k)<br />
• D sollte effizient (möglichst in O(|text|)) aufgebaut werden können.<br />
• Problem <strong>4.</strong>1 (exaktes <strong>String</strong>-<strong>Matching</strong>) sollte mit Hilfe <strong>von</strong> D in sublinearer<br />
Zeit gelöst werden können.<br />
☞ Grundidee: Man finde eine geeignete Datenstruktur zur Repräsentation<br />
<strong>von</strong> Wortmengen.<br />
Beispiel <strong>4.</strong>13. [Trie] Für die<br />
Menge P = {ab, ba, babb, bb} <strong>von</strong><br />
<strong>String</strong>s ergibt sich der Trie:<br />
b<br />
a<br />
b<br />
a<br />
b<br />
b<br />
b<br />
Information Retrieval — FH Bonn-Rhein-Sieg, SS 06 235<br />
Information Retrieval — FH Bonn-Rhein-Sieg, SS 06 237