18.09.2013 Aufrufe

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

Skript in PDF - Theoretische Informatik - Technische Universität ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

104 KAPITEL 4. CHURCHSCHE THESE<br />

Beispiel 1. E<strong>in</strong>e Grammatik für die Sprache<br />

{|, ||, ||||, . . . } = {2n ; n ∈ }<br />

(die nicht kontextfrei ist! ). Die Idee ist, dass wir mit dem Wort [A] anfangen und<br />

die Zahl von A’s verdoppelt werden kann. Dafür verwenden wir e<strong>in</strong>e Variable D, die<br />

l<strong>in</strong>ks auftauchen kann (also [ → [D) und rechts verschw<strong>in</strong>den kann (also D] → ]),<br />

und die auf ihrem Weg nach rechts A verdoppelt: DA → AAD. Am Ende bekommen<br />

wir [AA · · · A], wobei die Anzahl der A’s gleich 2n ist. Jetzt brauchen wir nur die<br />

Klammern zu entfernen und A <strong>in</strong> | umwandeln. Formal:<br />

G = ({|}, {S, A, D, [, ]}, S, R),<br />

wobei R die folgenden Produktionen s<strong>in</strong>d:<br />

(1) S → [A]<br />

(2) [ → [D<br />

(3) D] → ]<br />

(4) DA → AAD<br />

(5) [ → ε<br />

(6) ] → ε<br />

(7) A → |<br />

Es gilt:<br />

L(G) = {2n ; n ∈ }.<br />

Beweis. Erst zeigen wir, wie 2 n abgeleitet wird, also {2 n ; n ∈ } ⊆ L(G):<br />

S ⇒ [A] Regel (1)<br />

⇒ ∗ [D n A] Regel (2) n-mal<br />

⇒ [D n−1 AAD] Regel (4) 1-mal<br />

⇒ ∗ [D n−2 AAAAD 2 ] Regel (4) 2-mal<br />

.<br />

⇒∗ [A2nDn ] Regel (4) n-mal<br />

⇒∗ [A2n] Regel (3) n-mal<br />

⇒ A2n] Regel (5)<br />

⇒ A2n Regel (6)<br />

⇒ 2n Regel (7)<br />

Ist umgekehrt w e<strong>in</strong>e Zahl ist, also e<strong>in</strong> Wort über {|} mit S ⇒ ∗ w, beweisen wir<br />

w = 2 n , das heißt L(G) ⊆ {2 n ; n ∈ }. Sei<br />

S ⇒ w1 ⇒ w2 ⇒ · · · ⇒ wk ⇒ w<br />

e<strong>in</strong>e Ableitung von w. Bezeichnen wir durch m die Anzahl von Indizes i, für welche<br />

die Regel (2) die Basis für wi ⇒ wi+1 ist. Da wk ke<strong>in</strong> D enthält, musste die Regel<br />

(3) genau m-mal angewandt werden. Dabei wurde die Anzahl der A’s bei jedem<br />

” Durchgang“ e<strong>in</strong>es D’s (von l<strong>in</strong>ks also [D, nach rechts, d. h. D]) immer verdoppelt,<br />

da dieser Durchgang nur auf Grund der Regel (4) möglich ist. Am Anfang gibt es<br />

genau e<strong>in</strong> A: aus S ⇒ w1 folgt w1 = [A]. Also entstehen im Laufe der Ableitung<br />

genau 2m Symbole A. Da das term<strong>in</strong>ale Symbol | nur durch die Regel (7) ersche<strong>in</strong>en<br />

kann und wk = w ke<strong>in</strong>e Variablen enthält, beweist dies, dass<br />

w = | 2m.<br />

Beispiel 2. E<strong>in</strong>e Grammatik für die (nicht kontextfreie) Sprache L = {a n b n c n ;<br />

n ≥ 1}. Sei<br />

G = ({a, b, c}, {B, C, S}, S, R)<br />

die Grammatik mit den Regeln<br />

(1) S → aBC | aSBC<br />

(2) CB → BC<br />

(3) aB → ab<br />

(4) bB → bb<br />

(5) bC → bc<br />

(6) cC → cc

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!