I.1.3. Moore-Automaten Definition: Ein Moore-Automat ist ein Fünftupel A = (X, Y, Z, f, h) mit nichtleeren endlichen Mengen X, Y, Z und Abbildungen f: Z x X Z (X und Y mit der gleichen Bedingung wie h: Z Y beim Mealy-Automaten) Beim Moore-Automaten ist die Ausgabefunktion nicht direkt von der Eingabe abhängig. Bei der Darstellung in Tabellenform benötigt man für die Darstellung von h nur eine Spalte: x2 z1 f(z1,x1) z2 ... xn h f(z1,x2) f(z1,xn) h(z1) f(z2,x1) f(z2,x2) f(z2,xn) h(z2) f(zk,x1) f(zk,x2) f(zk,xn) h(zk) ... x1 zk Bei der Darstellung mittels gerichteter Graphen wird das Ausgabezeichen in die Knotenbeschriftung einbezogen und die Kanten werden dem entsprechend nur mit den Eingabezeichen beschriftet. z.B. 1 z1|0 0 z3|1 1 z2|1 0 0 1 0 1 h z1 z3 z2 0 z2 z4 z1 1 z3 z1 z4 z4 z4 z4 1 1 z4|1 0,1 mit X = Y = {0,1}, Z = {z1, ... ,z4} Arbeitsablauf gegenüber Mealy-Automaten modifiziert; für jeden "durchlaufenen" Zustand wird das zugehörige Ausgabezeichen generiert. 1 Die Auffassung von der Arbeitsweise eines Moore-Automaten ist allerdings etwas anders: Anfangszustand z setzen Auf Ausgabeband Zeichen y = h(z) schreiben Lesekopf auf 1. Zeichen der Eingabe setzen while Feld unter Lesevorrichtung nicht leer do Zeichen x unter Lesekopf setzen Zustand z := f(z, x) Ausgabeband um ein Feld weiterrücken Auf Ausgabeband Zeichen y = h(z) schreiben Eingabeband um 1 Feld weiterrücken. Die Ausgabe erfolgt also nach Annahme des neuen Zustandes. Insbesondere wird auch bei eingegebenem leerem Wort ε ein Zeichen ausgegeben, und bei Eingabe eines Strings der Länge n hat der Ausgabestring die Länge n+1, wobei das 1. Zeichen i.Allg. nicht relevant ist. Z.B. ist beim obigen Automaten, wenn in z1 gestartet Eingabe: ε Ausgabe 0 Eingabe 0 Ausgabe 01 Eingabe 011 Ausgabe 0111 Dementsprechend ist also auch die erweiterte Ergebnisfunktion hier wie folgt zu definieren: (vgl. Mealy-Automat g*) h* : Z x X* Y* h*(z, ε) = h(z), h*(z, px) = h*(z, p) h(f*(z, px)) hz* * * : X Y mit hz*(p) und * = h (z, p) Alle Ergebnisse und Definitionen für Mealy-Automaten finden dann ihre Entsprechung bei Moore-Automaten. Bei der Reduktion hat allerdings der Algorithmus mit 0-äquivalenten Zuständen zu beginnen, d.h. mit Zuständen, die bei 2 Eingabe von ε die gleiche Ausgabe erzeugen, d.h. die Zustände mit gleichen Ausgaben sind für Π0 zusammenzufassen. o z1 ~ z2 g.d.w. h(z1) = h(z2) Zusammenhang von Meal y- und Moore-Automaten Wegen der verschiedenen Längen der Ausgabestrings bei gleichem Eingabestring bei Moore- und Mealy-Automaten kann ein Moore-Automat nicht zu einem MealyAutomat äquivalent sein. Es stört dabei das (redundante) 1. ausgegebene Zeichen. Deshalb (Idee: 1. Zeichen weglassen): Definition: Die beschränkte Leistung eines Zustandes z eines Moore-Automaten A (wie oben) h ∗z ist definiert h*(z, ε) hz∗ ( p ) = hz∗ (p) ∀p ∈ X ∗ (d.h. h ∗ ( z , p) ist h ∗ ( z , p) , wobei das 1. Zeichen gestrichen wird). Definition: Der Mealy-Automat A1 = (X, Y, Z1, f1, g1) und der Moore-Automat A2 = (X, Y, Z2, f2, h2) heißen gleichwertig, wenn die Menge der Leistungen von A1 mit der Menge der beschränkten Leistungen von A2 übereinstimmt. Offenbar gibt es zu jedem Moore-Automaten A = (X, Y, Z, f, h) einen gleichwertigen Mealy-Automaten A' = (X, Y, Z', f', g'). Anschaulich: Der Graph von A geht in den von A' über, indem jeder Teil z1y1 x z1 x | y2 z2y2 ersetzt wird durch 3 z2 Formal: Z' := Z, f' := f, g'(z, x) = h (f (z, x)) Beispiel: . . . [Umkehrung möglich? Ja, aber die Konstruktion lässt sich nicht unmittelbar umkehren. Man braucht mehr Zustände.] Also sind in diesem Sinne Moore-Automaten spezielle Mealy-Automaten! FRAGE: Können Mealy-Automaten echt mehr leisten? ANTWORT: Nein! Satz 1.4.: Zu jedem Mealy-Automaten A = (X, Y, Z, f, g) gibt es einen gleichwertigen Moore-Automaten A' = (X, Y, Z', f', h'). Beweis: Z' := Z x Y; ∀ x ∈ X , y ∈Y , z ∈ Z f'((z, y),x) := ( f(z,x), g(z,x)) h'((z, y)) := y Sei y0 ∈ Y beliebig. Es genügt zu zeigen, dass (#) g * (z, p ) = h ' ∗ ((z, y 0 ), p ) ∀ p ∈ X* , ∀ z ∈ Z Sei p = xi1 xi2 ... xi r ∈ X* Man hat z xi1|yt1 zj1 xi2|yt2 ... zj2..... xir|ytr zj r = f*(z,p) mit g* (z, p) = yt1 ... yt r. Nach Definition von f' und h' wird: xi1 xi2 (zj1,yt1)yt1 (z,y0)y 0 in A', d. h. h'* ((z, y0), p) = y0yt1 …ytr. Beispiel: (zj2,yt2)yt2 Mausefalle ohne Speck: m| t z m|t z m t m t 4 ... xir (zjr,ytr)ytr Es wird m (z1, t)t m (z2, t)t m, m m (z1, t ) t (z2, t ) t m, m m 5
© Copyright 2024 ExpyDoc