Sie sind auf Seite 1von 83

Einfhrung in Automatentheorie und Formale Sprachen

Version 2013 Autor: Dieter Lindenberg


1

Inhaltsverzeichnis

Transduktor Akzeptor Automaten-Definitionen Programmierung von Automaten in DELPHI Aufgaben fr Transduktoren Lsungen berfhrung eines Moore-in einen Mealy-Automaten berfhrung eines Mealy-in einen Moore-Automaten Erkennende Automaten Suche nach mehreren Begriffen gleichzeitig Formale Sprachen Sprachklassen Ermittlung der Sprache eines Akzeptors Ermittlung des Akzeptors fr eine Sprache Ausblick

3 4 5 7 11 17 22 24 32 45 47 57 67 78 83

Transduktor
Ein Fahrscheinautomat verkauft Fahrkarten im Wert von 3. Der Automat sei sehr einfach konstruiert. Es muss exakt der Wert von 3 eingeworfen werden, denn zu viel eingeworfenes Geld wird einbehalten. Man kann nur 1- oder 2Mnzen einwerfen. Nach Drcken des Ausgabeknopfes erhlt man den Fahrschein. Eingabealphabet E = {1, 2, A} entsprechend den Mnzen bzw. dem Ausgabeknopf. Ausgabealphabet A = {F, -} entspricht der Fahrkarte bzw. der leeren Ausgabe. Die leere Ausgabe wird oft auch mit dem Leerstring oder mit dem Buchstaben n (nothing) gekennzeichnet. Es gibt vier innere Zustnde S0, S1, S2, S3 des Automaten: S0: Anfangszustand, S1: 1 wurde bereits eingeworfen, S2: 2 wurden bereits eingeworfen, S3: 3 oder mehr wurden eingeworfen. Bettigen der Ausgabetaste wird erwartet. Zustandsmenge S = {S0, S1, S2, S3}

Jeder Zustand wird benannt, durch einen Kreis symbolisiert und bildet so einen Knoten des Zustandsdiagramms. Der Anfangszustand wird durch einen zustzlichen Eingangspfeil gekennzeichnet. Von jedem Zustand aus fhren Pfeile (die sog. Kanten) zu den mglichen Folgezustnden. Diese Kanten werden mit den Eingabezeichen beschriftet, die den entsprechenden bergang auslsen. Falls mehrere Eingabezeichen das System in denselben Folgezustand berfhren, werden diese Zeichen oft mit dem Oder-Zeichen verknpft. Produziert der Automat auch Ausgabezeichen, so mssen diese ebenfalls an der Kante, durch / von den Eingabezeichen getrennt, angezeigt werden.
3

Zur Eingabefolge 1A2A1 gehren die Zustandsfolge S0S1S1S3S0S1 und die Ausgabefolge nnnFn

Weil dieser Automat Zeichen aus einem Eingabealphabet in Zeichen aus einem Ausgabealphabet berfhrt, nennt man ihn auch Transduktor. Ein Transduktor wird auch endlicher Automat mit Ausgabe genannt.

Akzeptor
Der folgende Automat besitzt keine Ausgaben, dafr aber einen besonders gekennzeichneten sog. Endzustand.

Wenn man hier eine gerade, natrliche Dezimalzahl eingibt, landet man im Endzustand S1. Das Problem der fhrenden Nullen ist hier unwichtig. Endzustnde erkennt man an einem Doppelkreis. Die Eingaben 1434 und 20010 enden beide mit dem Endzustand. Man sagt, diese Zahlen werden vom Automaten akzeptiert und den zugehrigen Automaten nennt man Akzeptor. Die Menge aller Eingabefolgen, die von einem Akzeptor akzeptiert werden, nennt man die Sprache L(A) des Automaten. Dabei steht L fr language und A fr Akzeptor.

Automaten-Definitionen
Offensichtlich gibt es unterschiedliche Automaten. Die obigen beiden sind nur zwei Beispiele dafr. Leider werden die Automaten in der Fachliteratur nicht einheitlich definiert. Dieses Skript orientiert sich an den Vorgaben fr das Zentral-Abitur in NRW. - Ein Automat heit endlich, wenn das Eingabealphabet E, das Ausgabealphabet A und die Zustandsmenge S (nichtleer und) endlich sind. - Ein Automat heit deterministisch, wenn es fr jede Kombination von Eingabezeichen und Zustand nur eine mgliche Kombination von Ausgabezeichen und Folgezustand gibt. - Ein Mealy-Automat ist ein Transduktor, dessen Ausgabe von seinem Zustand und seiner Eingabe abhngt. Anschaulich bedeutet das, dass jeder Kante im Zustandsdiagramm ein Ausgabewert zugeordnet wird. Der Name geht auf George H. Mealy (1927 2010) zurck. - Ein Moore-Automat ist ein Transduktor, dessen Ausgabe nur von seinem Zustand abhngt. Anschaulich bedeutet das, dass im Zustandsdiagramm an den Kanten keine Ausgabewerte stehen. Der Name geht auf Edward F. Moore (1925-2003) zurck.

Unter einem Mealy-Automaten versteht man ein 6-Tupel M = (E, A, S, s0, u, g), welches beschrieben wird durch: E = {e1, e2 , , er} A = {a1, a2 , , am} S = {s1, s2 , , sn} s0 S u: ES S g: ES A* das endliche Eingabealphabet das endliche Ausgabealphabet die endliche Zustandsmenge den Anfangszustand die bergangsfunktion die Ausgabefunktion

Dabei versteht man unter A* die Menge aller Worte, die mit dem Ausgangsalphabet A erzeugt werden knnen, einschlielich des leeren Wortes. Alle diese Angaben sind schon im Zustandsdiagramm enthalten und mssen eigentlich nicht mehr extra herausgeschrieben werden. Wir wollen deshalb diese Formalitten nicht allzu wichtig nehmen. Allerdings sollten sie z.B. fr das Zentralabitur bekannt sein.
5

Unter einem Moore-Automaten versteht man ein 6-Tupel M = (E, A, S, s0, u, g), welches beschrieben wird durch: E = {e1, e2 , , er} A = {a1, a2 , , am} S = {s1, s2 , , sn} s0 S u: ES S g: S A* das endliche Eingabealphabet das endliche Ausgabealphabet die endliche Zustandsmenge den Anfangszustand die bergangsfunktion die Ausgabefunktion

Unter einem Akzeptor-Automaten versteht man ein 5-Tupel M = (E, S, s0, u, F), welches beschrieben wird durch: E = {e1, e2 , , er} S = {s1, s2 , , sn} s0 S u: ES S FS das endliche Eingabealphabet die endliche Zustandsmenge den Anfangszustand die bergangsfunktion eine Menge von Endzustnden

Bemerkung: die einzelnen Bezeichnerbuchstaben sind in der Literatur leider auch nicht einheitlich. Selbst im Zentral-Abitur NRW knnen die Bezeichner von Jahr zu Jahr unterschiedlich sein.

Programmierung von Automaten in DELPHI


Im Folgenden werden verschiedene Mglichkeiten gezeigt, den anfangs vorgestellten Fahrkarten-Automaten zu programmieren (Mealy-Automat).

unit MMain; {Mealy-Automat, Version mit GOTO und Label} .. var Main: TMain; ch: CHAR; Eingabealphabet: SET of CHAR; Implementation . Function TMain.LiesZeichen: CHAR; VAR wort : STRING; BEGIN Repeat wort := InputBox('', 'Bitte Zeichen eingeben', ''); // Parameter: berschrift, Aufforderungstext, voreingestellter Wert IF wort = '' THEN wort := 'X'; // Dummy IF NOT (wort[1] in Eingabealphabet) THEN Showmessage('Zeichen war nicht im Eingabealphabet') UNTIL wort[1] in Eingabealphabet; EEingabe.text := EEingabe.text + wort[1]; RESULT := wort[1] END;

procedure TMain.BtStartClick(Sender: TObject); Label s0, s1, s2, s3; begin EEingabe.Text := ''; EAusgabe.Text := ''; Eingabealphabet := ['1', '2', 'A']; s0: ch := LiesZeichen; EAusgabe.Text := ''; CASE ch of '1': GOTO s1; '2': GOTO s2; 'A': GOTO s0 END; s1: ch := LiesZeichen; CASE ch of '1': GOTO s2; '2': GOTO s3; 'A': GOTO s1 END; s2: ch := LiesZeichen; CASE ch of '1': GOTO s3; '2': GOTO s3; 'A': GOTO s2 END; s3: ch := LiesZeichen; CASE ch of '1': GOTO s3; '2': GOTO s3; 'A': BEGIN EAusgabe.Text := 'F'; GOTO s0 END END; END; {of procedure} end.

unit MMain; {Mealy-Automat, Version mit bergangs- und Ausgabefunktion} interface. Uses.. CONST Eingabealphabet = ['1','2','A']; type TZustand = (s0, s1, s2, s3); TMain = class(TForm) . function g(s: TZustand; c: CHAR): STRING; function u(s: TZustand; c: CHAR): TZustand; end; var Main: TMain; ch: CHAR; s: TZustand; implementation.. function TMain.u(s: TZustand; c: CHAR): TZustand; // bergangsfunktion BEGIN CASE s of s0: Case c of '1': u := s1; '2': u := s2; 'A': u := s0 End; s1: Case c of '1': u := s2; '2': u := s3; 'A': u := s1 End; s2: Case c of '1': u := s3; '2': u := s3; 'A': u := s2 End; s3: Case c of '1': u := s3; '2': u := s3; 'A': u := s0 End END {of Case s} END;
9

Function TMain.g(s: TZustand; c: CHAR): STRING; // Ausgabefunktion BEGIN g := ''; IF (s = s3) AND (c = 'A') THEN g := 'F' END; procedure TMain.BtStartClick(Sender: TObject); begin EEingabe.Text := ''; EAusgabe.Text := ''; s := s0; REPEAT ch := LiesZeichen; EAusgabe.Text := g(s,ch); s := u(s,ch) UNTIL 0=1 {Man knnte auch einen definierten Schluzustand einfhren und dann ....UNTIL s = Schluzustand} END; {of procedure} end. Die bergangsfunktion lsst sich sehr schn tabellarisch darstellen: 1 2 A S0 S1 S2 S0 S1 S2 S3 S1 S2 S3 S3 S2 S3 S3 S3 S0 Genauso kann man natrlich die Ausgabefunktion darstellen: 1 2 A S0 n n n S1 n n n S2 n n n S3 n n F Man kann auch beide Darstellungen zur sog. Zustandstabelle kombinieren: 1 2 A S0 S1, n S2, n S0, n S1 S2, n S3, n S1, n S2 S3, n S3, n S2, n S3 S3, n S3, n S0, F
10

Aufgaben fr Transduktoren

1. Der Fahrscheinautomat soll nun durch einen zustzlichen sog. Fehlerzustand f erweitert werden. In diesen gelangt man, wenn zu viel Geld eingeworfen wurde. Aus diesem Fehlerzustand gelangt man nicht mehr heraus. Zeichne den Zustandsgraphen dieses Mealy-Automaten und gib die bergangsfunktion in Form einer Tabelle an!

2. Was bewirkt ein Mealy-Automat mit folgender bergangstabelle? Welche Ausgaben werden zu den Eingaben 010111, 111000111 und 1100110011 geliefert? Zeichne den Zustandsgraphen!

S0 S1 S2

0 S2,0 S2,1 S2,0

1 S1,0 S1,1 S1,0

3. Entwickle einen Mealy-Automaten mit dem Eingabealphabet E = {a, b, c, d}, der bei der Ausgabe die eingegebenen Zeichen zyklisch vertauscht (Csar-Verschlsselung). Beispiel: badcadcc cbadbadd

4. Entwickle einen Mealy-Automaten mit vier Zustnden, dem Eingabealphabet E = {0, 1, 2} und dem Ausgabealphabet A = {0, 1, 2, 3, 4, n}, der zwei Ziffern addiert und die Summe ausgibt. Beispiele: 011, 224. Danach soll sich der Automat wieder im Startzustand befinden.

11

5. In einigen heute blichen Textverarbeitungsprogrammen ist ein sog. SmileyErkennungs-Automat eingebaut. Dieser Automat soll also einen Eingabezeichenstrom lesen und bis auf die Smileys unverndert ausgeben. Um unseren Automaten nicht zu kompliziert werden zu lassen, wollen wir als Eingabezeichen nur die in diesen vier Smileys vorkommenden Zeichen und zustzlich das x zulassen, das fr alle anderen Zeichen steht: E = {:, -, ), (, x} Das Ausgabealphabet wre dann A = {:, -, ), (, x, , , n} Zeichenfolge :-) :) :-( :( Smiley Hinweis: Whle fr das Ausgabefeld die Schriftart Wingdings. Dort haben die Smiley-Gesichter die Codenummern 74 (lachendes Smiley) und 76 (weinendes Smiley). Der Befehl EdAusgabe.text := CHR(74) oder auch EdAusgabe.text := J liefert dann das lachende Smiley. Das weinende Smiley entspricht dem CHR(76) bzw. dem Buchstaben L. Problem: Wingdings kennt keine normalen Zeichen. Programmiere diesen Smiley-Erkennungsautomaten (Typ Mealy)! 6. Erweitere den Smiley-Erkenner durch die Zeichenfolge :-| = Hinweis: das neutrale Smiley-Gesicht hat in Windings die Codenummer 75, das entspricht dem Buchstaben K.

7. Erstelle ein neues Delphi-Programm-Layout GUI (graphic user interface) fr Mealy-Automaten!

Der Benutzer gibt eine Zeichenfolge in das Eingabetextfeld ein. Jedes Mal, wenn der Button Takt gedrckt wird, wird ein Eingabezeichen verarbeitet.

12

8. Entwirf einen Mealy-Automaten zur Autokorrektur, der alle eingegebenen Zeichen wieder ausgibt, allerdings kontextunabhngig a) die Zeichenfolge da in dass ndert. b) die Zeichenfolge dre in der ndert. c) beide Zeichenfolgen erkennt und ndert. Hinweis: Um den Zustandsgraphen bzw. insbesondere dessen Kantenzahl klein zu halten, benutze das Zeichen x, welches stellvertretend fr alle anderen Zeichen steht.

9. Serienaddier-Automat 1. Summand 01011011 Addier-Automat 2. Summand 01010110 Da ein Automat immer nur ein einziges Zeichen interpretiert, der Serienaddierer aber zwei Binrzahlen am Eingang vorfindet, mssen wir jeweils zwei Binrziffern mithilfe eines neuen Zeichens kodieren. Wir whlen willkrlich: 00 N (Null), 01 E (Eins), 10 A (Auch Eins), 11 Z (Zwei). Also das Eingabealphabet ist {N, E, A, Z}. Das Ausgabealphabet besteht einfach aus den beiden Dualziffern {0, 1}. Die Eingabe geschieht von rechts nach links. Im obigen Beispiel wrde also zuerst ein A eingegeben, danach ein Z, dann ein E, dann ein A, dann ein Z, dann ein N usw. Bei jedem Schritt kann also der durch die Summation entstehende bertrag mit einbezogen werden. Der Automat soll unendlich lange Summanden addieren. Es braucht also keine Ende-Bedingung bercksichtigt zu werden. Daher handelt es sich um einen Mealy-Automaten. Zeichne das Zustandsdiagramm und schreibe das entsprechende Programm! 10110001 Summe

13

10. Ampelschaltung Eine Ampel hat blicherweise den Zyklus rot, rot-gelb, grn, gelb. Im Normalmodus sind alle Phasen gleich lang (beispielsweise 20 Sekunden). Als Eingangssignal gibt es das Taktzeichen T, welches automatisch erzeugt und nach jeweils exakt 20 Sekunden in den Automaten eingegeben wird. Es bewirkt einen Wechsel zur nchsten Phase. Auerdem gibt es noch die Eingabezeichen R (ab jetzt doppelt so lange Rotphase) und das Zeichen N (Wechsel zum Normalmodus). Die Eingaben R und N bewirken keinen Phasenwechsel, allerdings durchaus einen Zustandswechsel. Mehrere Eingaben von R direkt nacheinander bewirken dasselbe wie die Eingabe eines einzigen R. Analoges gilt fr N. Die Eingaben R und N knnen zu beliebigen Zeiten erfolgen. Die einzelnen Farbphasen werden aber nur durch die Eingabe von T gewechselt. Jeder Zustand ist mit allen drei Lampen der Ampel durch Kabel verbunden. Das bedeutet, dass die Ampel entsprechend leuchtet, wenn sich der Automat in einem bestimmten Zustand befindet. Zeichne das Zustandsdiagramm dieses Moore-Automaten (die Ausgabe braucht nicht eingezeichnet zu werden) und schreibe das entsprechende Programm!

11. Prfbitgenerator Entwickle einen Prfbitgenerator. Da die meisten Zeichenstze weniger als 128 Zeichen enthalten, knnen sie als siebenstellige Dualzahlen codiert werden. Rechner arbeiten aber mit Bytes. Das eigentlich berflssige achte Bit kann als ein Prfbit benutzt werden, das bei der Datenbertragung zur Fehlerermittlung benutzt wird. Eine Mglichkeit, Prfbits zu erzeugen, ist die, an das zu bertragende Zeichen jeweils eine 1 oder 0 so anzuhngen, dass das gesendete Byte immer eine gerade Anzahl von Einsen enthlt. Beschreibe einen solchen Prfbitgenerator als Mealy-Automaten, der nacheinander 7 Bits liest und dann nur das achte Prfbit ausgibt. Anschlieend geht er wieder in den Anfangszustand.

14

12. Zhlschaltung Entwickle eine Zhlschaltung modulo 3 als Moore-Automat (also einen Zhler, der bis zwei zhlen kann: 0-1-2-0-1-2-, die Zahlen entsprechen den Zhlerstand-Ausgaben. Es gibt also nur 3 Zhlerstand-Ausgaben, allerdings hat der zu konstruierende Automat mehr als 3 Zustnde). Zustzlich soll der Zhler durch die Eingabe des Resetsignals R in den Anfangszustand und damit in die Zhlerstand-Ausgabe 0 zurckgesetzt werden. Der Zhler ndert seinen Zustand, wenn a) ein Taktsignal T eintrifft. b) die Eingabe von 0 auf 1 wechselt. Gib fr beide Teilaufgaben jeweils das Eingabealphabet und das Zustandsdiagramm des Moore-Automaten an!

13. J-K-Flip-Flop Ein sog. J-K-Flip-Flop ist ein 1-Bit-Speicher fr 0 oder 1. Es kann in folgender Weise angesprochen werden: Eingabezeichen: S: eine 1 speichern (Set) R: eine 0 speichern (Reset) W: Zustand wechseln - von 0 auf 1 oder von 1 auf 0 B: Bewahren (Zustand beibehalten) Ausgabezeichen: 0 oder 1 entsprechend der gespeicherten Ziffer. Gib das Eingabealphabet und das Zustandsdiagramm des Moore-Automaten an!

14. Seriell-Parallel-Konverter Es gibt prinzipiell zwei Arten der Datenbertragung etwa zwischen Computer und Drucker: entweder werden die Daten nacheinander, also seriell, auf eine einzige Datenleitung bertragen, oder es gibt mehrere parallele Datenleitungen zwischen den Gerten, so dass alle Datenbits gleichzeitig bertragen werden. Entwickle einen 3-Bit-Seriell-Parallel-Konverter als Moore-Automaten, der eine einzige 3-Bit-Zahl einliest (das hchstwertige Bit MSB zuerst) und danach im entsprechenden Endzustand die zugehrige Dezimalzahl ausgibt. Was ndert sich, wenn man zuerst das niederwertigste Bit LSB einliest?

15

15. Einerkomplement Entwickle einen Moore-Automaten, der das 1-Komplement von Binrzahlen ausgibt. Das Ausgabealphabet sei {0, 1, Einerkomplement:} Beispiel: Eingabe 1001 Ausgabe Einerkomplement: 0110

16. Entwickle folgenden Mealy-Automaten

Hinweis: Der praktische Verwendungszweck der beschriebenen Maschine steht nicht im Vordergrund.

Bemerkung: Die Anzahl der Zustnde eines Automaten kann manchmal verkleinert, also optimiert werden. Zum Beispiel sind zwei Zustnde identisch, wenn alle ihre entsprechenden Ausgnge zu denselben Folgezustnden fhren (allerdings darf dabei im Falle von sog. Akzeptoren, die spter besprochen werden nicht einer ein Endzustand und der andere kein Endzustand sein). Dies ist schon ein spezielles Beispiel. Automaten lassen sich manchmal auch dann noch verkleinern, wenn die entsprechenden Ausgnge nicht direkt in denselben Folgezustand fhren.

16

Lsungen

1.

S0 S1 S2 S3 f

1 S1 S2 S3 f f

2 S2 S3 f f f

A S0 S1 S2 S0 f

2. 010111 001011, 111000 011100 1100110011 0110011001 Der Automat bewirkt eine

Shift Right Operation

bzw. eine Division durch 2.

3.

17

4.

8.a) Das Zeichen x steht fr alle anderen Buchstaben auer a, d, .

18

8.b) Das Zeichen x steht fr alle anderen Buchstaben auer

d, e, r

9.

10. (Die Ausgabe wird in dieser Lsung nicht angegeben)

19

11.

12.a)

12.b)

Die Reset-bergnge wurden nicht eingezeichnet.

20

13. Eingabealphabet = {B, R, S, W}

14.

15.

21

berfhrung eines Moore-in einen Mealy-Automaten


Jeder Moore-Automat lsst sich sehr leicht in einen quivalenten MealyAutomaten berfhren. Dazu muss lediglich das Ausgabesymbol des Zielzustandes mit auf den Zustandsbergang des Mealy-Automaten geschrieben werden. Betrachte dazu das folgende Beispiel:

Problematisch ist hier nur, dass der Moore-Automat schon im Startzustand eine Ausgabe hat. Das liee sich jedoch folgendermaen lsen: gib b aus und starte anschlieend den Mealy-Automaten! Die beiden obigen Automaten sind sich also sehr hnlich: Sie haben dieselbe Anzahl von Zustnden und dieselbe Anzahl von Kanten, an denen sogar dieselben Eingangselemente stehen. Lediglich die Ausgangselemente stehen beim Moore-Automaten in den Zustnden, beim Mealy-Automaten hingegen an den Knoten, die zum Zustand hinfhren. Interessante Folgerung: Angenommen, man sucht fr eine bestimmte Aufgabe einen minimalen Automaten, in dem Sinne, dass die Anzahl der Zustnde minimal ist. Dann kann es nicht sein, dass der minimale Moore-Automat kleiner ist als der minimale Mealy-Automat. Aufgabe: Gegeben sei ein Moore-Automat durch die Zustandsmenge {Z1, Z2, Z3, Z4}, das Eingangsalphabet {1, 2, 3}, das Ausgangsalphabet {a, b, c, d} und folgende bergangstabelle: 1 Z4 Z3 Z1 Z1 2 Z2 Z2 Z4 Z4 3 Z1 Z3 Z2 Z4 Fhre diesen Moore-Automaten in einen quivalenten Mealy-Automaten ber und zeichne beide Zustandsgraphen!

Z1 Z2 Z3 Z4

b c a d

22

Lsung: gegebener Moore-Automat:

quivalenter Mealy-Automat:

23

berfhrung eines Mealy-in einen Moore-Automaten

Will man z.B. obigen Mealy-Automaten in einen Moore-Automaten umwandeln, kann man in folgenden drei Schritten vorgehen: Schritt 1: Ausgabe in die Knoten schreiben Fr jede Kante wird die Ausgabe in den Zustand bertragen, auf dem die Kante endet. Hierbei stehen dann mindestens ein Ausgabewert, in der Regel sogar mehrere, verschiedene Ausgabewerte in einem Zustandsknoten.

24

Schritt 2: Knoten aufspalten und eingehende Kanten umhngen Die Zustnde werden vervielfacht, so dass jedem Zustand nur noch hchstens ein Ausgabewert zugeordnet ist; anschlieend hngt man eingehende Kanten entsprechend der Ausgabewerte auf die neuen Zustnde um.

Schritt 3: Ausgehende Kanten vervielfachen Zuletzt muss man alle ausgehenden Kanten der ursprnglichen Zustnde kopieren und an die Zustnde aus Schritt 2 anhngen.

25

Die Ausgabe des so konstruierten Moore-Automaten ist quivalent zu der des ursprnglichen Mealy-Automaten.

Bemerkung: Oft besitzt dann auch der Startzustand des Moore-Automaten eine Ausgabe. Will man dies vermeiden, so knnte man einen zustzlichen Pre-StartZustand einfhren, welcher eine leere Ausgabe besitzt.

Aufgabe 1 Gegeben sei ein Mealy-Automat durch das Eingangsalphabet {0, 1}, das Ausgangsalphabet {a, b, c, d, e, f}, die Zustandsmenge {Z1, Z2, Z3} und folgende bergangstabelle: Fhre diesen Mealy-Automaten in einen quivalenten 0 1 Z2/a Z3/b Moore-Automaten ber und zeichne beide ZustandsZ3/c Z3/d graphen! Z3/a Z1/c

Z1 Z2 Z3

Dein erhaltener Moore-Automat wird ein (bzgl. der Anzahl der Zustnde) grerer Automat sein. Andererseits kann man bekanntlich jeden Moore-Automaten in einen gleich groen Mealy-Automaten berfhren. berfhre also deinen Moore-Ergebnisautomaten, wie im letzten Kapitel beschrieben, wieder zurck in einen gleichgroen Mealy-Automaten (d.h. genau so gro wie dein Ergebnis-Moore-Automat). Ganz offensichtlich muss sich dieser nun entstandene Mealy-Automat bzgl. der Anzahl seiner Zustnde optimieren lassen; denn Ausgangspunkt all deiner Umwandlungen war ja ein Mealy-Automat mit nur 3 Zustnden. Woran kann man die Optimierungsmglichkeit im Zustandsgraphen erkennen?
26

Aufgabe 2 Gegeben sei ein Mealy-Automat durch das Eingangsalphabet {1, 2, 3}, das Ausgangsalphabet {a, b, c}, die Zustandsmenge {Z1, Z2, Z3} und folgende bergangstabelle:

Z1 Z2 Z3

1 2 3 Z1/a Z2/a Z3/c Z1/a Z2/b Z3/c Z1/c Z2/b Z3/c

Mache dasselbe wie in Aufgabe 1 !

27

Lsungen Aufgabe 1 gegebener Mealy-Automat:

quivalenter Moore-Automat:

28

quivalenter Mealy-Automat:

Man erkennt leicht, dass in diesem letzten Mealy-Automaten die vier Zustnde Z31, Z32, Z33 und Z34 praktisch identisch sind und somit durch einen einzigen Zustand ersetzt werden knnen. Denn aus jedem dieser vier Zustnde folgt eine Kante 1/c in den Zustand Z1 und eine Kante 0/a in den Zustand Z31.

29

Aufgabe 2 gegebener Mealy-Automat:

quivalenter Moore-Automat:

30

quivalenter Mealy-Automat:

Man erkennt leicht, dass in diesem letzten Mealy-Automaten die Zustnde Z11 und Z12 praktisch identisch sind und somit durch einen einzigen Zustand ersetzt werden knnen. Denn die Kanten, welche aus diesen beiden Zustnden herausfhren, haben bei gleichem Eingangselement dasselbe Ausgangselement und denselben Folgezustand. Dasselbe gilt fr die beiden Zustnde Z21 und Z22 .

31

Erkennende Automaten
Erkennende Automaten sind Automaten, die keine Ausgabe haben. Ihre Aufgabe liegt darin, festzustellen, ob die gelesene Eingabefolge korrekt ist. Man sagt dann, der Automat akzeptiert das Eingabewort. Erkennende Automaten nennt man deshalb auch Akzeptoren. Die Anzeige, ob ein Wort akzeptiert wurde oder nicht, erfolgt ber die Zustnde des Akzeptors. Zum Beispiel knnte man die Endzustnde dieses Automaten physikalisch mit einer entsprechenden Signallampe verbinden. In diesem Sinne ist ein erkennender Automat nur ein 5-Tupel M = {E, S, s0, , u}

Aufgaben 1. Entwickle einen Akzeptor, der nur Worte erkennt, welche das Teilwort DELPHI enthalten. Benutze x fr alle anderen Zeichen 2. Entwickle einen Akzeptor mit dem Eingabealphabet E = {0, 1}, der nur Worte akzeptiert, die mit 101 enden. 3. Entwickle einen Akzeptor mit dem Eingabealphabet E = {0, 1}, der nur Worte akzeptiert, die a) irgendwo die Zeichenfolge 101 enthalten. b) nirgendwo die Zeichenfolge 101 enthalten. 4. Entwickle einen Akzeptor mit zwei Zustnden und dem Eingabealphabet E = {0, 1}, der nur Worte akzeptiert, die eine gerade Anzahl von Einsen enthalten. 5. Entwickle einen Akzeptor (mit Fehlerzustand) mit dem Eingabealphabet E = {0, 1, 2, #}, der nur Zahlen akzeptiert, deren Ziffernsumme 5 betrgt. Eine Eingabe wird mit dem Doppelkreuz als Abschlusszeichen beendet. Beispiele: 01121#, 221#, 202010# 6. Entwickle einen Akzeptor mit dem Eingabealphabet E = {0, 1}, der nur Worte akzeptiert, die eine gerade Anzahl von Einsen und eine gerade Anzahl von Nullen haben.

32

7. Gesucht ist jeweils ein erkennender Automat, der nur Dualzahlen erkennt, die a) eine ungerade Anzahl von Einsen enthalten. b) mindestens entweder zwei aufeinander folgende Einsen oder zwei aufeinander folgende Nullen enthalten. c) durch 2 (mindestens zweistellig und durch 4; mindestens dreistellig und durch 8) teilbar sind. d) auf 0100 enden.

8. Was bewirkt ein Akzeptor mit folgendem Zustandsgraphen?

9. Was bewirkt ein Akzeptor mit folgendem Zustandsgraphen?

33

10. Erstelle einen Mealy-Automaten (fr Teilaufgabe a) bzw. einen Akzeptor (fr Teilaufgabe b), der nur BCD-Zahlen (Binary Coded Decimal) erkennt. Jede einzelne Ziffer einer Dezimalzahl wird (wie blich) 4-stellig binr codiert. Beispielsweise entspricht die Eingabe 1001 0100 0011 dem BCD-Code fr die Dezimalzahl 943. Es werden beliebig viele BCD-Zahlen eingegeben. Nach jeder erkannten Dezimalziffer geht der Automat in den Anfangszustand zurck. Die Binrziffernfolge 1111 bedeutet das Ende der Eingabe. Beim bergang zum Endzustand wird das Zeichen e (Ende) ausgegeben. Es existiert ein Fehlerzustand Sf, aus dem man nicht mehr herauskommt. Beim Auftreten eines Fehlers wird (beim Mealy-Automaten) das Zeichen a (fr Alarm) ausgegeben. Eine fehlerhafte Eingabe wre z.B. 1010 Erstelle diesen Automaten in 2 Versionen: a) Beim Rcksprung in den Startzustand (also nach dem Erkennen einer BCD-Zahl) wird die entsprechende Dezimalziffer ausgegeben. b) Als Akzeptor, d.h. es gibt grundstzlich keine Ausgaben.

11. Entwickle einen Automaten, der im Dezimalsystem nur natrliche Zahlen einschlielich Null akzeptiert, welche durch a) 2 b) 100 c) 4 teilbar sind.

12. Schiffe in Seenot senden die Notruffolge SOS (save our souls) aus, die im Morsealphabet aus drei Punkten, drei Strichen und wieder drei Punkten besteht. Damit ein Schiffskoch, der bei seiner Reederei Currysosse bestellt, nicht versehentlich Alarm auslst, wollen wir verlangen, da SOS-Rufe von Worttrennzeichen W(Leertaste, Satzzeichen usw.) eingerahmt werden. Notruffolge ist also W---W Entwickle einen erkennenden Automaten, der nur durch eine Notruffolge in den Endzustand gesetzt wird. Eingangsalphabet = {W, . , - }

13. Entwickle einen erkennenden Automaten fr Zahlen in Delphi-Schreibweise in mehreren Schritten! Die Problematik von fhrenden Nullen wird in dieser Aufgabe ignoriert. a) natrliche Zahlen, etwa 17583 b) ganze Zahlen mit und ohne Vorzeichen, etwa -5289, 22891, +17 c) Dezimalzahlen mit Dezimalpunkt, etwa 0.52, -17.4, +66.341, 233 d) Dezimalzahlen in Exponentendarstellung, etwa -2.5E17, 4.8E-6, +24358
34

14. Entwickle einen Akzeptor fr Delphi-Bezeichner. Diese beginnen mit einem Buchstaben und knnen auer weiteren Buchstaben noch Ziffern und den Unterstrich enthalten. Whle als Eingabealphabet E = {B, Z, _} 15. Entwickle einen Automaten, der nur Wrter akzeptiert, die mit man enden. Akzeptiert werden also Herman, Msliman und Mangaman, nicht aber command oder manamana. Benutze das Zeichen x, welches fr alle anderen Zeichen auer a, m, n stehen soll!

16. Entwickle einen Akzeptor fr korrekte mathematische Terme, die nur aus vorzeichenlosen Zahlen und Operatoren bestehen (keine Klammern und keine Variablen)! Beispiel: 582+33/11-5*2 wird akzeptiert, 23+*4 wird nicht akzeptiert.

17. Entwickle einen Akzeptor mit dem Eingabealphabet E = {0, 1}, der nur Worte akzeptiert, die an drittletzter Stelle eine 0 haben!

18. Entwickle einen Akzeptor mit dem Eingabealphabet E = {a}, der nur Worte akzeptiert, deren Lnge durch 3 oder durch 4 teilbar ist!

19. Gib das Zustandsdiagramm zu folgendem Automaten an: M = ({0, 1}, {q1, q2, q3, q4,q 5}, q1, u, {q3}), wobei die bergangsfunktion u durch folgende Tabelle gegeben ist: 0 Q1 Q1 Q2 Q3 Q4 1 Q2 Q3 Q4 Q5 Q5

Q1 Q2 Q3 Q4 Q5

35

20. Entwickle einen endlichen Automaten, der eine gltige Uhrzeit im Format hh:mm akzeptiert. Beispiele: 00:23 wird akzeptiert, 45:12 wird nicht akzeptiert, :1234 wird nicht akzeptiert. Hinweis: der Doppelpunkt ist auch ein Zeichen des Eingabealphabets.

21. Ein Logistikunternehmen verwendet intern fr Pakete die Angaben fr Lnge, Breite und Hhe in der Form 195x100x80 (ohne Maeinheit). Ist ein Paket auf mindestens einer Seite sehr lang, muss es mit einem ExtraFahrzeug transportiert werden. Ein Aufkleber auf jedem Paket wird von einem Automaten eingescannt. Der Automat bekommt eine Eingabe in der oben angegebenen Form. Entwickle einen endlichen Automaten so, dass nur die Pakete akzeptiert werden, bei denen alle Kanten echt kleiner als 200 sind. Beispiele: 50x120x80 wird akzeptiert, 200x90x90 wird nicht akzeptiert, 10x190x3 wird akzeptiert. Hinweise: Beachte, dass auch das x ein Zeichen des Eingabealphabets ist. Es wird vorausgesetzt, dass es keine fhrenden Nullen gibt.

36

Lsungen
Bemerkung: Falls nicht anders erwhnt, fhren bei allen Lsungen alle nicht gezeichneten bergnge in einen Fehlerzustand. Aufgabe 1: Die nicht eingezeichneten bergnge fhren alle in den Anfangszustand.

Aufgabe 2:

Aufgabe 3a):

Aufgabe 3b):

Aufgabe 4:

37

Aufgabe 5:

Aufgabe 6:

Aufgabe 7. a)

b)

38

c) Der folgende Automat akzeptiert mindestens dreistellige Dualzahlen, die durch 8 teilbar sind.

d)

Aufgabe 8: Der Akzeptor erkennt Dezimalzahlen, die durch 5 teilbar sind.

Aufgabe 9: Der Akzeptor erkennt Dezimalzahlen, die durch 3 teilbar sind.

39

Aufgabe 10a:

Aufgabe 10b:

40

Aufgabe 11 a)

b)

c)

Bemerkung: die obigen Zustnde V und Z sind nicht identisch, obwohl alle ihre entsprechenden Ausgnge zu denselben Folgezustnden fhren. Vergleiche dazu auch die Bemerkung auf Seite 14.

41

Aufgabe 12:

Aufgabe 13: Alle nicht eingezeichneten bergnge fhren in den Fehlerzustand.

42

Aufgabe 15: Das Zeichen x steht fr alle anderen Zeichen auer a, m, n

Aufgabe 17:

Aufgabe 18:

43

Aufgabe 19:

Aufgabe 20:

Aufgabe 21:

44

Suche nach mehreren Begriffen gleichzeitig


Oft bentigt man eine Suchmaschine, welche nach mehreren Begriffen gleichzeitig sucht. Generell gibt es zwei mgliche Flle: Fall 1: Zwei Suchworte knnen sich teilweise berlappen, wie z.B. ER, SIE, ES. Zum Beispiel wrde man in dem Eingabewort RASIERMESSER zweimal ER, einmal SIE und einmal ES finden. Fall 2: Zwei Suchworte knnen sich vollstndig berlappen, wie z.B. Delphi und Delphin oder etwa AFFE und GIRAFFE.

Die Wahl des Automatentyps (Moore-, Mealy-Automat oder Akzeptor) hngt von der konkreten Aufgabenstellung ab: - Soll der Automat in einem Endzustand bleiben, sobald er einen von mehreren Begriffen gefunden hat? In diesem Fall bietet sich ein Akzeptor an. Allerdings wrde dieser dann von den beiden Wrtern DELPHI und DELPHIN niemals das zweite Wort finden. - Soll der Automat, nachdem er einen Begriff gefunden hat, diesen durch ein entsprechendes Signal bekannt geben und sofort weiter suchen? In diesem Fall bietet sich ein Moore-Automat an.

Aufgaben Entwickle erkennende Automaten, die (egal, in welchem Kontext) gleichzeitig nach verschiedenen Begriffen suchen! Beschreibe auch, was deine Automaten konkret machen! Zeichne den Zustandsgraphen der jeweiligen Automaten nur mit den fr die bergnge wichtigen Eingabezeichen. Dies hat den Vorteil der bersichtlichkeit, allerdings den Nachteil, dass man diese Automaten nicht mehr mit dem Hilfsprogramm AtoCC simulieren kann.

1. a) ER, SIE, ES b) ELIA, ELISA, JESAJA, JEREMIA und JONA 2. a) AFFE und GIRAFFE b) HE, SHE, HERS
45

Lsungen Aufgabe 1a:

Alle nicht eingezeichneten bergnge fhren in den Anfangszustand.

Aus dem Endzustand kommt man nicht mehr heraus. Alle anderen nicht eingezeichneten bergnge fhren in den Anfangszustand.

46

Formale Sprachen

Um Informationen austauschen zu knnen, bedient man sich der Sprache. Dabei mssen Stze nach bestimmten Regeln aufgestellt werden, damit ihre Bedeutung verstanden wird. Diese Regeln werden Grammatik genannt. Natrliche Sprachen haben einen hohen Wortschatzumfang und komplexe Grammatiken. Somit kann man komplizierte Sachverhalte sprachlich ausdrcken. In technischen oder theoretischen Systemen reicht jedoch meistens eine geringe Wortzahl, um Informationen auszutauschen. Daher ist es nicht sinnvoll, sich an natrlichen Sprachen zu orientieren. Vielmehr versucht man, die Sprachen den Bedrfnissen der Systeme anzupassen. Dadurch entstehen formale Sprachen wie die mathematische Formelsprache und die Computersprachen. Formale Sprachen sind nicht nur fr den Informationsaustausch wichtig, sondern auch fr die Grundlagenforschung. So werden etwa Methoden gewonnen zur Sprach- und Zeichenerkennung bei natrlichen Sprachen. Die grammatikalischen Regeln einer Sprache bestimmen ihre Syntax. Bei Formalen Sprachen reichen hufig wenige Regeln und ein stark eingeschrnkter Wortschatz aus. Wichtig ist, dass die grammatischen Regeln eindeutig sind. Der Begriff der Formalen Sprache soll zeigen, dass es sich bei den betrachteten Sprachen nicht um natrliche oder Programmier-Sprachen handelt. In Formalen Sprachen spielt die Semantik (= Bedeutung der Stze) keine, die Syntax (= Lehre vom Satzbau; Grammatik) hingegen die zentrale Rolle. Wir richten unser Augenmerk nun nur auf die Syntax, also auf die formale Richtigkeit der Satzbildung. Deshalb spricht man von formalen Sprachen. Anzumerken ist, dass formal richtig gebildete Stze immer noch vllig unsinnig sein knnen: Der Hund fliegt kluges Wasser. Die Bedeutung der Stze, die sog. Semantik, wird von uns nicht untersucht.

47

Einfhrendes Beispiel: Lachautomaten-Akzeptor Aufgabe: Es ist ein Akzeptor zu konstruieren, der folgendes erkennt: ha!, haha!, hahaha! usw. Lsung als Zustandsgraph:

Dieser Automat akzeptiert (nur) alle Wrter der geforderten Gestalt. Er ist also in der Lage, eine wenn auch beschrnkte Sprache zu erkennen. Ein Wort w ist die Hintereinanderreihung endlich vieler Zeichen aus einem vorgegebenen Alphabet T. Dieses Alphabet wird auch als die Menge T der Terminalzeichen bezeichnet. Die Menge aller Wrter wird mit T* bezeichnet. Das leere Wort gehrt zu T*, besteht aus keinem Alphabetzeichen und wird mit bezeichnet. Beispiel fr den Lachautomaten: T = {a, h, !} T* = {, a, h, !, ah, a!, ha, h!, !a, !h, aa, hh, !!, } Eine formale Sprache L ber einem Alphabet T ist eine Teilmenge aus T*, also L T* . Die Elemente von L sind auch Wrter. Normalerweise gehrt aber nicht jedes mgliche Wort aus T* auch zur Sprache L . Wir werden in Krze ein Beispiel kennenlernen, in dem sogar ein einzelnes, bestimmtes Terminalzeichen nicht zur Sprache L gehrt. Das hngt natrlich von den Regeln ab, wie eine Sprache gebildet werden soll.

Beispiel fr den Lachautomaten: L soll die Lachsprache sein: L = {ha!, haha!, hahaha!, } = {(ha)n! | n > 0}

48

Oft ist es Auffassungssache, welches die Terminalzeichen und welches die aus diesen Terminalzeichen gebildeten Worte oder Stze sind. Beispiel: Bilden in der Morsesprache Punkt, Strich und Pause die Menge der Terminalzeichen oder besteht die Menge der Terminalzeichen aus den codierten Buchstaben? Unter einem Wort versteht man eine (eventuell auch leere) Folge von Terminalzeichen. Es ist mglich, aus den Terminalzeichen der deutschen Sprache (dazu gehren das Alphabet und die Satzzeichen) Worte zu bilden, die nicht zur deutschen Sprache gehren, z.B. Xryzs. Ebenso kann man aus richtigen deutschen Worten vllig falsche Stze bilden, z.B. Hund und baut alle sind. Wir werden deshalb aus allen mglichen Terminalzeichenfolgen diejenigen herausgreifen, die nach gewissen Regeln, den sog. Produktionsregeln, aufgebaut sind und damit die Sprache L bilden.

Aufgaben 1. Man gebe einen Automaten an, der genau die Sprache L = {a bn c | n 0} akzeptiert. Dabei versteht man unter b0 das leere Wort . 2. Man gebe einen Automaten an, der ein Wort einer Sprache ber dem Alphabet {a, b} genau dann akzeptiert, wenn die Differenz der Anzahl der Elemente a und der Anzahl der Elemente b in diesem Wort durch vier teilbar ist.

49

Lsungen

1.

2. Die Zustnde entsprechen den Werten (Anzahl a - Anzahl b) MOD 4

50

Im Folgenden wird nun versucht, formale Sprachen ohne Zuhilfenahme von Automaten zu beschreiben. Beispiel 1: Umgangssprachliche Stze Es werden folgende Stze als kleiner Ausschnitt der deutschen Sprache untersucht: "Die Katze jagt", "Das Buch frisst das Heu", "Susanne liest das Buch". Grammatikalisch gesehen haben diese Stze die Nominalphrase und die Verbalphrase gemeinsam. Die Nominalphrase ist daran erkennbar, dass sie ein Nomen oder ein Pronomen enthlt. Die Verbalphrase ergnzt die Nominalphrase zu einem vollstndigen Satz. In Form einer Grammatikregel wird der Sachverhalt folgendermaen ausgedrckt: (1) <Satz> <Nominalphrase> <Verbalphrase> Der Pfeil wird als besteht aus gelesen. Die Nominalphrasen dieser Stze bestehen aus Eigennamen oder einem Substantiv mit zugehrigem Artikel; dies formalisiert folgende Grammatikregel: (2.1) <Nominalphrase> <Eigenname> (2.2) <Nominalphrase> <Artikel> <Substantiv> Die Verbalphrase besteht entweder aus einem Verb oder aus einem Verb mit Akkusativobjekt; letzteres ist wieder eine Nominalphrase: (3.1) <Verbalphrase> <Verb> (3.2) <Verbalphrase> <Verb><Nominalphrase> Auerdem ergibt sich ein kleines Lexikon: <Eigenname> Susanne <Substantiv> Katze | Pferd | Heu | Buch <Artikel> der | die | das <Verb> jagt | frit | liest
51

Die Gesamtheit der Ersetzungsregeln (1) (3) heit Grammatik. Anwendung: Es soll der Satz Susanne liest hergeleitet werden! Die Herleitung eines Satzes geschieht dadurch, dass jeweils der linke Teil einer Regel durch deren rechten Teil ersetzt wird, wobei stets mit <Satz> zu beginnen ist: <Satz> <Nominalphrase> <Verbalphrase> <Eigenname> <Verbalphrase> Susanne <Verbalphrase> Susanne liest nach Regel (1) nach Regel (2.1) Lexikon Lexikon

Den Pfeil liest man als wird ersetzt durch. Der zweite Beispielsatz oben macht deutlich, dass sich auch semantisch sinnlose Stze herleiten lassen. Mchte man sicherstellen, dass eine Grammatik nur sinnvolle Stze erzeugt, muss man zustzlich semantische Regeln festlegen.

Beispiel 2: Wohlgeformte Klammerterme Wenn man in einem Rechenausdruck smtliche Buchstaben und Zahlen weglsst, so erhlt man Klammerterme der Form (); (()()) oder (((())())). Ein solcher Term muss gleich viele ffnende wie schlieende Klammern besitzen. Die Grammatikregeln zur Erzeugung wohlgeformter Klammerterme lauten: (1) S ( ) (2) S (S) (3) S SS

Mit (3) kann man Klammerterme aneinanderreihen, mit (2) eine rekursive Verschachtelung vornehmen und mit (1) schlielich den Erzeugungsvorgang abbrechen. Vereinfacht lassen sich die drei Regeln auch so darstellen S ( ) | (S) | SS Die Klammerfolge ( ( ) ) ( ( ) ( ) ) kann so abgeleitet werden: S SS ( S ) S ( ( ) ) ( S ) ( ( ) ) ( S S ) ( ( ) ) ( ( ) S ) ( ( ) ) ( ( ) ( ) )

52

In den Grammatikregeln der beiden Beispiele kommen zwei Arten von Zeichen vor: Terminalzeichen : endgltige Zeichen; das sind Zeichen, die zum Alphabet gehren; in Beispiel 2 sind es die Klammern. Nicht-Terminalzeichen : vorlufige Zeichen; diese treten innerhalb einer Herleitung, aber nicht in einer endgltig abgeleiteten Zeichenfolge auf; im Beispiel 2 ist es das Zeichen S.

Im Jahre 1959 stellte Noam Chomsky ein Beschreibungssystem fr formale Sprachen vor, mit dem wir uns in Zukunft beschftigen werden. Man geht von einem einzelnen Startsymbol S aus. Dieses ist kein Terminalzeichen. Es muss ersetzt werden und gehrt damit zur Menge N der Nichtterminalsymbole. Die gngigen Notationen von formalen Sprachen verwenden fr die Nichtterminalsymbole in der Regel Grobuchstaben. Das Startsymbol wird durch eine Symbolfolge ersetzt, die aus Terminalsymbolen sowie weiteren Nichtterminalsymbolen bestehen kann, die wiederum zu ersetzen sind. Solange das neue Wort also Nichtterminalsymbole enthlt, ist es noch nicht fertig. Die Ersetzungen erfolgen nach Regeln, die insgesamt ein Regelsystem R bilden. Regeln knnen in der Form Nichtterminalsymbol Symbolfolge aufgeschrieben werden. Die Grammatik einer formalen Sprache wird damit durch ein 4-Tupel festgelegt: G = (T, N, S, R) Bemerkung: Das Regelsystem R wird oft auch mit dem Buchstaben P (Produktionsregeln) abgekrzt. Die Reihenfolge in dem 4-Tupel wird in der Literatur unterschiedlich gewhlt.

Formale Sprache: Wenn T ein Alphabet, also eine endliche Menge von Zeichen ist, dann ist T* die Menge aller endlichen Zeichenfolgen ber T (einschlielich der leeren Zeichenfolge). Jede Teilmenge L von T* heit Formale Sprache. Wenn G eine Grammatik mit T als Menge der Terminalzeichen ist, so ist L(G) die Menge aller Zeichenfolgen ber T, welche mit Hilfe der Ersetzungsregeln aus G erstellt werden knnen. L(G) ist also die von G erzeugte formale Sprache.

53

Eine formale Grammatik erlaubt es, zu unterscheiden, ob ein Wort dieser Grammatik folgt, also ob es gltig ist. Die Menge aller gltigen Worte nennt man die Sprache dieser Grammatik L(G). Umgekehrt erlaubt es eine Grammatik auch, alle Wrter ihrer Sprache zu erzeugen.

Beispiel 3: Ausgewogene Bitmuster ber den Terminalzeichen der Menge {0;1} wird eine Sprache betrachtet, bei der jedes Wort gleich viele Einsen wie Nullen enthalten muss. Die Worte 01, 10, 001011 oder 110010 gehren dazu. Als Nicht-Terminalzeichen dienen S, A und B, wobei S das Startzeichen ist. Dabei sollen aus A alle Wrter herleitbar sein, die genau eine Eins mehr als Nullen enthalten und aus B soll man alle Wrter erhalten, die genau eine 0 mehr als Einsen besitzen. Das fhrt zu folgenden Grammatikregeln R : (1) S 0A | 1B (2) A 1| 1S| 0AA (3) B 0| 0S| 1BB Das Wort 110010 kann dann wie folgt abgeleitet werden: S 1B 11BB 11B0 110S01100A0 110010 Alternativ knnte man auch folgende Ableitung benutzen: S 1B 11BB 110B 1100S11001B 110010 Es kann also vorkommen, dass bzgl. einer formalen Grammatik fr ein Wort mehrere unterschiedliche Ableitungen existieren. Definitionen: Eine Grammatik heit eindeutig, wenn es zu jedem Wort aus der erzeugten Sprache nur eine Ableitung gibt. Eine Ableitung heit Linksableitung, wenn in jedem Schritt nur das am weitesten links stehende Nichtterminalsymbol ersetzt wird.

Man kann durch kurze berlegung einsehen, dass jedes mit diesen Regeln erzeugte Wort wirklich gleich viele Einsen und Nullen besitzt. Es fehlt hier allerdings der Beweis, dass sich auch jedes Wort mit gleich vielen Einsen und Nullen mit diesen Regeln erzeugen lsst.

54

Bemerkung: Die Sprache der ausgewogenen Bitmuster lsst sich auch mit den folgenden Produktionsregeln P herleiten (ohne Beweis): S 01 | 10 | SS | 0S1 | 1S0 Beispiel: S 1S0 1 SS 0 1S 01 01 10 010 oder alternativ: S SS 1S0 S 1 10 0S1100 10

Folgerung:

Es gibt also Sprachen, die man mit vllig unterschiedlichen Regeln, und damit mit unterschiedlichen Grammatiken erzeugen kann. In diesem Zusammenhang stellt sich gleich die Frage: Wie findet man fr eine vorgegebene Sprache eine minimale Grammatik?

Definition: Zwei Grammatiken heien quivalent, wenn sie die gleiche formale Sprache erzeugen.

Bemerkung: Man kann eine Ableitungsregel der Form S zulassen, wenn auch das leere Wort zur Sprache gehren soll. Hierbei ist S das Startsymbol. Eine Ableitungsregel der Form A (wobei A nicht das Startsymbol sein soll) wird in der Literatur einerseits oft benutzt, andererseits aber auch genauso oft abgelehnt.

Aufgabe:

Leite fr die Sprache der ausgewogenen Bitmuster jeweils die beiden Worte 000111 und 111000 ab, einmal mit den Grammatikregeln R und einmal mit den Grammatikregeln P !

55

Als Beispiel betrachten wir die Sprache der natrlichen Zahlen. T = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, N = {S}, weitere Nichtterminalsymbole bentigen wir hier nicht. R = {S1, S2, S3, S4, S5, S6, S7, S8, S9} oder krzer geschrieben: {S1| 2| 3| 4| 5| 6| 7| 8| 9} Fr grere Zahlen bentigen wir noch weitere Regeln: {SS0| S1| S2| S3| S4| S5| S6| S7| S8| S9} Interessant ist, dass das Startsymbol auch auf der rechten Seite der Ersetzungsregeln auftaucht. Man erhlt rekursive Regeln.

Die Sprache der natrlichen Zahlen lsst sich damit durch folgende Grammatik beschreiben: Gnatrliche Zahlen = (T, N, S, R) mit T = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} N = {S} R = {S1| 2| 3| 4| 5| 6| 7| 8| 9|S0| S1| S2| S3| S4| S5| S6| S7| S8| S9} Die Zahl 123 z.B. entsteht durch folgende Ableitung: SS3S23123 Interessant: Ein Terminalsymbol (im obigen Beispiel die Null) muss nicht unbedingt zur Sprache gehren! Mach dir klar, dass sich die Null nicht aus dem Startsymbol ableiten lsst! Eine Sprache lsst sich durchaus durch unterschiedliche Grammatiken beschreiben. Die gerade beschriebene Grammatik fr die Sprache der natrlichen Zahlen ist eine sog. linksregulre Sprache. Einige Seiten weiter werden wir eine rechtsregulre Sprache fr die natrlichen Zahlen kennenlernen.

Ein wichtiges Thema in der theoretischen Informatik ist das sog. Wortproblem: Gibt es einen Algorithmus, der feststellt, ob ein beliebiges Wort zu einer bestimmten Sprache gehrt oder nicht? Die Antwort auf diese Frage hngt davon ab, wie schwierig die betreffende formale Sprache ist bzw. welche Produktionsregeln es fr diese Sprache gibt.

56

Sprachklassen Die formalen Sprachen lassen sich anhand des Aufbaus der Produktionsregeln in unterschiedliche Sprachklassen einordnen, von denen wir hier drei auffhren: In kontextsensitiven Sprachen drfen Ersetzungen nur vorgenommen werden, wenn das Nichtterminalsymbol in einem bestimmten Kontext auftaucht. Formal lt sich das so schreiben: A wobei A ein Nichtterminalsymbol ist und , und Wrter bestehend aus Terminalen und Nichtterminalen sind. Dabei bilden und den Kontext, in dem die Ersetzung vorgenommen werden darf. Dabei knnen und auch das leere Wort darstellen. Daher ist die Klasse der kontextsensitiven Sprachen eine Oberklasse der kontextfreien Sprachen.

In kontextfreien Sprachen drfen Ersetzungen ohne Bercksichtigung des Umfeldes vorgenommen werden, also z.B. A wobei A ein Nichtterminalsymbol ist und ein aus Terminalen und Nichtterminalen bestehendes Wort ist . Fr die Symbolfolge gelten keine weiteren Einschrnkungen. Ein Nichtterminalsymbol kann also insbesondere durch eine beliebig lange Folge von Nichtterminal- und Terminalsymbolen ersetzt werden.

In regulren Sprachen darf das Nichtterminalsymbol entweder durch das leere Wort oder durch ein einziges Terminalsymbol oder durch eine Folge aus einem Nichtterminal- und einem Terminalsymbol ersetzt werden. Steht das Nichtterminalsymbol in dieser Folge immer links, so spricht man von einer linksregulren Sprache. Alle Regeln einer linksregulren Sprache sind also von einer der folgenden Formen: A oder A a oder A Ba In der Literatur ist die Definition einer regulren Sprache nicht ganz eindeutig. Oft fehlt auch in der Definition die Regel A . Das ist fr die Sprachklasse aber unwichtig. Natrlich entscheidet das Vorhandensein der Regel S , ob das leere Wort zur Sprache gehrt oder nicht. Ansonsten beeinflusst das Vorhandensein oder Fehlen dieser Regel nur die Anzahl der Produktionsregeln.

57

Satz: Jede regulre Sprache lsst sich auch als linksregulre Sprache darstellen. Jede regulre Sprache lsst sich auch als rechtsregulre Sprache darstellen. (ohne Beweis) Sowohl die Sprache der wohlgeformten Klammerausdrcke als auch die Sprache der ausgewogenen Bitmuster sind nicht regulr. (Da z.B. die Anzahl der ffnenden Klammern beliebig gro sein kann, msste ein entsprechender Akzeptor beliebig weit zhlen knnen). Wenn eine Programmiersprache beliebig viele Klammern zulsst, kann sie nicht regulr sein.

Satz: Die zu deterministischen endlichen Akzeptoren gehrenden Sprachen sind genau die regulren Sprachen. Wir werden diesen Satz in Krze dadurch beweisen, indem wir einerseits fr einen beliebigen endlichen Akzeptor eine zugehrige regulre Grammatik ermitteln und andererseits fr jede beliebige regulre Sprache einen zugehrigen endlichen Akzeptor ermitteln.

Regulre Ausdrcke, also Worte einer regulren Sprache, lassen sich leicht beschreiben, wenn man folgende Kurzschreibweise benutzt: ab a|b a* (ab)* aa* (a*b*)* das Zeichen a gefolgt vom Zeichen b das Zeichen a oder das Zeichen b das Zeichen a beliebig oft (auch keinmal) die Zeichenfolge ab beliebig oft beliebig viele aber mindestens ein a beliebig viele a und b in beliebiger Reihenfolge

Aufgabe: Gib zu folgenden regulren Sprachen ber dem Alphabet {0, 1} passende regulre Ausdrcke in obiger Kurzschreibweise an: a) {w| w beginnt mit 1 und endet mit 0} b) {w| w enthlt mindestens 3 Einsen} c) {w| w enthlt den Teilstring 0101 }

58

Lsung a) 1(0*1*)*0 b) 0*10*10*1(0*1*)* c) (0*1*)*0101(0*1*)*

Eine Sprache L sei gegeben durch T = {a, b}, N = {S} und durch die Produktionen P = {S | ab | SS} Es ist leicht zu sehen, dass L = {, ab, abab, ababab, } Eine quivalente regulre Grammatik fr diese Sprache L wre gegeben durch T = {a, b}, N = {S, A} und durch die Produktionen R = {S aA | ; A bS} Diese Sprache L ist also rechtsregulr.

Bemerkung: Es ist also in manchen Fllen mglich, zu einer nicht-regulren Grammatik eine quivalente regulre Grammatik zu finden.

59

Aufgaben

1. Finde eine Grammatik fr die Menge aller Bezeichner einer Quellsprache. Bezeichner mssen mit einem Buchstaben beginnen. Es sei T = {a, b, ., z, 0, 1, , 9} Gib eine Ableitung fr den Bezeichner gk132 an!

Aufgaben zu den kontextfreien Sprachen 2. Konstruiere eine nicht-regulre Grammatik, welche die Sprache L = {anbn | n} erzeugt. 3. Eine Satzgliederungsgrammatik hat folgende Regeln (Nichtterminalzeichen sind durch spitze Klammern gekennzeichnet): <Satz> <Nominalphrase> <Verbalphrase> <Nominalphrase> <Eigenname> | <Artikel> <Substantiv> <Verbalphrase> <Verb> | <Verb> <Nominalphrase> <Eigenname> Anne | Bernd | Carla <Substantiv> Katze | Pferd | Heu | Buch | Bild | Zimmer <Artikel> der | die | das <Verb> jagt | frisst | liest | betritt Leite die Stze Anne liest und das Buch jagt die Katze ab! 4. Konstruiere eine mglichst einfache Grammatik, welche alle Terme mit Klammern, einstelligen Dezimalzahlen und den vier Grundrechenarten erzeugt. Beispiel: 7+(3+4)*(5-(2+(3+4)))*(6-(8:4)) 5. Finde mit der Grammatik aus Aufgabe 4 zwei echt verschiedene Ableitungen fr den Term 3+4*5 Zeichne auch die zugehrigen Syntaxbume! 6. Ergnze die Grammatik aus Aufgabe 3 durch folgende Zusatzregeln: <Nominalphrase> <Artikel> <Substantiv> <Prpositionalphrase> <Verbalphrase> <Verb> <Nominalphrase> <Prpositionalphrase> <Prpositionalphrase> <Prposition> <Nominalphrase> <Prposition> mit | in | auf | unter <Artikel> dem | den Leite nun den Satz Anne betritt das Zimmer mit dem Bild mit zwei verschiedenen Syntaxbumen ab! Was bedeuten die beiden Varianten?
60

7. Gegeben ist die Grammatik G = {T, N, S, P}. Dabei gilt: T = {a, b, p, q, IF, THEN, ELSE}, wobei a und b Anweisungen und p, q Bedingungen darstellen sollen. N = {S, B}, wobei S stellvertretend fr Anweisung und B stellvertretend fr Bedingung steht. P = {Sa| b| IF B THEN S| IF B THEN S ELSE S; Bp| q} Zeige, dass die Anweisung IF p THEN IF q THEN a ELSE b zwei verschiedene Syntaxbume besitzt! Wie sind diese zu interpretieren? 8. Gib zu den Beispielen aus den Aufgaben 4, 6 und 7 jeweils eindeutige Grammatiken an! 9. Betrachte folgende Grammatik G: ({a, b}, {S, T, X}, S, P), wobei P = { SaTb| bTa; TXTX| X| ; Xa| b} a) Gib 3 Wrter aus L(G) an! b) Gib 3 Wrter aus {a, b}*\L(G) an! 10. Die nachfolgende Grammatik G: ({a, +, *, (, )}, {E, T, F}, E, R), mit R = {EE + T| T; TT*F| F; F(E)| a} beschreibt eine einfache Form arithmetischer Ausdrcke. Das Terminalsymbol a steht dabei fr eine beliebige Konstante, E fr Expression (Ausdruck), T fr Term und F fr Faktor. Gib fr a*a+a+(a) eine Linksableitung und den Ableitungsbaum an!

61

Lsungen

1. G = (T, N, S, R) T = {a, b, ., z, 0, 1, , 9} N = {S, A} R = {A | 0A | 1A | | 9A | aA | bA | | zA ; gk132:

S aA | bA | | zA}

S gA gkA gk1A gk13A gk132A gk132

2. G = (T, N, S, R) N = {S} R = {S ab | aSb} 3. Anne liest: <Satz> <Nominalform> <Verbalphrase> <Eigenname> <Verbalphrase> Anne <Verbalphrase> Anne <Verb> Anne liest das Buch jagt die Katze: <Satz> <Nominalform> <Verbalphrase> <Artikel> <Substantiv> <Verbalphrase> das Buch <Verb> <Nominalphrase> das Buch jagt <Artikel> <Substantiv> das Buch jagt die Katze

4. G = (T, N, S, R) T = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, -, *, :, (, )} N = {S, Z} R = {S (S) | Z | S+S | S-S | S*S | S:S ; Z 0| 1| 2| | 9}

62

5. Zunchst legt man im kfG-Editor (kfG = kontextfreie Grammatik) im Men Sprache das Alphabet fest:

Danach gibt man im Men Grammatik die Produktionsregeln ein:

Der Pfeil wird einfach durch ein Minuszeichen, gefolgt von einem Grerzeichen, dargestellt. Terminalsymbole werden in einfachen Hochkommata geschrieben. Sie erscheinen schwarz. Anschlieend kann man im Menue Ableitung ein Wort eingeben. Es wird in derselben Zeile angezeigt, wie viele unterschiedliche Ableitungen es gibt (im Beispiel signalisiert das die rote 2). Unter diesen kann man auswhlen.

63

Der andere Syntaxbaum sieht so aus:

64

7.

8. Eindeutige Lsungen zu Aufgabe 4: P = {T S| S + S| S S; S F| F * F| F : F| (T); F 0|1|2|3|4||5|6|7|8|9} Dabei ist T das Startsymbol. T bedeutet Term, S Summand und F Faktor

Alternative Mglichkeit: P = {T T1| T2; T1 Z| ( T )| T1 R1 T1; T2 Z| ( T2 )| T R2 T; R1 *| : ; R2 +| - }

65

Eindeutige Lsungen zu Aufgabe 7: kontextsensitive Lsung: P = {S a|b|IF B THEN S; THEN S THEN S ELSE S; B p|q} Damit folgt die eindeutige Linksableitung: S IF B THEN S IF p THEN S IF p THEN IF B THEN S IF p THEN IF q THEN S ELSE S IF p THEN IF q THEN a ELSE S IF p THEN IF q THEN a ELSE b

kontextfreie Lsung: P = {S a| b| IF B THEN S| IF B THEN C ELSE S; B p| q; C a| b| IF B THEN C ELSE S } Damit folgt die eindeutige Ableitung als Syntaxbaum:

9. Bei allen Worten aus L(G) sind Anfangs- und Endbuchstabe unterschiedlich. Auerdem gehrt das leere Wort nicht zu L(G).

66

Ermittlung der Sprache eines Akzeptors


Folgende Gren bei endlichen Automaten und regulren Grammatiken entsprechen sich gegenseitig: Endlicher Automat Eingabealphabet Zustandsmenge Anfangszustand berfhrungsfunktion Regulre Grammatik Terminalsymbole Nichtterminalsymbole Startsymbol Produktionsregeln

Mit nachfolgenden Regeln lsst sich aus einem endlichen Automaten eine rechtsregulre Grammatik erzeugen. Aus Vereinfachungsgrnden werden hier fr die Elemente der Zustandsmenge dieselben Namen benutzt wie fr die Elemente der Nichtterminalsymbole.

{A aB}

{C a | aD} alternativ: {CaD; D }

{E a | aG; G a | b | aG | bG} alternativ: {E aG; G | aG | bG} {S }

Aus bergngen in einen Fehlerzustand folgen natrlich keine Produktionsregeln!

Aufgabe: Ermittle eine zum nebenstehenden Automaten passende Grammatik!

67

Der folgende Akzeptor erkennt offensichtlich regulre Ausdrcke vom Typ (aa*bb*)*c . Die zugehrige Sprache heie Labc . Alle nicht eingezeichneten bergnge enden im Fehlerzustand F. Nun soll eine zu diesem Automaten passende rechtsregulre Grammatik G = (T, N, S, R) hergeleitet werden. Das Startsymbol S entspricht dem Startzustand S. Die Menge der Terminalsymbole sind die bergangszeichen, also das Eingangsalphabet des Automaten: T = {a, b, c} Die Menge der Nichtterminalsymbole sind die Zustandsbezeichnungen des Automaten, also N = {S, A, B, C} Die Produktionsregeln geben an, wie man von einem Zustand zum nchsten kommt. Sie entsprechen also der bergangsfunktion des Automaten. bergnge in einen mglichen Fehlerzustand liefern dabei natrlich keine Produktionsregeln fr die Sprache des Akzeptors. Die Produktionsregeln kann man auf zwei Arten formulieren: mit bergngen zum leeren Wort oder ohne bergnge zum leeren Wort . Fr das obige Beispiel gilt: Regeln mit bergngen zum leeren Wort : R = {SaA| cC; AaA| bB; BbB| aA| cC; C } Fr Endzustnde gibt es immer die zustzliche Regel: Endzustand Regeln ohne bergnge zum leeren Wort : P = {SaA| cC| c; AaA| bB; BbB| aA| cC| c} In diesem Fall gibt es bei jedem bergang in einen Endzustand noch die zustzliche Regel mit einem bergang zu einem Terminalsymbol. Weil es hier (in dieser Aufgabe) keinen erlaubten bergang mehr aus dem Endzustand heraus gibt, sind (bei dieser Regel ohne bergang zum leeren Wort ) auch die Regeln ScC und BcC berflssig. Es gengt also: P = {SaA| c; AaA| bB; BbB| aA| c}

68

Wenn man untersuchen will, ob das Wort abbbabc von obiger Grammatik erzeugt werden kann, so gibt man die Folge der zugehrigen Produktionen an. Dabei wird immer ein Zustand durch eine Kombination aus Zeichen und Zustand ersetzt. SaAabBabbBabbbBabbbaAabbbabBabbbabcCabbbabc Obige Folge nennt man auch eine Ableitung oder Ableitungsfolge fr das Wort abbbabc. Gehrt ein Wort zur Sprache des (deterministischen) Automaten, so gibt es natrlich nur einen einzigen Weg durch den Zustandsgraphen, um dieses Wort zu erzeugen. Wenn man also, wie oben beschrieben, aus einem endlichen Automaten eine rechtsregulre Grammatik erzeugt, so erhlt man immer eine eindeutige Grammatik!

Beispiel: Es sei L die Sprache aller Binrausdrcke mit ungerader Paritt, d.h. die Anzahl der Einsen ist ungerade.

Produktionsregeln mit bergang zum leeren Wort : R = {S0S| 1U; U1S| 0U| } Produktionsregeln ohne bergang zum leeren Wort : P = {S0S| 1U| 1; U1S| 0U| 0}

69

Im Folgenden wird eine rechtsregulre Grammatik G = (T, N, S, R) fr die Menge der natrlichen Zahlen = {1, 2, 3, }bestimmt, indem man zunchst einen zugehrigen endlichen Automaten erstellt.

Das Startsymbol S entspricht dem Startzustand S. T = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} N = {S, A} R = {S1A|2A|3A|4A|5A|6A|7A|8A|9A, A|0A|1A|2A|3A|4A|5A|6A|7A|8A|9A} bzw. ohne bergnge: R = {S1| 2| 3| 4| 5| 6| 7| 8| 9| 1A|2A|3A|4A|5A|6A|7A|8A|9A, A0|1| 2| 3| 4| 5| 6| 7| 8| 9|0A|1A|2A|3A|4A|5A|6A|7A|8A|9A}

Beachte, dass in diesem Beispiel aus dem Endzustand heraus durchaus weitere, sinnvolle bergnge erfolgen knnen! Das wird bei den Produktionsregeln bercksichtigt. Eine Ableitung fr die Beispielszahl 203 wre: S2A20A203A203 Zustnde und bergnge, die auf keinem Weg zum Endzustand vorkommen, brauchen natrlich auch fr die Produktionsregeln nicht bercksichtigt zu werden. Bemerkung: auf der Seite 56 wurde eine linksregulre Grammatik fr die Menge der natrlichen Zahlen angegeben.

70

Aufgaben

1. Untersuche, ob es fr die auf Seite 68 dargestellte Sprache Labc Ableitungen gibt fr die Worte a) abbac b) aaabbbc c) abc d) bbabc

2. Gib eine rechtsregulre Grammatik G zu folgendem Automaten an. Prfe durch Angabe der Ableitungen, ob die Worte 23540 und 123456 von der Grammatik erzeugt werden knnen.

3. Gib eine rechtsregulre Grammatik G zu folgendem Automaten an. Prfe durch Angabe der Ableitungen, ob die Worte 23540 und 123456 von der Grammatik erzeugt werden knnen.

71

4. Ein Computerpasswort soll aus mindestens 3 Zeichen bestehen, bei denen mindestens eine Ziffer (0 oder 1) und ein Buchstabe (a oder b) vorkommen soll. Entwickle den zugehrigen Akzeptor mit dem Eingabealphabet E = {0, 1, a, b}und einer dazu passenden rechtsregulren Grammatik. 5. Zeichne das Zustandsdiagramm eines Automaten, der ganze Zahlen akzeptiert, also z.B. -23, 13, +45, 0. Fhrende Nullen sollen nicht akzeptiert werden. Gib anschlieend eine zugehrige rechtsregulre Grammatik an! 6. a) Ein Blumenautomat soll 5 in 1- oder 2-Stcken akzeptieren. Mgliche Eingaben wren also z.B. 1121 oder 212. Entwirf einen Automaten fr diese Sprache (nur Zustandsgraph)! b) Entwickle aus diesem Akzeptor eine regulre Grammatik G fr die akzeptierte Sprache! c) Wenn der Automat auch 10-Cent-Stcke akzeptiert, wird die Sprache durch die vielen mglichen Reihenfolgen der Eingaben deutlich komplexer. Entwirf eine kontextsensitive, aber nicht kontextfreie Grammatik fr diese Sprache. d) Begrnde, ob die in Teilaufgabe c beschriebene Sprache auch kontextfrei oder sogar regulr ist! 7. Gib fr die Sprache L = {w{0, 1}*| w enthlt mindestens 3 Einsen} eine Grammatik an! 8. Es soll eine regulre Sprache entworfen werden, die aus Bitfolgen besteht, welche mindestens 2 Bit lang sind und sowohl mit einer 1 beginnen als auch mit einer 1 enden. a) Entwirf den Zustandsgraphen zu dem entsprechenden Automaten! b) Erlutere die Bedeutung der Zustnde dieses Automaten! c) Gib die zugehrige Grammatik an! d) Leite aus dem Startsymbol dieser Grammatik die Nachricht 1101 ab! 9. Es sei L={w{a,b,c,,z}* | w=das oder w=was} Gib den Zustandsgraphen eines passenden endlichen Akzeptors an und leite damit auch eine zugehrige Grammatik her! 10. Schreibe eine Grammatik, die nur gerade Binrzahlen produziert!

72

Lsungen
1.a) fr das Wort abbac gibt es keine Ableitung. Begrndung: SaAabBabbBabbaA weiteres Ableiten ist nicht mglich. b) Ableitung fr aaabbbc: SaAaaAaaaAaaabBaaabbBaaabbbBaaabbbcCaaabbbc c) Ableitung fr abc: SaAabBabcCabc d) es gibt keine Ableitung fr das Wort bbabc

2.

G = (T, N, S, R) mit S=A T = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} N = {A, B} R = {A0B|5B|1A|2A|3A|4A|6A|7A|8A|9A; B|0B|5B|1A|2A|3A|4A|6A|7A|8A|9A} Ableitung fr 23540: A2A23A235B2354A23540B23540 Es gibt keine Ableitung fr 123456: A1A12A123A1234A12345B123456A Bemerkung: Die Terminalsymbole 1,2,3,4,6,7,8,9 gehren nicht zur Sprache.

3.

G = (T, N, S, R) mit S=D T = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} N = {D, E, Z} R = {D|0D|3D|6D|9D|1E|4E|7E|2Z|5Z|8Z; E0E|3E|6E|9E|1Z|4Z|7Z|2D|5D|8D; Z0Z|3Z|6Z|9Z|1D|4D|7D|2E|5E|8E} Es gibt keine Ableitung fr 23540: D2Z23Z235E2354Z23540Z Ableitung fr 123456: D1E12D123D1234E12345D123456D123456 Bemerkung: Das leere Wort gehrt zur Sprache.
73

4.

G = (T, N, S, R) mit S=S T = {0, 1, a, b} N = {S, C, D, E, F, G, H} R = {S0C|1C|aF|bF, C0D|1D|aH|bH, D0D|1D|aE|bE, F0H|1H|aG|bG, G0E|1E|aG|bG, H0E|1E|aE|bE, E|0E|1E|aE|bE}

5.

Alle nicht eingezeichneten bergnge fhren in den Fehlerzustand. G = (T, N, S, R) mit S=S T = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, -} N = {S, V, Z} R = {S+V|-V|1|2|3|4|5|6|7|8|9|1Z|2Z|3Z|4Z|5Z|6Z|7Z|8Z|9Z, V1|2|3|4|5|6|7|8|9|1Z|2Z|3Z|4Z|5Z|6Z|7Z|8Z|9Z , Z|0Z|1Z|2Z|3Z|4Z|5Z|6Z|7Z|8Z|9Z }
74

6. a)

b) G T N R

= = = =

{ N, T, S, R} {1, 2, c} {S, A, B, C, D, E} {S1A| 2B; A1B|2C; B1C| 2D; C1D| 2; D1} {N, T, S, R} {1, 2, c} {S, E, Z, V} {S EV| VE; V EZE| ZZ; Z EE| 2; E 1|cccccccccc; cE Ec cZ Zc }

c) G T N R

= = = =

d) Fr die in Teilaufgabe c beschriebene Sprache knnte man einen endlichen deterministischen Akzeptor entwickeln. Dieser msste fr jeden mglichen, eingezahlten Geldbetrag einen Zustand besitzen. Das wren 52 Zustnde (entsprechend 0, 10, 20, 30,490, 500 Cent und noch ein Fehlerzustand fr zu viel eingezahltes Geld). Die zugehrige Grammatik bese entsprechend viele Produktionsregeln, aber sie wre kontextfrei, sogar rechtsregulr. Die zugehrige Sprache ist deshalb auch regulr.

75

7.

G T N R

= = = =

{N, T, S, R} {0, 1} {S, A, B, C} {S 0S| 1A; A 0A| 1B; B 0B| 1C; C 0C| 1C|

8. a)

c) G T N R

= = = =

{N, T, S, R} {0, 1} {S, A, B} {S 1A; A 0A| 1B; B 0A| 1B;|

d) Ableitung des Wortes 1101: S 1A 11B 110A 1101B 1101

76

9. Alle nicht eingezeichneten bergnge fhren in den Fehlerzustand.

G T N R

= = = =

{N, T, S, R} {a..z} {S, A, B, C} {S dA| wA; A aB; B sC; C }

10.

G T N R

= = = =

{N, T, S, R} {0, 1} {S, A, B} {S 0A| 1B; A 0A| 1B| ; B 0A| 1B; }

77

Ermittlung des Akzeptors fr eine Sprache


Aus den Produktionsregeln einer rechtsregulren Sprache lsst sich umgekehrt auch sehr einfach das Zustandsdiagramm eines zu dieser Sprache gehrenden Automaten ermitteln. Aus Vereinfachungsgrnden werden hier fr die Elemente der Zustandsmenge dieselben Namen benutzt wie fr die Elemente der Nichtterminalsymbole. {A aB}

{C a | aC}

{D a}

{E }

Beispiel: Die folgende Sprache enthlt alle Worte, die nur aus den Zeichen a und b gebildet sind, aber kein c enthalten. Auerdem gehrt das leere Wort ebenfalls zur Sprache. T = {a, b, c} N = {S, A, F} R = {S|aS|bS|cA} Nach einiger berlegung findet man recht schnell den folgenden Automaten:

Schon hier kann man deutlich erkennen, dass die Regel ScA fr die Sprache irrelevant ist. Das htte man auch schon am Aufbau der Produktionsregeln bemerken knnen.
78

Alle anderen mglichen bergnge, die nicht aus den Produktionsregeln folgen, fhren in einen Fehlerzustand:

Wenn man an die zu erzeugende Sprache denkt, so kann man diesen Akzeptor offensichtlich noch optimieren:

Damit knnte man rckwirkend aber auch die Produktionsregeln der zugehrigen Grammatik optimieren, d.h. minimalisieren.

79

Aufgaben

1. Die Grammatik G4 mit dem Startsymbol S sei folgendermaen definiert: T = {a, b, c, d} N = {S, A, B, C, D} R = {SaA|bS|cS|dS, AaA|bB|cS|dS, BaA|bS|cC|dS, CaA|bS|cS|dD, D|aD|bD|cD|dD} Prfe durch Ableiten, ob die Wrter abdabcdba, bcdabdab, cabcdbcab von der Grammatik G4 produziert werden knnen. Entwickle den zugehrigen Akzeptor und teste die Wrter. Erkennst du, was die Grammatik leistet? Kannst du einen regulren Ausdruck dafr angeben?

2. Gegeben ist die Grammatik G = (T, N, S, R) mit N = {S, O}, T = {0, 1, 2, 9, +, -} und R = {S0O|1O||9O, O|+S|-S}. Konstruiere einen quivalenten Akzeptor. Beschreibe die Sprache dieser Grammatik!

3. Gib zu jeder der folgenden regulren Sprachen ber dem Alphabet {0, 1} das Zustandsdiagramm eines deterministischen, endlichen Akzeptors an! a) {w| w beginnt mit 1 und endet mit 0} b) {w| w ist mindestens 3 Zeichen lang und das 3. Zeichen ist 0} c) {w| w beginnt mit 0 und hat eine ungerade Lnge oder beginnt mit 1 und hat eine gerade Lnge} d) {, 0} e) die leere Menge f) alle Wrter auer dem leeren Wort

80

Lsungen
1. Eine Ableitung fr abdabcdba: SaAabBabdSabdaAabdabBabdabcCabdabcdDabdabcdbD abdabcdbaDabdabcdba Eine Ableitung fr bcdabdab gibt es nicht: SbSbcSbcdSbcdaAbcdabBbcdabdSbcdabdaAbcdabdabB Eine Ableitung fr cabcdbcab: ScScaAcabBcabcCcabcdDcabcdbDcabcdbcDcabcdbcaD cabcdbcabDcabcdbcab

Diese Sprache akzeptiert alle Wrter, welche die Zeichenfolge abcd enthalten. Regulrer Ausdruck: (a*b*c*d*)*abcd(a*b*c*d*)* 2. Der Automat akzeptiert mathematische Terme mit einstelligen Zahlen (keine Klammern, nur Addition und Subtraktion).

81

3.a)

3b)

3c)

3d)

3e)

3f)

82

Ausblick
Die Sprache L = { ambn | a, b und m, n N } ist leicht mit einem endlichen Automaten darstellbar (nicht eingezeichnete bergnge fhren in einen Fehlerzustand):

Auch die Sprache L5 = { (ab)n | a, b und n N } ist leicht mit einem endlichen Automaten darstellbar (nicht eingezeichnete bergnge fhren in einen Fehlerzustand):

Die Sprache L2 = { anbn | a, b und n N } ist hingegen nicht regulr. Dazu msste sich der zugehrige Automat nmlich merken knnen, wie viele Zeichen a vorhanden sind (und dafr bentigt er unendlich viele Zustnde), um dies mit der Anzahl der Zeichen b vergleichen zu knnen. Etwas bekannter ist dieser Sachverhalt als folgender Satz: Endliche Automaten knnen nicht richtig (d.h. beliebig weit) zhlen. Die blichen Programmiersprachen akzeptieren Terme mit beliebig vielen Klammern, wobei die Anzahl der ffnenden und schlieenden Klammern natrlich gleich gro sein muss. Hieraus folgt, dass diese Programmiersprachen nicht regulr sein knnen. In der theoretischen Informatik gibt es weitere Automatentypen, mit denen man komplexere Sprachen beschreiben kann. Der sog. deterministische Kellerautomat besitzt zustzlich einen einzigen, eigenen Stack, mit dessen Hilfe er etwa die gerade erwhnte Sprache L2 erkennt. Allerdings kann dieser Kellerautomat nicht die Sprache L3 = { anbncn | a, b, c und n N } erkennen. Dafr bentigte man kompliziertere Automatentypen.

83