2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche...

22
2.3 Suche nach regul¨ aren Ausdr¨ ucken Beschreibung von Suchmustern durch regul¨ are Ausdr¨ ucke Konstruktion des ¨ aquivalenten NEA nach Thompson Verwendung von NEA f¨ ur die Suche Spezielle Algorithmen f¨ ur spezielle Ausdr¨ ucke R. Stiebe: Textalgorithmen, WS 2003/04 151

Transcript of 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche...

Page 1: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 2: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 3: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 4: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 5: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 6: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 7: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 8: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 9: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

Konstruktion von Thompson – 1

Fur die Ausdrucke ∅, ε und a ergeben sich folgende NEA:

• ∅: ������������

-

• ε: ������������

- -ε

• a: ������������

- -a

R. Stiebe: Textalgorithmen, WS 2003/04 159

Page 10: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 11: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 12: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 13: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 14: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 15: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 16: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 17: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 18: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 19: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 20: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 21: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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

Page 22: 2.3 Suche nach regul¨aren Ausdr¨uckentheo.cs.ovgu.de/lehre03w/text/folien/folien09.pdf2.3 Suche nach regul¨aren Ausdr¨ucken •Beschreibung von Suchmustern durch regul¨are Ausdr

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