{{ :faecher:informatik:oberstufe:automaten:mealy:mealy.png?180|}} ====== Mealy-Automaten ====== ((Diese Wiki-Seite basiert auf Material der ZPG INformatik/BW und steht unter einer [[https://creativecommons.org/licenses/by-nc-sa/3.0/de/|CC-BY-NC-SA Lizenz]]. Als Autoren sind angegeben "Dietrich, Lautebach (2020)".)) ===== Grundlagen und Übergangsgraph ===== Die sogenannten **Mealy-Automaten** können in jedem Schritt außer der Änderung des internen Zustands auch eine **Ausgabe** erzeugen und erlauben damit die Modellierung z.B. von Getränke-, Fahrkarten- oder ähnlichen Automaten, die wir aus unserer Umwelt kennen. Als Beispiel soll ein Getränkeautomat dienen, der... * ... die Tasten A, C und S hat (für Apfelsaft, Cola und Stop) * ... 1EUR- und 2EUR-Münzen annimmt. Damit ist sein **Eingabealphabet Σ** = {c, a, s, 1, 2}. Anders als ein DEA bewirkt bei einem Mealy-Automaten jede Eingabe eine Ausgabe, das **Ausgabealphabet Δ** = {"Guthaben 1€", "Guthaben 2€", "1€" , "2€", "Apfelsaftflasche", "Colaflasche"} Eine Mealy-Maschine oder ein **Mealy-Automat** ist durch ein 6-Tupel ''M = (Q,Σ,∆,δ,λ,q₀)'' definiert. Die verwendeten Symbole haben folgende Bedeutungen: * Q: endliche Menge der Zustände * Σ: Eingabealphabet * ∆: Ausgabealphabet * δ: totale Überführungsfunktion Q x Σ → Q * λ: totale Ausgabefunktion Q x Σ → ∆ * q0: Anfangszustand, q0 ∈ Q Die Maschine erzeugt in jedem Übergang eine Ausgabe. Die Überführungsfunktion δ und die Ausgabefunktion λ können wie beim DEA auch, in einem **Übergangsgraphen** dargestellt werden. Ein passender **Übergangs-** oder **Transitionsgraph** sieht folgendermaßen aus: {{ :faecher:informatik:oberstufe:automaten:mealy:mealy-transistion.png?600 |}} Anders als beim DEA muss zu jedem Übergang außer der Eingabe auch die Ausgabe notiert werden, dies geschieht für gewöhnlich durch ein Trennzeichen wie '';'' oder ''/''. Der Automat befindet sich immer in genau einem der Zustände und beginnt dabei immer im so genannten **Startzustand**, der mit einem zusätzlichen Pfeil gekennzeichnet wird (hier q0). Jede Eingabe bewirkt einen Übergang (auch Transition genannt) zu einem anderen Zustand, dargestellt durch einen Pfeil. Bei Mealy-Automaten gehört zu einem Übergang auch eine Ausgabe. Vom Startzustand ''q0'' aus wird durch Einwurf von ''1€'' der Zustand ''q2'' erreicht und die Ausgabe ''Guthaben: 1,00'' erzeugt. ---- Nachfolgende Aufgaben können teilweise sowohl mit der Webseite [[https://flaci.com/autoedit|FLACI]], also auch mit dem Java-Tool [[https://www.jflap.org/jflaptmp/|JFLAP]] bearbeitet werden! {{:aufgabe.png?nolink |}} === (A1) === ++++ Bearbeitung mit FLACI| Baue den Getränkeautomaten in [[https://flaci.com/autoedit|FLACI]] auf und teste ihn in der Simulation. * Erzeuge einen neuen Mealy-Automaten * Schalte im Reiter ''Definition'' die Option für ''δ und λ als partielle Funktionen'' an * Definiere im Reiter ''Alphabet'' das Eingabe- und das Ausgabealphabet * Überführe den Übergangsgraphen von oben nach FLACI * Simuliere Eingaben Welche Funktion hat die Option ''δ und λ als partielle Funktionen'', was verändert sich wenn man diese Option deaktiviert. ++++ ++++ Bearbeitung mit JFLAP| Baue den Getränkeautomaten in [[https://www.jflap.org/jflaptmp/|JFLAP]] auf und teste verschiedene Eingaben. * Wähle den Mealy-Automaten * Erstelle den Automaten und trage in allen Übergängen sowohl die Eingabe, als auch die Ausgabe in das jeweilige Feld ein. * Erstelle verschiedene Eingaben z. B. mit Input -> Step. **Wichtig:** Jeder Input muss die __komplette__ Eingabe enthalten (z. B.: "1€1€C") * Klicke links unten auf "Step", um die Eingabe zu testen. ++++ ---- ===== Übergangstabelle ===== Und wie bei [[..:dea:start|DEAs]] kann man die Übergangsfunktion ''δ'' und die Ausgabefunktion ''λ'' auch hier als **Übergangsmatrix/Übergangstabelle** darstellen, anstelle des Übergangsgraphen. Wie bei den DEAs gilt: Im Graph kann man den Fehlerzustand der Übersichtlichkeit wegen weglassen, in der Übergangsmatrix wird dieser stets angegeben. | | Eingaben → (Folgezustand / Ausgabe) ||||| ^ Ausgangszustand ^ 1€ ^ 2€ ^ c ^ a ^ s ^ | q0 | q2/"Guthaben 1€" | | | | | | q1 | | | | | | | q2 | | | | | | | qF | | | qF | | | ---- {{:aufgabe.png?nolink |}} === (A2) === Vervollständige anhand des Übergangsgraphen die Übergangsmatrix ---- {{:aufgabe.png?nolink |}} === (A3) === Falls du mit FLACI arbeitest:\\ Schalte die Option ''δ und λ als partielle Funktionen'' in FLACI aus und ergänze den Automaten in FLACI um den Fehlerzustand. Überprüfe so deine Tabelle aus der vorigen Aufgabe. ===== Übungen ===== {{:aufgabe.png?nolink |}} === (A4) === Gib eine Eingabe an, die zur Ausgabe ''Apfelsaftflasche'' führt. ---- {{:aufgabe.png?nolink |}} === (A5) === Gib die Ausgabe an, die zur Eingabe ''1€,s'' gehört. In welchem Zustand befindet sich der Automat anschließend? ---- {{:aufgabe.png?nolink |}} === (A6) === Modelliere einen Mealy-Automaten für einen Automaten aus der Schule. Gib die folgenden Informationen an: * Eingabealphabet, Zustandsmenge, Startzustände und Ausgabealphabet * Zustandsübergangs- und Ausgabefunktionen als Tabelle * Zustandsübergangsgraph ---- {{:aufgabe.png?nolink |}} === (A7) === Ein Mealy-Automat A ist durch den folgenden Übergangsgraphen gegeben: {{ :faecher:informatik:oberstufe:automaten:mealy:mealy-aufgabe.png |}} * Gib die Ausgabe zur Eingabe ''uhuhuhuuhhuhu'' an * Beschreibe A als 6-Tupel. Lege die Übergangsfunktion δ sowie die Ausgabefunktion λ durch eine Tabelle fest. * Beschreibe die "Übersetzungsfunktion" - wann gibt der Automat eine 1 aus?