Endliche Automaten (1)


Wir wollen einen idealisierten Zigarettenautomaten simulieren, der aus einem unerschöpflichen Vorrat einer einzigen Sorte nach Einwurf des passenden Geldbetrags und Drücken der Ausgabetaste eine Schachtel auswirft. Der Preis soll DM 5 betragen; der Automat akzeptiert Geldstücke zu DM 1, DM 2 und DM 5 sowie die Taste A. Was bei Überzahlungen geschehen soll (abweisen, vereinnahmen, oder gar wechseln), und ob es eine Rückgabetaste geben soll, lassen wir vorerst offen; die Erweiterung ist leicht, macht aber unsere Beschreibung komplizierter.

Den inneren  Zustand des Automaten beschreiben wir durch ein Element aus einer endlichen Zustandsmenge Q = {Z0 .. Z5}; jeder Zustand bedeutet den bislang gespeicherten Geldbetrag. Z0 ist der Startzustand, Z5 ein Endzustand.

Die Wirkungsweise des Automaten können wir graphisch veranschaulichen durch ein Übergangsdiagramm; die Übergänge zwischen den Zuständen sind jeweils durch die aktuelle Eingabe bestimmt.

Bei größeren Zustandszahlen ist eine Übergangstafel übersichtlicher. Sie kann als Wertetabelle einer Funktion vom Typ [QE]Q mit zwei Argumenten gelesen werden, wobei E = {'1','2','5','A'} die Menge der zulässigen Eingaben ist, oder auch als zweidimensionale Matrix vom Typ ARRAY [Q,E] OF Q. Die leeren Felder geben an, in welchen Situationen wir das Verhalten bisher noch nicht festgelegt haben.

1 2 5 A
Z0 Z1 Z2 Z5  
Z1 Z2 Z3    
Z2 Z3 Z4    
Z3 Z4 Z5    
Z4 Z5      
Z5       Z0
Mit diesen Angaben den Automaten per Programm zu simulieren, sei den Lesern als Übungsaufgabe überlassen, ebenso die Erweiterung der Beschreibung um die Ausgabe eines Wortes über einem geeigneten Ausgabealphabet bei jedem Übergang.


zurück | Inhalt | Index | vor | Vorlesung

Klaus Lagally, 22. Februar 2000, 19:36