Konstruktion von Positionsbäumen - www2.inf.h

Werbung
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 †‡ Kˆ‰29
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:
’‘¡¢
Ž’‘“•”,–˜—g—g‘„”,™4Ž
š›™4œg’g™4Žž‘Ž
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
Herunterladen