• Keine Ergebnisse gefunden

Einf¨uhrung in die Informatik IV

N/A
N/A
Protected

Academic year: 2021

Aktie "Einf¨uhrung in die Informatik IV"

Copied!
34
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

SS 2005

Einf¨ uhrung in die Informatik IV

Ernst W. Mayr

Fakult¨ at f¨ ur Informatik TU M¨ unchen

http://www14.in.tum.de/lehre/2005SS/info4/index.html.de

(2)

Korollar 79

Sei G eine kontextfreie Grammatik. Es gibt einen Algorithmus, der eine zu G ¨ aquivalente Grammatik in Greibach-Normalform

konstruiert, deren rechte Seiten jeweils h¨ ochstens zwei Variablen enthalten.

Beweis:

Klar!

Info IV

Ernst W. Mayr 1/13

(3)

Korollar 79

Sei G eine kontextfreie Grammatik. Es gibt einen Algorithmus, der eine zu G ¨ aquivalente Grammatik in Greibach-Normalform

konstruiert, deren rechte Seiten jeweils h¨ ochstens zwei Variablen enthalten.

Beweis:

Klar!

(4)

4.7 Kellerautomaten

In der Literatur findet man h¨ aufig auch die Bezeichnungen Stack-Automat oder Pushdown-Automat. Kellerautomaten sind, wenn nichts anderes gesagt wird, nichtdeterministisch.

Info IV

Ernst W. Mayr 2/13

(5)

4.7 Kellerautomaten

Definition 80

Ein NPDA = PDA (= Nichtdeterministischer Pushdown-Automat) besteht aus:

Q endliche Zustandsmenge Σ endliches Eingabealphabet

∆ endliches Stackalphabet q 0 ∈ Q Anfangszustand

Z 0 ∈ ∆ Initialisierung des Stack δ Ubergangsrelation ¨

Fkt. Q × (Σ ∪ {}) × ∆ → 2 Q×∆

wobei |δ(q, a, Z)| + |δ(q, , Z)| < ∞ ∀q, a, Z

F ⊆ Q akzeptierende Zust¨ ande

(6)

Der Kellerautomat

E

$ I N G A B E $

Keller Q

rot grun

Info IV 4.7 Kellerautomaten

Ernst W. Mayr 3/13

(7)

Konfiguration:

Tupel (q, w, α) mit

q ∈ Q

w ∈ Σ

α ∈ ∆

(8)

Konfiguration:

Tupel (q, w, α) mit

q ∈ Q

w ∈ Σ α ∈ ∆

Schritt:

(q, w 0 w 0 , Zα 0 ) → (q 0 , w 0 , Z 1 . . . Z r α 0 ) gdw (q 0 , Z 1 . . . Z r ) ∈ δ(q, w 0 , Z) bzw.:

(q, w, Zα 0 ) → (q 0 , w, Z 1 . . . Z r α 0 ) gdw (q 0 , Z 1 . . . Z r ) ∈ δ(q, , Z)

Info IV 4.7 Kellerautomaten

Ernst W. Mayr 4/13

(9)

Definition 81

1

Ein NPDA A akzeptiert w ∈ Σ durch leeren Stack, falls (q 0 , w, Z 0 ) → (q, , ) f¨ ur ein q ∈ Q .

2

Ein NPDA A akzeptiert w ∈ Σ durch akzeptierenden Zustand, falls

(q 0 , w, Z 0 ) → (q, , α) f¨ ur ein q ∈ F, α ∈ ∆ .

3

Ein NPDA heißt deterministisch (DPDA), falls

|δ(q, a, Z )| + |δ(q, , Z)| ≤ 1 ∀(q, a, Z ) ∈ Q × Σ × ∆ .

(10)

Definition 81

1

Ein NPDA A akzeptiert w ∈ Σ durch leeren Stack, falls (q 0 , w, Z 0 ) → (q, , ) f¨ ur ein q ∈ Q .

2

Ein NPDA A akzeptiert w ∈ Σ durch akzeptierenden Zustand, falls

(q 0 , w, Z 0 ) → (q, , α) f¨ ur ein q ∈ F, α ∈ ∆ .

3

Ein NPDA heißt deterministisch (DPDA), falls

|δ(q, a, Z )| + |δ(q, , Z)| ≤ 1 ∀(q, a, Z ) ∈ Q × Σ × ∆ .

Info IV

Ernst W. Mayr 5/13

(11)

Definition 81

1

Ein NPDA A akzeptiert w ∈ Σ durch leeren Stack, falls (q 0 , w, Z 0 ) → (q, , ) f¨ ur ein q ∈ Q .

2

Ein NPDA A akzeptiert w ∈ Σ durch akzeptierenden Zustand, falls

(q 0 , w, Z 0 ) → (q, , α) f¨ ur ein q ∈ F, α ∈ ∆ .

3

Ein NPDA heißt deterministisch (DPDA), falls

|δ(q, a, Z )| + |δ(q, , Z)| ≤ 1 ∀(q, a, Z ) ∈ Q × Σ × ∆ .

(12)

Definition 81

1

Ein NPDA A akzeptiert w ∈ Σ durch leeren Stack, falls (q 0 , w, Z 0 ) → (q, , ) f¨ ur ein q ∈ Q .

2

Ein NPDA A akzeptiert w ∈ Σ durch akzeptierenden Zustand, falls

(q 0 , w, Z 0 ) → (q, , α) f¨ ur ein q ∈ F, α ∈ ∆ .

3

Ein NPDA heißt deterministisch (DPDA), falls

|δ(q, a, Z )| + |δ(q, , Z)| ≤ 1 ∀(q, a, Z ) ∈ Q × Σ × ∆ .

Info IV 4.7 Kellerautomaten

Ernst W. Mayr 5/13

(13)

Beispiel 82 Der PDA mit

δ(q 0 , a, ∗) = {(q 0 , a ∗)} f¨ ur a, ∗ ∈ {0, 1}

δ(q 0 , #, ∗) = {(q 1 , ∗ )} f¨ ur ∗ ∈ {0, 1}

δ(q 1 , 0, 0) = {(q 1 , )}

δ(q 1 , 1, 1) = {(q 1 , )}

δ(q 1 , , Z 0 ) = {(q 1 , )} akzeptiert mit leerem Stack die Sprache

L = {w#w R ; w ∈ {0, 1} } .

(14)

Beispiel 82 Der PDA mit

δ(q 0 , a, ∗) = {(q 0 , a ∗)} f¨ ur a, ∗ ∈ {0, 1}

δ(q 0 , #, ∗) = {(q 1 , ∗ )} f¨ ur ∗ ∈ {0, 1}

δ(q 1 , 0, 0) = {(q 1 , )}

δ(q 1 , 1, 1) = {(q 1 , )}

δ(q 1 , , Z 0 ) = {(q a , )} akzeptiert mit akzeptierendem Zustand (F = {q a })

(und leerem Stack) die Sprache

L = {w#w R ; w ∈ {0, 1} } .

Info IV 4.7 Kellerautomaten

Ernst W. Mayr 6/13

(15)

Satz 83

Sei A 1 = (Q, Σ, ∆, q 0 , Z 0 , δ, F ) ein NPDA, der mit Endzustand akzeptiert. Dann kann in linearer Zeit ein NPDA

A 2 = (Q 0 , Σ, ∆ 0 , q 0 0 , Z 0 0 , δ 0 ) konstruiert werden, der L(A 1 ) mit

leerem Stack akzeptiert.

(16)

Beweis:

A 2 simuliert A 1 . Sobald A 1 in einen akzeptierenden Endzustand ger¨ at, r¨ at A 2 , ob die Eingabe zu Ende gelesen ist. Falls A 2 dies meint, wird der Keller geleert.

Um zu verhindern, dass bei der Simulation von A 1 der Keller leer wird, ohne dass A 1 akzeptiert, f¨ uhren wir ein neues Kellersymbol Z 0 0 ein:

Q 0 = Q ∪ {¯ q, q 0 0 }

0 = ∆ ∪ {Z 0 0 }

und wir erweitern δ zu δ 0 gem¨ aß δ 0 (q 0 0 , , Z 0 0 ) = {(q 0 , Z 0 Z 0 0 )}

δ 0 (q, , Z) ∪ = {(¯ q, )} f¨ ur q ∈ F, Z ∈ ∆ 0 δ 0 (¯ q, , Z) = {(¯ q, )} f¨ ur Z ∈ ∆ 0

Info IV

Ernst W. Mayr 8/13

(17)

Beweis:

A 2 simuliert A 1 . Sobald A 1 in einen akzeptierenden Endzustand ger¨ at, r¨ at A 2 , ob die Eingabe zu Ende gelesen ist. Falls A 2 dies meint, wird der Keller geleert.

Um zu verhindern, dass bei der Simulation von A 1 der Keller leer wird, ohne dass A 1 akzeptiert, f¨ uhren wir ein neues Kellersymbol Z 0 0 ein:

Q 0 = Q ∪ {¯ q, q 0 0 }

0 = ∆ ∪ {Z 0 0 }

und wir erweitern δ zu δ 0 gem¨ aß δ 0 (q 0 0 , , Z 0 0 ) = {(q 0 , Z 0 Z 0 0 )}

δ 0 (q, , Z) ∪ = {(¯ q, )} f¨ ur q ∈ F, Z ∈ ∆ 0

(18)

Beweis:

A 2 simuliert A 1 . Sobald A 1 in einen akzeptierenden Endzustand ger¨ at, r¨ at A 2 , ob die Eingabe zu Ende gelesen ist. Falls A 2 dies meint, wird der Keller geleert.

Um zu verhindern, dass bei der Simulation von A 1 der Keller leer wird, ohne dass A 1 akzeptiert, f¨ uhren wir ein neues Kellersymbol Z 0 0 ein:

Q 0 = Q ∪ {¯ q, q 0 0 }

0 = ∆ ∪ {Z 0 0 } und wir erweitern δ zu δ 0 gem¨ aß

δ 0 (q 0 0 , , Z 0 0 ) = {(q 0 , Z 0 Z 0 0 )}

δ 0 (q, , Z) ∪ = {(¯ q, )} f¨ ur q ∈ F, Z ∈ ∆ 0 δ 0 (¯ q, , Z) = {(¯ q, )} f¨ ur Z ∈ ∆ 0

Info IV 4.7 Kellerautomaten

Ernst W. Mayr 8/13

(19)

Bemerkung:

Akzeptieren mit leerem Keller bedeutet, dass der NPDA akzeptiert,

falls der Keller leer ist und die Eingabe gelesen ist.

(20)

Bemerkung:

Akzeptieren mit leerem Keller bedeutet, dass der NPDA akzeptiert, falls der Keller leer ist und die Eingabe gelesen ist, bzw.

dass, falls der Keller leer ist, der NPDA die bisher gelesene Eingabe akzeptiert.

Info IV 4.7 Kellerautomaten

Ernst W. Mayr 9/13

(21)

Satz 84

Sei A 1 = (Q, Σ, ∆, q 0 , Z 0 , δ) ein NPDA, der mit leerem Keller akzeptiert. Dann kann in linearer Zeit ein NPDA

A 2 = (Q 0 , Σ, ∆ 0 , q 0 0 , Z 0 0 , δ 0 , F ) konstruiert werden, welcher L(A 1 )

mit akzeptierendem Endzustand akzeptiert.

(22)

Beweis:

A 2 simuliert A 1 . Am Anfang steht ein neues Kellersymbol auf dem Stack. Sobald bei der Simulation von A 1 dieses auf dem Stack vorgefunden wird, weiß man, dass A 1 seinen Stack leerger¨ aumt hat und folglich akzeptiert. Folglich geht A 2 in einen akzeptierenden Endzustand und h¨ alt:

Q 0 = Q ∪ {q 0 0 , q f }

0 = ∆ ∪ {Z 0 0 } F = {q f }

δ 0 (q 0 0 , , Z 0 0 ) = {(q 0 , Z 0 Z 0 0 )}

0 (q, a, Z) = δ(q, a, Z) f¨ ur q ∈ Q, a ∈ Σ ∪ {}, Z ∈ ∆ δ 0 (q, , Z 0 0 ) = {(q f , Z 0 0 )} f¨ ur q ∈ Q

Info IV

Ernst W. Mayr 11/13

(23)

Beweis:

A 2 simuliert A 1 . Am Anfang steht ein neues Kellersymbol auf dem Stack. Sobald bei der Simulation von A 1 dieses auf dem Stack vorgefunden wird, weiß man, dass A 1 seinen Stack leerger¨ aumt hat und folglich akzeptiert. Folglich geht A 2 in einen akzeptierenden Endzustand und h¨ alt:

Q 0 = Q ∪ {q 0 0 , q f }

0 = ∆ ∪ {Z 0 0 } F = {q f }

δ 0 (q 0 0 , , Z 0 0 ) = {(q 0 , Z 0 Z 0 0 )}

0 (q, a, Z) = δ(q, a, Z) f¨ ur q ∈ Q, a ∈ Σ ∪ {}, Z ∈ ∆

δ 0 (q, , Z 0 0 ) = {(q f , Z 0 0 )} f¨ ur q ∈ Q

(24)

Beweis:

A 2 simuliert A 1 . Am Anfang steht ein neues Kellersymbol auf dem Stack. Sobald bei der Simulation von A 1 dieses auf dem Stack vorgefunden wird, weiß man, dass A 1 seinen Stack leerger¨ aumt hat und folglich akzeptiert. Folglich geht A 2 in einen akzeptierenden Endzustand und h¨ alt:

Q 0 = Q ∪ {q 0 0 , q f }

0 = ∆ ∪ {Z 0 0 } F = {q f }

δ 0 (q 0 0 , , Z 0 0 ) = {(q 0 , Z 0 Z 0 0 )}

0 (q, a, Z) = δ(q, a, Z) f¨ ur q ∈ Q, a ∈ Σ ∪ {}, Z ∈ ∆ δ 0 (q, , Z 0 0 ) = {(q f , Z 0 0 )} f¨ ur q ∈ Q

Info IV 4.7 Kellerautomaten

Ernst W. Mayr 11/13

(25)

4.8 Kellerautomaten und kontextfreie Sprachen

Satz 85

Sei G eine CFG in Greibach-Normalform. Dann kann in linearer Zeit ein NPDA A konstruiert werden (welcher mit leerem Stack akzeptiert), so dass

L(A) = L(G) .

(26)

Beweis:

Sei o.B.d.A. 6∈ L(G).

Der Automat startet mit S auf dem Stack. Er sieht sich in jedem Schritt das oberste Stacksymbol A an und ¨ uberpr¨ uft, ob es in G eine Produktion gibt, deren linke Seite A ist und deren rechte Seite mit dem Terminal beginnt, welches unter dem Lesekopf steht.

Info IV

Ernst W. Mayr 13/13

(27)

Beweis:

Sei o.B.d.A. 6∈ L(G).

Der Automat startet mit S auf dem Stack. Er sieht sich in jedem Schritt das oberste Stacksymbol A an und ¨ uberpr¨ uft, ob es in G eine Produktion gibt, deren linke Seite A ist und deren rechte Seite mit dem Terminal beginnt, welches unter dem Lesekopf steht. Sei also G = (V, T, P, S). Konstruiere NPDA A = (Q, Σ, ∆, q 0 , Z 0 , δ) mit

Q := {q 0 }

∆ := V

Σ := T

Z 0 := S

δ(q 0 , a, A) 3 (q 0 , α) f¨ ur (A → aα) ∈ P .

(28)

Beweis:

Zu zeigen ist nun: L(A) = L(G).

Info IV

Ernst W. Mayr 13/13

(29)

Beweis:

Zu zeigen ist nun: L(A) = L(G).

Hilfsbehauptung:

S → G w 1 . . . w i A 1 . . . A m mit w j ∈ T, A j ∈ V per Linksableitung

⇔ (q 0 , w 1 . . . w i , Z 0 ) → A (q 0 , , A 1 . . . A m )

(30)

Beweis:

Zu zeigen ist nun: L(A) = L(G).

Hilfsbehauptung:

S → G w 1 . . . w i A 1 . . . A m mit w j ∈ T, A j ∈ V per Linksableitung

⇔ (q 0 , w 1 . . . w i , Z 0 ) → A (q 0 , , A 1 . . . A m )

Der Beweis erfolgt durch Induktion ¨ uber die Anzahl der Schritte in der Linksableitung.

Info IV

Ernst W. Mayr 13/13

(31)

Beweis:

Induktionsanfang (i = 0):

S → G S ⇔ (q 0 , , Z 0 ) → A (q 0 , , Z 0 )

(32)

Beweis:

Induktionsschritt ((i − 1) 7→ i):

S → G w 1 . . . w i A 1 . . . A m

⇔ S → G w 1 . . . w i−1 A 0 A v . . . A m v ∈ {1, . . . , m + 1}

G w 1 . . . w i A 1 . . . A m

(also (A 0 → w i A 1 . . . A v−1 ) ∈ P)

Info IV

Ernst W. Mayr 13/13

(33)

Beweis:

Induktionsschritt ((i − 1) 7→ i):

S → G w 1 . . . w i A 1 . . . A m

⇔ S → G w 1 . . . w i−1 A 0 A v . . . A m v ∈ {1, . . . , m + 1}

G w 1 . . . w i A 1 . . . A m

(also (A 0 → w i A 1 . . . A v−1 ) ∈ P) gem¨ aß Induktionsvoraussetzung

⇔ (q 0 , w 1 . . . w i−1 , Z 0 ) → A (q 0 , , A 0 A v . . . A m )

⇔ (q 0 , w 1 . . . w i−1 w i , Z 0 ) → A (q 0 , w i , A 0 A v . . . A m )

A (q 0 , , A 1 . . . A m )

da (A 0 → w i A 1 . . . A v−1 ) ∈ P)

⇔ (q 0 , w 1 . . . w i , Z 0 ) → (q 0 , , A 1 . . . A m )

(34)

Beweis:

Aus der Hilfsbehauptung folgt

L(A) = L(G) .

Info IV 4.8 Kellerautomaten und kontextfreie Sprachen

Ernst W. Mayr 13/13

Referenzen

ÄHNLICHE DOKUMENTE

Doppelt verkettete Listen bestehen aus Listenzellen mit zwei Zeigern. • Ein Zeiger prev auf die

verschachtelten Prozeduren m¨ ussen viele Zugriffslinks verfolgt werden. Abhilfe: Displays

• Maintaining connectivity to legacy IPv4 devices/networks during the transition to IPv6-only deployments..

ourStack.push(&#34;Hallo&#34;);.. Dann testen wir, ob eine Exception geworfen wird, wenn wir versuchen, eine Element aus einem leeren Stack zu entnehmen...

Terminal A uses the DCP's User TELNET implementation to communicate with the remote host across the TCPjIP network.. The remote host provides

Der Kellerspeicher hat folgende Methoden: push kellert eine Zahl ein, pop kellert eine Zahl aus, size liefert die Anzahl der Zahlen und iterator liefert einen Iterator mit dem

Implementieren Sie eine FIFO-Warteschlange (First-in-first-out) für Zeichen, einmal mit einem Array in der Klasse ArrayQueue (zyklischer Puffer, Array mit fixer Größe) und einmal

Implementieren Sie einen Kellerspeicher für Objekte, einmal mit einem Array in der Klasse ArrayStack und einmal als verkettete Liste in der Klasse LinkedListStack.. Die