Mitschrift vom 30.06.2000
Mitschrift vom 30.06.2000
Mitschrift vom 30.06.2000
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Theoretische Informatik 1 Vorlesungsskript <strong>vom</strong> Freitag, 30. Juni 2000<br />
Index:<br />
Erstellt von:<br />
(Matrikelnummer: 702899)<br />
Seite :<br />
4.6 Das Pumping-Lemma für reguläre Sprachen............................................................................................. 1<br />
Satz W.................................................................................................................................... ............1<br />
Zugrundeliegende Idee des Pumping-Lemma....................................................................................2<br />
Beweis des Pumping-Lemma.............................................................................................................2<br />
Hinweise zum Pumping-Lemma........................................................................................................3<br />
Beispiele zum Pumping-Lemma........................................................................................................3<br />
4.7 Reguläre Grammatiken..............................................................................................................................4<br />
Allgemeine Grammatiken..................................................................................................................4<br />
Zusammenfassung des bisher behandelten Stoffes.............................................................. 4<br />
Beispiel einer allgemeinen Grammatik............................................................................... 4<br />
Definition X...................................................................................................................... ...5<br />
Beispiele für allgemeine Grammatiken nach der Definition X............................. 5<br />
Reguläre Grammatiken .....................................................................................................................6<br />
Definition Y.........................................................................................................................6<br />
Beispiel einer regulären Grammatik nach der Definition Y.................................. 6<br />
Satz Z.....................................................................................................................6<br />
Beweis.....................................................................................................6<br />
Beweis für „⇒“.........................................................................6<br />
Beweis für „⇐“.........................................................................7<br />
4.6 Das Pumping-Lemma für reguläre Sprachen:<br />
Das Pumping-Lemma ist ein zentrales Hilfsmittel um zu entscheiden bzw. um nachzuweisen, dass eine Sprache<br />
nicht regulär ist.<br />
Satz W :<br />
∗<br />
Es sei X ein Alphabet, dann existiert zu jeder regulären Sprache R ⊆ X ein n ∈ IN , so dass für alle Wörter<br />
z ∈ R mit z ≥ u eine Zerlegung z = uvw mit u, v,<br />
w X , v ≠ ε und uv ≤ n existiert, für die gilt:<br />
uv w R<br />
i ∈ für alle i ≥ 0.<br />
Formal:<br />
∗<br />
∈ ∗<br />
∀R<br />
∈ Re g ∃n<br />
∈ IN ∀z<br />
∈ R , z ≥ n ∃uvw∈<br />
X : z = uvw ∧ v ≠ ε ∧ uv ≤ n : ∀n<br />
∈ IN 0 : uv w R .<br />
- 1 -<br />
i ∈
Theoretische Informatik 1 Vorlesungsskript <strong>vom</strong> Freitag, 30. Juni 2000<br />
Zugrundeliegende Idee des Pumping-Lemma :<br />
Es existiert eine Pumpstelle in allen regulären Wörter z ab einer gewissen Länge n.<br />
¡<br />
Endliche Akzeptoren : Um unbeschränkte Wörter zu erkennen, muss ein Akzeptor in Zyklen laufen, wobei<br />
man diese Zyklen mehrfach durchlaufen kann.<br />
v (*)<br />
Graphische Veranschaulichung:<br />
Reguläre Ausdrücke : Ein * -Operator ermöglicht einige Methoden eine unendliche Sprache zu beschreiben.<br />
Dies ergibt, dass sehr lange Wörter viele Wiederholungen desselben Teilwortes<br />
enthalten. w1 L* wn n ∈IN<br />
Beweis des Pumping-Lemma :<br />
Es sei R eine reguläre Sprache und zu R existiert ein endlicher deterministischer Akzeptor A = (X, S, δ, s0 ) mit<br />
L(A ) = R.<br />
Nun wähle man n:= |s | , wobei z ∈R und |z | ≥ n ist.<br />
Dann gibt es mindestens einen Zustand, welcher bei der Eingabe von z zweimal durchlaufen wird,<br />
also :<br />
z = x ,..., x , wobei gilt: r ≥ n und xi<br />
∈ X für i = 1,...,<br />
r .<br />
Graphische Darstellung:<br />
1<br />
r<br />
Nun erkennt man:<br />
Für das erste Auftreten eines Zustandes sj = sk gilt:<br />
u : = x ... x j und v : = x j+<br />
1 ... xR<br />
≠ ε<br />
1 .<br />
Damit gilt für das erste Auftreten : uv = x ... x ≤ n<br />
Daraus lässt sich nun folgern:<br />
δ s n = δ s , uv = δ s<br />
i<br />
, uv mit i ≥<br />
1 . Damit ist : k + 1 ... r<br />
- 2 -<br />
w = x x .<br />
Offenbar ist ( ) ( ) ( ) 0 , woraus folgt δ ( s uv w)<br />
= δ(<br />
s , uvw)<br />
= s ∈ F<br />
⇒ w∈<br />
R mit i ≥ 0 .<br />
uv i<br />
0 , 0<br />
0<br />
u<br />
S0 Sj S<br />
x 1 x 2 x j x j+1 x j+2 x k-1<br />
S0 S1<br />
u<br />
. . . Sj = Sk Sj+1 . . . Sk-1<br />
x k+1<br />
x k+2<br />
v<br />
xR<br />
Sk+1 . . .<br />
w<br />
xr<br />
i<br />
0 , 0<br />
S<br />
w
Theoretische Informatik 1 Vorlesungsskript <strong>vom</strong> Freitag, 30. Juni 2000<br />
Hinweise zum Pumping-Lemma :<br />
¢<br />
£<br />
Das Pumping-Lemma ist keine Äquivalenzaussage. Es ist nur eine Implikation:<br />
Ist eine Sprache L regulär, dann erfüllt L das Pumping-Lemma.<br />
Der umgekehrte Weg ist nicht möglich.<br />
Eine Typische Anwendung des Pumping-Lemma ist um zu zeigen, dass eine Sprache L nicht regulär ist.<br />
Aber das Pumping-Lemma kann oft nicht Angewendet werden, da es Sprachen gibt, welche die Bedingungen<br />
des Pumping-Lemma erfüllen, aber dennoch nicht regulär sind.<br />
Beispiel :<br />
Man nehme an es existiert eine nicht reguläre Sprache L mit { } { } ∗<br />
m n n<br />
L c a b m n 0 a,<br />
- 3 -<br />
= , ≥ ∪ b ,<br />
dann existieren folgende Pumpmöglichkeiten für L :<br />
L unterteilt in uvw: 1) v = c i , mit i ≥ 0 ⇒ v wird gepumpt und das Wort bleibt Element von L.<br />
2) v = a i b i , mit i ≥ 0 ⇒ a, b wird gepumpt und das Wort bleibt Element von L.<br />
Beispiele zum Pumping-Lemma :<br />
P<br />
1) Man definiere eine nicht reguläre Sprache L { O p ist eine Primezahl}<br />
= .<br />
Annahme : L ist regulär. ⇒ Dann muss L das Pumping-Lemma erfüllen.<br />
Daraus folgt diese Beweisführung:<br />
Man wähle ein n nach dem Satz W und es sei r eine Primezahl mit r > n.<br />
r ∈<br />
Des weiteren sei z = O L .<br />
⇒ Dann existiert eine Zerlegung z = uvw mit<br />
r<br />
O t i r ∈<br />
⋅ +<br />
s<br />
uv ≤ n , u = O , v = O mit s , t ≠ 0 .<br />
Für O gilt auch L für alle i ≥ 0 .<br />
⇒ Folglich sind alle Zahlen r + i ⋅t<br />
Primezahlen. Nach spätestens t Zahlen kommt also immer eine<br />
Primezahl. Nun setze man i = r , dann ist r + r ⋅t<br />
eine Primezahl.<br />
⇒ r ⋅( 1+ t)<br />
ist eine Primezahl, andererseits sind r und 1 + t Faktoren von r ( + t)<br />
⇒ L ist nicht regulär.<br />
m<br />
2) Es sei die Sprache L { O m ist Quadratzahl}<br />
= nicht regulär.<br />
Man gehe auch hier von der Annahme aus, dass L regulär ist.<br />
Die Beweisführung lautet dann folgendermaßen:<br />
t<br />
⋅ 1 . ¤<br />
Unter der Bedingung, dass L regulär ist, muss es ein n ∈ IN existieren, so dass sich jedes Wort zu der Form<br />
mit m ≥ n und m Quadratzahl<br />
, sich in die Form z = uvw zerlegen lässt, mit den entsprechenden<br />
Eigenschaften:<br />
i<br />
v ≠ ε,<br />
uv ≤ n,<br />
uv w∈<br />
L mit i ≥ 0 .<br />
O m<br />
2<br />
Nun wähle man speziell: 0 n<br />
z =<br />
und betrachte zugleich die Zerlegung z = uvw .<br />
Daraus folgt wegen der Bedingung des Pumping-Lemma : 1 ≤ v ≤ uv ≤ n .<br />
Ferner ist für i = 2 : uv w ∈ L<br />
( ) ( ) 2<br />
2<br />
w < + 1<br />
2<br />
¤ ⇒ nv<br />
∉<br />
L<br />
n ⇒ L ist nicht regulär !<br />
, anderseits soll gelten: ( ) 2<br />
2<br />
2 2<br />
2<br />
n = z = uvw < uv w ≤ n + n < n + n + 1 = n + 1
Theoretische Informatik 1 Vorlesungsskript <strong>vom</strong> Freitag, 30. Juni 2000<br />
4.7 Reguläre Grammatiken<br />
Allgemeine Grammatiken :<br />
Zusammenfassung des bisher behandelten Stoffes :<br />
- Prozesse des Erlernen von Sprachen → Automaten<br />
- Charakterisierungen → Pumping-Lemma, Abschlusseigenschaften, algebraisch<br />
- Beschreibungen → reguläre Ausdrücke<br />
- Erzeugungprozesse → Grammatiken<br />
Beispiel einer allgemeinen Grammatik :<br />
Produktions- / Ableitungsregeln :<br />
Es handelt sich hierbei um jene Regeln, nach denen die verschiedenen Symbole verwendet bzw. ersetzt werden<br />
dürfen.<br />
→ <br />
→ Hund → Katze<br />
→ Katze → Maus<br />
→ beißt<br />
→ jagt<br />
Erläuterung der verschiedenen Symbolen:<br />
: Nichtterminalsymbole<br />
Hund, Katze, beißt, ... : Terminalsymbole<br />
: Startsymbol<br />
Ableitungsprozess :<br />
Beispiel einer Anwendung der Produktionsregeln dieser Grammatik.<br />
→ → Katze <br />
→ Katze beißt → Katze beißt Maus<br />
- 4 -
Theoretische Informatik 1 Vorlesungsskript <strong>vom</strong> Freitag, 30. Juni 2000<br />
Definition X :<br />
¥<br />
¦<br />
§<br />
Eine Grammatik G beschreibt man durch ein Quadrupel G = (N, T, P, σ ) wobei folgendes gilt:<br />
- N ist die nichtleere endliche Menge von Nichtterminalsymbolen.<br />
- T ist die nichtleere endliche Menge von Terminalsymbolen.<br />
- N ∩ T = ∅ , Es gibt keine Terminalsymbolen die gleichzeitig Nichtterminalsymbolen sind und umgekehrt.<br />
- σ ∈ N ist das Startsymbol.<br />
{ } ∗<br />
- P ⊆ ( α β)<br />
α,<br />
β∈<br />
( N ∪T<br />
)<br />
, ist die endliche Menge der Produktionen oder auch Produktions- oder<br />
Ableitungsregeln.<br />
Bemerkung :<br />
α, β schreibt man auch ⎯⎯→<br />
β oder auch α ⎯⎯→<br />
β , wenn der Bezug zur Grammatik eindeutig<br />
Statt ( )<br />
ist.<br />
Es seien ( ) ∗<br />
w ∈ N ∪T<br />
α G<br />
v, . Dann sei des weiteren v ableitbar aus w<br />
( Formal dargestellt: ⎯⎯→<br />
∗ v , bzw. vereinfacht<br />
w ⎯⎯→<br />
∗ v oder w ⎯⎯→<br />
v ) ,<br />
w G<br />
wenn Wörter der Art ( ) ∗<br />
,..., v ; u ,..., u ; z ,..., z ; α ,..., α ; β ,..., β ∈ N ∪T<br />
v1 k 1 k 1 k 1 k −1<br />
1 k−1<br />
v1 w,<br />
vk<br />
= v,<br />
vi<br />
= ui<br />
α i zi<br />
, vi<br />
1 = uiβ<br />
i zi<br />
für alle i = 1<br />
existieren, dann gilt: = + ,..., k −1<br />
.<br />
Darstellung: v = u α z → u β z = u α z → u β z = u α z → ... → v .<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
Die von einer Grammatik G erzeugte Sprache L(G ) ist definiert durch:<br />
L<br />
∗ ( G)<br />
= { w∈<br />
T a ⎯⎯→<br />
∗ w}<br />
.<br />
G<br />
2<br />
2<br />
Beispiele für allgemeine Grammatiken nach der Definition X :<br />
n n<br />
1) Man nehme die Sprache L = { a b n ∈ IN}<br />
2<br />
2<br />
2<br />
1 , für welche die Grammatik G 1 = ( N1<br />
, T1<br />
, P1<br />
, σ1<br />
) mit 1 = { σ1}<br />
1 = { a b}<br />
und P 1 = { σ1<br />
→ aσ1b,<br />
σ1<br />
→ ε}<br />
.<br />
T ,<br />
In diesem Fall sieht der Ableitungsprozess folgendermaßen aus:<br />
n n n n<br />
→ aσ b → aaσ<br />
bb → → a σ b → a b<br />
σ 1 1<br />
1 ... 1<br />
, woraus folgt: ( G1<br />
) L1<br />
- 5 -<br />
2<br />
3<br />
3<br />
3<br />
L = .<br />
N ,<br />
2) Man definiere für die korrekte Klammerung durch begin und end in einem Programm folgende Grammatik<br />
G 2 = ( N 2 , T2<br />
, P2<br />
, σ 2 ) mit N 2 = { σ 2}<br />
, T 2 = { begin,<br />
end}<br />
und P 2 = { σ 2 → begin σ 2end<br />
σ 2 , σ 2 → ε}<br />
.<br />
Der Ableitungsprozess besitzt folgendes Aussehen:<br />
σ → begin σ end σ → begin σ end → begin begin σ end σ end → begin begin end σ end<br />
2<br />
2<br />
2<br />
→ begin begin end begin σ end σ end → begin begin end begin σ end end → begin begin end begin end end<br />
⇒<br />
begin<br />
begin<br />
end<br />
begin<br />
end<br />
end<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2<br />
2
Theoretische Informatik 1 Vorlesungsskript <strong>vom</strong> Freitag, 30. Juni 2000<br />
Reguläre Grammatiken :<br />
Die Typisierung von Grammatiken und der Bezug zu speziellen Sprachklassen erfolgt über die Einschränkung<br />
der Form der Produktion.<br />
Definition Y :<br />
Eine Grammatik G = (N, T, P, σ ) heißt rechtslineare Grammatik, wenn gilt<br />
∗<br />
∗<br />
Für alle ( α, β)<br />
∈ P existiert ein α ∈ N und ein β∈ T oder ein β = β'<br />
B mit β' ∈T<br />
und B ∈ N .<br />
Analog : Bei der linkslinearen Grammatik wird das „ β = β'<br />
B “ durch „ β = B β'<br />
“ ersetzt.<br />
Beispiel einer regulären Grammatik nach der Definition Y :<br />
Man nehme an, zu der Sprache { } { } ∗ ∗ = a ⋅ b<br />
L existiert eine reguläre Grammatik = ( N,<br />
T,<br />
P,<br />
σ)<br />
definierte ist mit N = { a,<br />
σ'}<br />
, T = { a,<br />
b}<br />
und P = { σ → aσ,<br />
σ → σ',<br />
σ'<br />
→ σ'b,<br />
σ'<br />
→ ε}<br />
⇒ L ( G)<br />
= L .<br />
Satz Z :<br />
- 6 -<br />
G , welche<br />
∗<br />
Sei X ein Alphabet, dann existiert zu jeder regulären Sprache L ⊆ X eine rechtslineare Grammatik G, führ die<br />
gilt: L ( G)<br />
= L und umgekehrt.<br />
Beweis :<br />
Der Beweis ist unterteilt in zwei Beweise für jeweils eine Richtung, also einer für „⇒“ und einer für „⇐“.<br />
Beweis für „⇒“ :<br />
∗<br />
Es sei die Sprache ⊆ X<br />
L regulär. Dann existiert ein endlicher deterministischer Akzeptor A = ( X , S,<br />
δ,<br />
s0<br />
, F )<br />
mit der Eigenschaft L = L(<br />
A)<br />
.<br />
Beweisidee :<br />
Man konstruiere eine Grammatik aus der Zustandsüberführungsaktion δ.<br />
Die Zustandsüberführungsaktion δ wird also zur Grammatik.<br />
Beweisführung:<br />
Es sei eine Grammatik G = ( N,<br />
T,<br />
P,<br />
σ)<br />
definiert durch:<br />
N := S , T := X , σ := s0 und s → xs'<br />
∀s,<br />
s'∈<br />
S : δ(<br />
s,<br />
x)<br />
Nun ist zu zeigen: L ( G)<br />
= L<br />
Es sei ein Wort L(<br />
G)<br />
w∈ mit w = x1...<br />
xk<br />
, xi ∈ X ⇔<br />
definiert<br />
s ⎯→ w ⇔ s → x s → x x s → → x ... x ⇔<br />
{ = s } ∪{<br />
s → ε ∀s<br />
F}<br />
P : = '<br />
∈ .<br />
0 ⎯<br />
G<br />
0 1 1 1 2 2 ... 1 k<br />
∀ ∈{<br />
0 ,..., k −1}<br />
: δ(<br />
si<br />
, xi+<br />
1 ) = si+<br />
1<br />
∗<br />
sk ∈ F ⇔ δ s0<br />
, w = sk<br />
i und ( ) F w L(<br />
A)<br />
L<br />
∈<br />
⇔<br />
∈<br />
=<br />
.
Theoretische Informatik 1 Vorlesungsskript <strong>vom</strong> Freitag, 30. Juni 2000<br />
Beweis für „⇐“ :<br />
G = N,<br />
T,<br />
P,<br />
σ eine rechtslineare Grammatik.<br />
Es sei ( )<br />
Beweisidee :<br />
Wir konstruieren einen nichtdeterministischen Akzeptor A ( X S,<br />
δ,<br />
s , F )<br />
Beweisführung:<br />
A X S,<br />
δ,<br />
s , F<br />
Es sei = ( ) mit ( G)<br />
L(<br />
A)<br />
, 0<br />
L = definiert durch :<br />
{ }<br />
- 7 -<br />
= .<br />
, 0<br />
⎧ σ,<br />
α , falls σ → ε ∈ P<br />
S : = N ∪{<br />
α}<br />
mit α ∉ N , s0 : = { σ}<br />
und F = ⎨<br />
.<br />
� { α}<br />
, falls σ → ε ∉ P<br />
B ∈ δ(<br />
A,<br />
x)<br />
, falls A → xB ∈ P<br />
Des weiteren gelten die folgenden Gesetzmäßigkeiten :<br />
.<br />
α ∈ δ A,<br />
x , falls A → x ∈<br />
( ) P<br />
Nun soll gelten für n ≥ 1:<br />
Ein Wort w = x1...<br />
xn<br />
mit xi ∈ X ist Element von L ( G)<br />
.<br />
⇔ Es existiert eine Folge von Nichtterminalsymbolen A1,..., An−1<br />
für die gilt:<br />
→ A → x x A → → x ... x A → x ... x = w .<br />
⇔ L(<br />
A)<br />
σ x1 1 1 2 2 ... 1 n − 1 n−1<br />
1 n<br />
⇔ Es existiert eine Folge von Zuständen A1,..., An−1<br />
mit<br />
A ∈ δ σ x , A ∈ δ A , x , ..., α ∈ δ A , x .<br />
w∈ .<br />
( ) ( ) ( )<br />
1 , 1 2 1 2<br />
n−1<br />
n