2. Suffix-Bäume Konstruktion von Positionsbäumen Ansätze zur Konstruktion von Positionsbäumen Grundlegender Ansatz: Induktive Konstruktion, d.h. man konstruiert ! . sukzessive Problem: Die Zwischenbäume ren. brauchen nicht zu existie- # " $&%$&% $. ')(*+ existiert nicht, da Position 3 keinen Pos.-Id. in $,%-$ Beispiel: hat. Wie kann man diese Schwierigkeiten umgehen? (a) Man konstruiert den Baum von rechts nach links (anstatt von links nach rechts), d.h. Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 ./" .0"1! .,23/" ,23', 2. Suffix-Bäume 87 Konstruktion von Positionsbäumen .. ." 4, .. 5" ! (b) Man hängt jeweils ein $-Zeichen an, d.h. (- .. ( Nachteil: sehr hoher Aufwand Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 88 2. Suffix-Bäume Konstruktion von Positionsbäumen (c) Man spiegelt den Text und die Definition des Begriffs Pos.-Id. und geht wie unter (a) vor. Nachteil: unnatürliche Umgehensweise (d) Man verzichtet darauf, daß die Zwischenbäume Positionsbäume sind. ☞ Wir untersuchen die Ansätze (a) und (d). 6 (a) : Rechts-Links-Konstruktion 6 (b) : Links-Rechts-Konstruktion Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 89 2. Suffix-Bäume Konstruktion von Positionsbäumen Rechts-Links-Konstruktion von Positionsbäumen Bemerkung: Für jeden Teilstring sitionsbaum. 7 Ausgehend von dem Positionsbaum für 823 7 $ wie folgt: Positionsbaum für $ existiert der zugehörige Po- 4 $ konstruiert man den Von der Wurzel aus durchläuft man einen Pfad mit den Markierungen 29 , bis man: (a) ein Blatt : erreicht. – Das Blatt : sei mit ; markiert. – Der bisherige Positionsidentifikator für Stelle <>=@? vor. Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 ; kommt also auch an der 90 Sowohl A ; als auch A <= ? 2. Suffix-Bäume – Konstruktion von Positionsbäumen sind zu verlängern, bis sie sich un- terscheiden. – Dementsprechend wird der Pfad von dem erreichten Blatt aus verlängert. – Es entstehen zwei neue Blätter mit den Markierungen <B=@? und ; . (b) einen inneren Knoten : erreicht, von dem aus keine Kante mit der benötigten Markierung ausgeht. – Es ist ein neues Blatt :&C an : anzuhängen. – Dieses Blatt erhält die Markierung <>=D? . – Die Kantenmarkierung zur Kante : : C ist das letzte Zeichen von A <B=@? . Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 91 2. Suffix-Bäume Konstruktion von Positionsbäumen Veranschaulichung für (a): E'F G HIKJLHINMO R S [ T R Y E F GPJQHINJQHIKMO R S T U U R Z W U X S T V \ Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 T R T U [ R U Y U R Z W U X V 92 2. Suffix-Bäume Konstruktion von Positionsbäumen Veranschaulichung für (b): ] ^ _a`bKcQ`bNde h i q j h o ] ^ _a`f`bNcg`bNde h i q i j r h k o l j k k h p m k n l h j k p m k Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 6 n 93 2. Suffix-Bäume Konstruktion von Positionsbäumen Ein Positionsbaum wächst also von einem Blatt aus weiter nach unten, – bis sich eine Unterscheidung der Positionsidentifikatoren ergibt – und der Pfad sich in zwei Blätter aufspaltet, 6 oder von einem Zwischenknoten wächst ein neues Blatt heraus. Aufwandsabschätzung: 6 Der Gesamtaufwand zur Konstruktion eines Positionsbaums für einen String der Länge s ist: t Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 < A uv/w w 94 2. Suffix-Bäume Konstruktion von Positionsbäumen Bemerkungen: 6 6 Nachteil der Rechts-Links-Konstruktion: Die gesamte Zeichenreihe muß bekannt sein, bevor sich der Positionsbaum konstruieren läßt. 6 Beim Entwickeln von Text möchte man aber u.U. schon vorher Textstellen identifizieren und Korrekturen vornehmen. 6 Einen Positionsbaum für den umgekehrten Text aufzubauen wäre unnatürlich. Kann ein Positionsbaum auch effizient von links nach rechts konstruiert werden? Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 2. Suffix-Bäume 95 Konstruktion von Positionsbäumen Links-Rechts-Konstruktion von Positionsbäumen 6 6 Ziel ist es, ein sogenanntes on-line Verfahren für die Konstruktion von Positionsbäumen zu entwickeln. 6 Da für Teilstrings der Positionsbaum nicht existiert, muß man partielle Positionsbäume betrachten. Ein partieller Positionsbaum enthält für genau diejenigen Positionen des Textes einen Positionsidentifikator, für die es einen solchen Positionsidentifikator gibt. Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 96 2. Suffix-Bäume Beispiel 2.7. $,%*%-$ Der partielle Positionsbaum für Konstruktion von Positionsbäumen sieht wie folgt aus: y x y y x z | { Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 6 97 2. Suffix-Bäume Konstruktion von Positionsbäumen 6 Für Positionsbäume gilt eine sehr einfache und wichtige Verschachtelungseigenschaft, die beschreibt, wie sich Positionsidentifikatoren überlappen können. Die wesentliche Aussage hierzu liefert das folgende MonotonieLemma. Lemma 2.7. [Monotonie-Lemma] Es sei Positionsidentifikator A < endet. Dann gilt: <5~; "> die Position, bei der der } < } ; Beweis. Annahme: Es gibt in einem String } ; . Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 } < Positionen </~; mit } < 98 2. Suffix-Bäume Konstruktion von Positionsbäumen Veranschaulichung: 6 A < " 7 K < ist der kürzestmögliche String, der die Position eindeutig bestimmt. 6 Somit kommt 6 - Kv K29 noch an anderer Stelle vor. Kv 23 . 6 Somit ist nicht eindeutig in . Widerspruch. ist Substring von Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 6 99 2. Suffix-Bäume Konstruktion von Positionsbäumen Wir fassen Intervalle von Positionen zusammen, deren Pos.-Id. an derselben Stelle enden. Dies deuten wir so an: ¡¢ ,gg,4 4gg4 6 g g Graphisch dargestellt ergibt sich dann die folgende Verschachtelung für die Positionsidentifikatoren: £¥¤¦£ Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 § 100 2. Suffix-Bäume Konstruktion von Positionsbäumen Prinzip der Links-Rechts-Konstruktion 6 Man nehme an, wir haben den partiellen Positionsbaum für den ¨ . String 6 : sei die erste Postion, für die kein Positionsidentifikator existiert, d.h. ©©*v¨ ist nicht eindeutig in . ª«®¯8ª«g²¯9³³³ 6 Der Anfang von A : 6 ª «g¬­v®¯°ª«g¬¯ ³³³ ©))©v´ . ist ª«g±K¯ Diesem Anfang entspricht ein Knoten im partiellen Positionsbaum. Dieser Knoten sei mit : markiert. Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 101 2. Suffix-Bäume Konstruktion von Positionsbäumen Konstruktionsschritt: 6 6 Bei der Hinzunahme von wird nun versucht, die Markierung im partiellen Positionsbaum weiter nach unten zu verschieben. : Hierbei können die folgenden Fälle auftreten: (1) Der mit Kv . für : markierte Knoten verfügt über eine ausgehende Kante Kv markierten Kante. Jetzt Dann bewegt man : längs der mit können die folgenden Fälle auftreten: (1.1) Der jetzt mit : markierte Knoten ist ein innerer Knoten. Dann ist nichts weiter zu tun. (1.2) Der jetzt mit : markierte Knoten ist ein Blatt mit Markierung µ . Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 102 Dann ist A µ 2. Suffix-Bäume Konstruktion von Positionsbäumen um ein Zeichen zu verlängern, d.h. an das bisherige Blatt wird ein neuer Knoten angehängt und die Markierung µ wandert zu dem neuen Blatt. (2) Der mit : markierte Knoten hat keine ausgehende Kante, die mit v markiert ist. Kv Dann wird ein neues Blatt und eine neue ausgehende und mit markierte Kante zu diesem Blatt angelegt. Das neue Blatt wird mit : markiert. Es gilt nun zu prüfen, ob Positionsidentifikatoren für die Positionen :·¶ ? :¸¶ ¹ existieren. Hierzu sind neue Blätter in den Baum einzutragen. Es sei :º¶D» die erste Position für die nun kein Pos.-Id. existiert. Dann ist noch :¶¼» einzutragen. Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 103 2. Suffix-Bäume Konstruktion von Positionsbäumen Fall 1.1: ½¿¾ÁÀཿ¾ÁÀÃÂ È ½Ä¾ÁÀÃÅfÆÇ Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 ½Ä¾ÁÀÃÅfÆÇÂ È 104 2. Suffix-Bäume Konstruktion von Positionsbäumen Fall 1.2: ÉLÊÌËÎÍ ÉLÊÌËÎÍ Ï ÉLÊÌËÎÐÒÑÍ Ï ÉLÊfÔÊÌÕÎÍÖÍ ÉLÊÌËÎÐÑÍ Ó Ó Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 105 2. Suffix-Bäume Konstruktion von Positionsbäumen Fall 2: ×ÄØÚÙÃÛ Ü ×¿ØÁÙÃÛ ×ÄØÚÙÃÝfÞÛ Ü Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 106 2. Suffix-Bäume Konstruktion von Positionsbäumen Bemerkungen: 6 6 Man kann den Eingabestring jederzeit mit einem $ abschließen. Dann wird mit dem angegebenen Verfahren der zugehörige Positionsbaum fertig konstruiert. Folgende Kosten treten bei der Konstruktion auf: A : wird um ein Zeichen verlängert. t Aufwand: ? (1.2) A : und A t µ werden um je ein Zeichen verlängert. ? Aufwand: (2) A : wird um ein Zeichen verlängert. t ? Aufwand: :#¶á» =â? und das Auffinden von Das Einfügen von :#¶ß? :#¶à¹ :°¶â» kostet proportional zur Länge von A :°¶1? A :°¶ã» . (1.1) Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 6 107 2. Suffix-Bäume Konstruktion von Positionsbäumen Der Gesamtaufwand zum Aufbau eines Positoinsbaums für einen String der Länge s ist also: t 6 < A uv w w Damit ist die Links-Rechts-Konstruktion nicht aufwendiger als die Rechts-Links-Konstruktion. 6 Sprachliche Texte haben häufig die Eigenschaft, daß gilt. Dann ergibt sich für den Gesamtaufwand: Aw < åw ä1ægçèw w t w wÖægçèw w 6 Im Worst-Case beträgt der Aufwand t s ( . Textalgorithmen — FH Bonn-Rhein-Sieg, SS 02 108