05.11.2013 Aufrufe

Notizen

Notizen

Notizen

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.

3 Endliche Automaten<br />

Automaten und formale Sprachen<br />

<strong>Notizen</strong> zu den Folien<br />

Überführungsfunction eines DFA (Folie 92)<br />

Wie sieht die Überführungfunktion aus?<br />

δ : Z × Σ → Z<br />

Das heißt: Ein Paar aus Zustand und Alphabetsymbol wird auf einen Zustand abgebildet. Also,<br />

δ(z 1 , a) = z 2 heißt, dass ein mit a beschrifteter Pfeil von z 1 zu z 2 geht.<br />

Beispiel: der Automat auf Folie 89 wird wie folgt ”<br />

textuell“ dargestellt:<br />

M = ({z 1 , z 2 }, {a, b}, δ, z 1 , {z 2 }), wobei:<br />

δ(z 1 , a) = z 1 δ(z 2 , a) = z 2<br />

δ(z 1 , b) = z 2 δ(z 2 , b) = z 1<br />

Erweiterung von δ auf Wörter (Folie 93)<br />

Die Funktion ˆδ ist die Erweiterung von δ von Symbolen auf Wörter. Beispiel (siehe Automat auf<br />

Folie 89):<br />

ˆδ(z 1 , ab) = ˆδ(δ(z 1 , a), b) = ˆδ(z 1 , b) = ˆδ(δ(z 1 , b), ɛ) = ˆδ(z 2 , ɛ) = z 2<br />

Das bedeutet, dass das Einlesen des Wortes ab den Automaten vom Zustand z 1 in den Zustand<br />

z 2 führt.<br />

Beispiel-DFAs (Folie 95)<br />

• Antwort der ersten Aufgabe:<br />

L = {x ∈ Σ ∗ | x enthält genau 1 b}<br />

• Antwort der zweiten Aufgabe:<br />

M = (Z, Σ, δ, z 0 , E), mit Z = {1, 2, 3, 4}, Σ = {a, b}, z 0 = 1, E = {4}:<br />

a<br />

b<br />

1 2 4<br />

a<br />

b<br />

a b<br />

3<br />

a, b<br />

Die verschiedene Zustände eines DFA haben alle eine Bedeutung. In diesem Fall:<br />

1. Wenn der Automat in Zustand 1 ist, hat sie gerade angefangen und noch kein Symbol<br />

eingelesen.<br />

1


2. Wenn der Automat in Zustand 2 ist, war das erste eingelesene Symbol ein a, und war<br />

auch das zuletzt eingelesene Symbol ein a.<br />

3. Wenn der Automat in Zustand 3 ist, war das erste eingelesene Symbol ein a, und war<br />

das zuletzt eingelesene Symbol ein b. (In diesem Zustand kann das Wort akzeptiert<br />

werden.)<br />

4. Wenn der Automat in Zustand 4 ist, war das erste eingelesene Symbol kein a. Das heißt,<br />

dass das Wort nicht in der Sprache liegen kann. Deswegen kann aus diesem Zustand<br />

kein Endzustand mehr erreicht werden.<br />

DFA → Reguläre Grammatik (Folie 96)<br />

Satz. Jede von einem endlichen Automaten akzeptierte Sprache ist regulär.<br />

Beweis. Nach Definition, ist eine Sprache regulär, wenn es eine reguläre Grammatik gibt, die sie<br />

erzeugt. Sei ein endlicher Automat M = (Z, Σ, δ, z 0 , E) gegeben. Wir müssen zeigen, dass es eine<br />

reguläre Grammatik G gibt, mit L(G) = T (M).<br />

Wir konstruieren die Grammatik G = (V, Σ, P, S), wobei V = Z, S = z 0 und P folgende Produktionen<br />

enthält:<br />

• Falls ɛ ∈ T (M), enthält P eine Produktion S → ɛ. (Es ist dann noch notwendig, die Grammatik<br />

noch weiter umzuwandeln, damit die ɛ-Sonderregel nicht verletzt wird.)<br />

• Für alle z 1 ∈ Z und a ∈ Σ:<br />

– Falls δ(z 1 , a) = z 2 , dann gilt (z 1 → az 2 ) ∈ P .<br />

– Falls zusätzlich gilt, dass z 2 ∈ E, dann gilt auch (z 1 → a) ∈ P .<br />

Jetzt müssen wir noch beweisen, dass T (M) = L(G). Dafür gibt es zwei Richtungen.<br />

• Angenommen, a 1 . . . a n ∈ T (M).<br />

Dann gibt es Zustände q 0 , . . . , q n , so dass q 0 = z 0 , q n ∈ E und q i = δ(q i−1 , a i ), für i ∈<br />

{1, . . . , n}.<br />

Nach Konstruktion heißt das, dass (q i−1 → a i q i ) ∈ P , für i ∈ {1, . . . , n}. Weil außerdem<br />

q n ∈ E, gilt auch (q n−1 → a n ) ∈ P .<br />

Deswegen ist<br />

z 0 ⇒ a 1 q 1 ⇒ a 1 a 2 q 2 ⇒ · · · ⇒ a 1 . . . a n−1 q n−1 ⇒ a 1 . . . a n<br />

eine Ableitung von G, und es gilt a 1 . . . a n ∈ L(G).<br />

• Angenommen, a 1 . . . a n ∈ L(G).<br />

Nach Definition muss es eine Ableitung<br />

z 0 ⇒ a 1 q 1 ⇒ a 1 a 2 q 2 ⇒ · · · ⇒ a 1 . . . a n−1 q n−1 ⇒ a 1 . . . a n<br />

geben. Nach Konstruktion heißt das, dass (q i−1 → a i q i ) ∈ P , für i ∈ {1, . . . , n}.<br />

Das heißt, dass (q i−1 → a i q i ) ∈ P , für i ∈ {1, . . . , n}. Nach Konstruktion gilt q i = δ(q i−1 , a i ).<br />

Weil außerdem (q n−1 → a n ) ∈ P , gibt es einen q n ∈ E so dass q n = δ(q n−1 , a n ).<br />

Daraus folgt, dass a 1 . . . a n ∈ T (M).<br />

□<br />

Bemerkung: Obiger Beweis ist konstruktiv. Das heißt, dass er ein Verfahren enthält, das wir<br />

benützen können, um eine zu einem DFA äquivalente reguläre Grammatik zu erzeugen.<br />

Beispiel zur Umwandlung<br />

2


Wenn wir das Verfahren aus dem Beweis auf dem DFA der Folie 89 anwenden, ergibt sich folgende<br />

reguläre Grammatik:<br />

Zu Folie 100<br />

Wie sieht die Überführungsfunktion aus?<br />

z 1 → az 1 | bz 2 | b<br />

z 2 → az 2 | bz 1 | a<br />

δ : Z × Σ → P(Z)<br />

Das heißt, jedem Paar aus Zustand und Alphabetsymbol wird eine Menge von Zuständen zugeordnet.<br />

Beispiel: der Automat auf Folie 99 wird folgendermaßen ”<br />

textuell“ dargestellt:<br />

M = ({z 0 , z 1 , z 2 , z 3 }, {a, b}, δ, {z 0 , z 3 }, {z 3 }), wobei:<br />

δ(z 0 , a) = {z 1 } δ(z 1 , a) = ∅ δ(z 2 , a) = {z 3 } δ(z 3 , a) = {z 0 }<br />

δ(z 0 , b) = {z 0 , z 2 } δ(z 1 , b) = {z 3 } δ(z 2 , b) = ∅ δ(z 3 , b) = ∅<br />

Zu Folie 101<br />

Genauso wie bei DFAs, ist ˆδ die Erweiterung von δ von Alphabetsymbolen auf Wörter.<br />

Sei Z ′ = {z 1 , . . . , z n }. Dann bedeutet<br />

das gleiche wie:<br />

Beispiel (siehe Automat auf Folie 99):<br />

⋃<br />

z∈Z ′ ˆδ(δ(z, a), x)<br />

ˆδ(δ(z 1 , a), x) ∪ · · · ∪ ˆδ(δ(z n , a), x)<br />

ˆδ({z 0 }, ba) =<br />

ˆδ(δ(z 0 , b), a) =<br />

ˆδ({z 0 , z 2 }, a) =<br />

ˆδ(δ(z 0 , a), ɛ) ∪ ˆδ(δ(z 2 , a), ɛ) =<br />

ˆδ({z 1 }, ɛ) ∪ ˆδ({z 3 }, ɛ) =<br />

{z 1 } ∪ {z 3 } =<br />

{z 1 , z 3 }<br />

Das heißt, dass das Einlesen des Wortes ba den Automaten vom Zustand z 0 entweder in den<br />

Zustand z 1 oder in den Zustand z 3 führt.<br />

NFA-Beispiele (Zu Folie 103)<br />

• Die vom NFA akzeptierten Sprache ist:<br />

L ′ = {x | das 3-letzte Zeichen von x ist a}<br />

• Folgender NFA akzeptiert die Sprache L = {x | x fängt mit a an und endet mit b}:<br />

z<br />

a<br />

0 z<br />

b<br />

1 z 2<br />

a, b<br />

3


Potenzmengenkonstruktion (Folie 106)<br />

Wir wenden die Potenzmengenkonstruktion an, um den folgenden NFA (über das Alphabet Σ =<br />

{a, b}) in einen DFA umzuwandeln:<br />

a<br />

z 2<br />

a a<br />

z 1 a z 4<br />

a b<br />

z 3<br />

b<br />

Manchmal ist es hilfreich, eine Tabelle zu erstellen. Wir fangen an mit der Menge von Anfangszuständen<br />

({z 1 , z 4 }), und gucken welche Mengen von Zuständen daraus nach dem Einlesen eines<br />

Symbols erreicht werden. Die erreichten Zustände werden wieder in die Tabelle eingefügt:<br />

a b<br />

{z 1 , z 3 } {z 2 , z 3 } {z 3 }<br />

{z 2 , z 3 }<br />

{z 3 }<br />

Für alle Mengen von Zuständen, die in die Tabelle aufgenommen werden, gucken wir welche<br />

Mengen von Zuständen nach dem Einlesen einzelner Alphabetsymbole erreicht werden, und fügen<br />

diese in die Tabelle ein (falls sie noch nicht vorhanden sind). Im Beispiel sieht die Tabelle am Ende<br />

folgendermaßen aus:<br />

a b<br />

{z 1 , z 4 } {z 2 , z 3 } {z 3 }<br />

→ {z 2 , z 3 } {z 2 , z 3 } {z 3 }<br />

→ {z 3 } ∅ {z 3 }<br />

∅ ∅ ∅<br />

Auf diese Weise nehmen wir nur die erreichbare Zustände des DFA in die Tabelle auf. (Es sei<br />

angemerkt, dass der vollständige Potenzmengenautomat 2 4 = 16 Zustände hat, von denen wir nur<br />

4 angegeben haben.)<br />

Die Zustände {z 2 , z 3 } und {z 3 } sind Endzustände des NFA, denn sie enthalten einen Endzustand<br />

des NFA.<br />

Der DFA, der dieser Tabelle enspricht, ist:<br />

4


a<br />

{z 1 , z 4 }<br />

a<br />

{z 2 , z 3 }<br />

b<br />

b<br />

{z 3 }<br />

a<br />

∅<br />

b<br />

a, b<br />

Hier sei angemerkt, dass Zustände des konstruierten DFAs Mengen von Zuständen des ursprünglichen<br />

NFAs sind.<br />

Hinweis: Obwohl die Tabelle hilfreich sein kann, ist es nicht notwendig sie anzugeben. Man kann<br />

die Zustände auch sofort aufzeichnen anstatt sie in die Tabelle aufzunehmen. (Insbesondere darf<br />

man das auch in der Prüfung bzw. Klausur machen.)<br />

Mit Hilfe der Potenzmengenkonstruktion, wird der NFA von Seite 3 in den folgenden DFA umgewandelt<br />

(nicht erreichbare Zustände, wie z.B. {z 2 , z 3 }, sind nicht angegeben).<br />

b<br />

a<br />

{z 0 } {z 1 } {z 1 , z 2 }<br />

a<br />

b<br />

a<br />

b<br />

∅<br />

a, b<br />

Reguläre Grammatik → NFA (Folie 110)<br />

Gegeben Sei G = ({S, U}, {a, b}, P, S), wobei P wie folgt definiert ist:<br />

S → aS | bU | a<br />

U → aU | bS | b<br />

Wir wandeln diese Grammatik in einen NFA M = (Z, {a, b}, δ, S, E) um. Wir haben:<br />

Z = {S, U, X}<br />

E = {X}<br />

und δ wie folgt:<br />

5


a<br />

S<br />

a<br />

b<br />

b<br />

X<br />

U<br />

b<br />

a<br />

6

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!