Notizen
Notizen
Notizen
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