Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
2.3 Suche nach regularen Ausdrucken
• Beschreibung von Suchmustern durch regulare Ausdrucke
• Konstruktion des aquivalenten NEA nach Thompson
• Verwendung von NEA fur die Suche
• Spezielle Algorithmen fur spezielle Ausdrucke
R. Stiebe: Textalgorithmen, WS 2003/04 151
Regulare Ausdrucke – Syntax
Definition. Es sei Σ ein Alphabet. Die Menge der regularen Ausdrucke uber Σ istwie folgt definiert:
1. ∅, ε, a fur a ∈ Σ sind regulare Ausdrucke.
2. Sind α und β regulare Ausdrucke, so sind auch (α | β), (αβ) und α∗ regulareAusdrucke.
3. Andere regulare Ausdrucke gibt es nicht.
R. Stiebe: Textalgorithmen, WS 2003/04 152
Regulare Ausdrucke – Semantik
Definition. Die von einem regularen Ausdruck γ erzeugte Sprache L(γ) ist wiefolgt induktiv definiert:
1. L(∅) = ∅, L(ε) = {ε}, L(a) = {a} fur a ∈ Σ.
2. L((α | β)) = L(α) ∪ L(β), L(αβ) = L(α)L(β), L((α)∗) = (L(α))∗.
R. Stiebe: Textalgorithmen, WS 2003/04 153
Regulare Ausdrucke – Lange
Definition. Die Lange eines regularen Ausdruckes ist wie folgt induktiv definiert:
1. ∅, ε und a mit a ∈ Σ haben die Lange 1.
2. Haben die regularen Ausdrucke α bzw. β die Langen m bzw. n so haben dieregularen Ausdrucke (α | β) und (αβ) jeweils die Lange m + n + 1, und α∗ hatdie Lange m + 1.
R. Stiebe: Textalgorithmen, WS 2003/04 154
Nichtdeterministische Endliche Automaten
Definition. Ein nichtdeterministischer endlicher Automat mit ε-Transitionen (NEA)ist ein Quintupel A = (Σ, Z, δ, I,Q), wobei
Σ ein Alphabet,Z eine endliche Zustandsmenge,δ ⊆ Z × (Σ ∪ {ε})× Z eine Uberfuhrungsrelation oder Menge von Transitionen,I ⊆ Z eine Menge von Startzustanden,Q ⊆ Z eine Menge von akzeptierenden Zustanden sind.
R. Stiebe: Textalgorithmen, WS 2003/04 155
Darstellung von NEA durch Graphen
A = (Σ, Z, δ, I,Q) entspricht dem Graphen mit
der Knotenmenge Z,der Kantenmenge δ mit Beschriftungen aus Σ ∪ {ε},Mengen ausgezeichneter Knoten I, Q
Erweiterung von δ auf δ∗ ⊆ Z × Σ∗ × Z:
δ∗ = {(u, β, v) : es gibt einen Weg von u nach v mit Beschriftung β
Einschrankung auf Beschriftungen der Lange n: δn = δ∗ ∩ (Z × Σn × Z)
R. Stiebe: Textalgorithmen, WS 2003/04 156
Akzeptierte Sprache eines NEA
Definition. Die von A = (Σ, Z, δ, I,Q) akzeptierte Sprache ist L(A) = δ∗ ∩ (I ×Σ∗ ×Q).
Zur Entscheidung des Wortproblems fur w ∈ Σ∗ berechne
δ∗(I, w) = {z ∈ Z : ∃y(y ∈ I ∧ (y, w, z) ∈ Z}
mit Hilfe der folgenden Induktion:
δ∗(Y, wa) = δ∗(δ∗(Y, w), a)
Satz. Fur jede Menge Y ⊆ Z und jedes w ∈ Σ∗ kann δ∗(Y, w) mit einem Aufwandvon O((|Z|+ |δ|) · |w|) ermittelt werden.
R. Stiebe: Textalgorithmen, WS 2003/04 157
Regulare Ausdrucke und NEA
Satz. Fur jeden regularen Ausdruck der Lange m existiert ein aquivalenter NEAmit O(m) Zustanden und O(m) Transitionen.
• Beweis konstruktiv durch Induktion uber Aufbau die Lange.
• Konstruierter NEA hat genau einen Startzustand und genau einen akzeptierendenZustand, die Quelle bzw. Senke sind.
• Konstruierter NEA ist die Grundlage fur alle Algorithmen zur Suche.
Folgerung. Fur jeden regularen Ausdruck α der Lange m und jedes Wort w derLange m kann mit einem Aufwand von O(mn) entschieden werden, ob w ∈ L(α)gilt.
R. Stiebe: Textalgorithmen, WS 2003/04 158
Konstruktion von Thompson – 1
Fur die Ausdrucke ∅, ε und a ergeben sich folgende NEA:
• ∅: ������������
-
• ε: ������������
- -ε
• a: ������������
- -a
R. Stiebe: Textalgorithmen, WS 2003/04 159
Konstruktion von Thompson – 2
Sind die NEA fur α bzw. β ���� ��������
-− +α bzw. ���� ��������
-− +β , so ergeben sich folgendeNEA.
• (α | β):���� ����− +α
���� ����− +β����-
������1
PPPPPPq
��������PPPPPP
������
q
1
ε
ε
ε
ε
• (αβ): ���� ����− +α ���� ����− +β����- - ��������
--ε ε ε
• α∗: ���� ����− +α
ε
�����- - ��������
-ε ε
R. Stiebe: Textalgorithmen, WS 2003/04 160
Vorkommen von regularen Ausdrucken
Definition. Es seien T ein Text der Lange n und α ein regularer Ausdruck. EinIntervall [j, k] mit 1 ≤ j ≤ k ≤ n heißt Vorkommen (Match) von α in T , wennT [j . . . k] ∈ L(α) gilt.
• Alle Enden von Vorkommen des Ausdrucks α findet man, indem man den NEAfur Σ∗α konstruiert.
• Fur die genauere Ermittlung von Vorkommen sind Modifikationen notig.
• Ublicherweise sucht man nur Vorkommen mit bestimmten Eigenschaften.Hier: Suche nach maximalen Vorkommen.
R. Stiebe: Textalgorithmen, WS 2003/04 161
Maximale Vorkommen
Definition. Es seien T ein Text der Lange n und α ein regularer Ausdruck. EinVorkommen [j, k] von α in T heißt
• rechts-maximal, wenn k′ ≤ k fur alle Vorkommen [j, k′] gilt;
• links-maximal, wenn j′ ≥ j fur alle Vorkommen [j′, k] gilt;
• maximal, wenn k′ < k oder j′ > j fur alle anderen Vorkommen [j′, k′] gilt.
R. Stiebe: Textalgorithmen, WS 2003/04 162
Grundlegende Suchalgorithmen
1. Konstruktion des aquivalenten DEA und Nutzung des DEA fur die Suche.effizient fur kurze Ausdrucke;Nachteil: DEA kann exponentiell großer als der NEA sein.
2. Suche nach einem akzeptierenden Pfad im NEA durch Backtracking.verbreitete Methode (z.B. Perl);Vorteil: zu einem Treffer wird ein Pfad geliefert, z.B. um Teilausdrucke zu finden.Nachteil: moglicherweise exponentielle Laufzeit.
3. Anpassung des Akzeptierungsalgorithmus.Laufzeit O(mn); kann bei entsprechender Anpassung auch Pfade liefern
R. Stiebe: Textalgorithmen, WS 2003/04 163
Ermittlung aller links-maximalen Vorkommen
A = (Σ, Z, δ, {z0}, {zf}) sei der NEA mit L(A) = L(α).
Idee: Berechnung der Mengen
Z[k] := {(z, j) : z ∈ δ∗(z0, T [j . . . k]) ∧ ∀j′(z ∈ δ∗(z0, T [j′ . . . k])→ j′ ≥ j)},0 ≤ k ≤ n.
T [j . . . k] ist links-maximales Vorkommen von α ⇐⇒ (zf , j) ∈ Z[k].
R. Stiebe: Textalgorithmen, WS 2003/04 164
Berechnung der Z[k] durch Dynamische Programmierung
Lemma. Mit den obigen Bezeichnungen gilt:
Z[0] = {(z, 0) : z ∈ δ∗(z0, ε)},Z[k] = {(z0, k)} ∪{
(z, j) : j = min({j′ : ∃y((y, j′) ∈ Z[k − 1] ∧ z ∈ δ∗(y, T [k]))}∪{k : z ∈ δ∗(z0, ε)})
}.
Insbesondere kann Z[k] aus Z[k − 1] mit einem Aufwand von O(m) berechnetwerden.
Satz. Es sei T ein Text der Lange n und α ein regularer Ausdruck der Langem. Dann konnen alle links-maximalen, alle rechts-maximalen und alle maximalenVorkommen von α mit einem Aufwand von O(mn) bestimmt werden.
R. Stiebe: Textalgorithmen, WS 2003/04 165
Einige Spezialfalle regularer Ausdrucke
Fur spezielle regulare Ausdrucke besitzen die NEA eine sehr einfache Struktur.
→ Effiziente Algorithmen unter Nutzung von Bit-Parallelismus sind moglich.(ahnlich Shift-And oder Backward NDAWG).
• Buchstabenklassen
• Optionale und wiederholbare Buchstaben
• Implementierung: nrgrep (Navarro)
R. Stiebe: Textalgorithmen, WS 2003/04 166
Buchstabenklassen.
Suchmuster: P = S1S2 · · ·Sm mit Si ⊆ Σ.
Teffer: Wort a1a2 · · · am mit ai ∈ Si
Modifikation gegenuber Shift-And bzw. BNDM:
Im Byte B[x] ist das i-te Bit von rechts 1 ⇐⇒ x ∈ Si.
Beispiel. P = ca {a, b} ac {b, c} b
����
����
����
����
����
����
����
����"!#
0 1 2 3 4 5 6 7- - - - - - - -c a a, b a c b, c b6�
Σ
B[a] = 00111000, B[b] = 00010011, B[c] = 01000110.
R. Stiebe: Textalgorithmen, WS 2003/04 167
Optionale und wiederholbare Symbole.
Suchmuster: P = x1x2 · · ·xm, xi ∈ {ai, ai?, ai+, ai∗} fur ai ∈ Σ.
Treffer fur a?: {a, ε} (optional)a+: {a}+ (wiederholbar)a∗: {a}∗ (optional und wiederholbar)
Struktur des NEA
A = (Σ, {0, 1, . . . ,m, δ, {0}, {m}
δ = {(i− 1, ai, i) : 1 ≤ i ≤ m} (NEA des Wortes ohne Sonderzeichen)∪ {(i− 1, ε, i) : xi ∈ {ai?, ai∗}} (ε-Kanten fur optionale Symbole)∪ {(i, ai, i) : xi ∈ {ai∗, ai+}} (Schleifen fur wiederholbare Symbole)
R. Stiebe: Textalgorithmen, WS 2003/04 168
Beispiel
Fur P = ab∗c?abb?a+ ergibt sich der folgende NEA:
����
����
����
����
����
����
����
����"!#
0 1 2 3 4 5 6 7- - - - - - - -a b c a b b as
εs
εs
ε
6� Σ
6� b
6� a
Es gibt u.a. folgende Treffer: aaba, abbbbcabbaaa, acabbaa.
R. Stiebe: Textalgorithmen, WS 2003/04 169
Verallgemeinerter Shift-And-Algorithmus – Daten
• Z und B[x] wie beim Shift-And-Algorithmus
• O fur die Speicherung optionaler Symbole:Das i-te Bit von O ist 1 ⇐⇒ das i-te Symbol ist optional.
• R fur die Speicherung wiederholbarer Symbole:Das i-te Bit von R ist 1 ⇐⇒ das i-te Symbol ist wiederholbar.
• I: fur die Anfange von ε-Pfaden:Das i-te Bit von I ist 1 ⇐⇒ in Zustand i beginnt ein maximaler ε-Pfad.
• F : fur die Enden von ε-Pfaden:Das i-te Bit von F ist 1 ⇐⇒ in Zustand i endet ein maximaler ε-Pfad.
R. Stiebe: Textalgorithmen, WS 2003/04 170
Verallgemeinerter Shift-And-Algorithmus – Aktualisierung
1. Z ← (((Z<<1)|1) & B[x]) | (Z & B[x] & R)Damit werden alle Nachfolgezustande ermittelt, die uber eine x-Kante erreichbar sind.
2. E ← Z | FE enthalt alle Zustande, die uber eine x-Kante erreichbar oder das Ende eines ε-Pfades sind.
3. Z ← Z | (O & ((˜(E − I)) E))Das i-te Bit in (E − I) hat genau dann den gleichen Wert wie das i-te Bit in E, wenn der
Zustand i entweder zu keinem ε-Pfad gehort oder zu einem ε-Pfad gehort und irgendein weiter
links gelegener Zustand des selben ε-Pfades schon erreicht ist.
Die Operation (O & ((˜(E − I)) E)) ergibt im i-ten Bit genau dann den Wert 1, wenn der
Zustand i zu einem ε-Pfad gehort und irgendein niedrigerer Zustand des selben ε-Pfades schon
erreicht ist.
In Z haben am Ende alle Bits den Wert 1, wenn die zugehorigen Zustande erreichbar sind.
R. Stiebe: Textalgorithmen, WS 2003/04 171
Illustration zu Schritt 3
O I F Z E E − I G H Z
G = (˜(E − I)) EH = O & ((˜(E − I)) E) = O & G
R. Stiebe: Textalgorithmen, WS 2003/04 172