📌

Modellierung durch endlichen Automaten

Vorgang:

  1. Zustände? → QQ und I,FI, F
  1. Aktionen/Eingaben? → die Zustandsübergänge auslösen / dabei stattfinden
  1. Tabelle erstellen, alle Fälle abdecken

Beispiel: Simpsons Flussbeispiel

Dieses Beispiel wäre als Automat leichter zu modellieren.

M… Maggie K… Knecht Ruprecht G… Gift H… Homer } \left.\begin{array}{ll}M & \ldots \text { Maggie } \\K & \ldots \text { Knecht Ruprecht } \\G & \ldots \text { Gift } \\H & \ldots \text { Homer }\end{array}\right\}  System Koponenten

System-Zustand:

Dinge hierDinge dort\frac{\text{Dinge hier}}{\text{Dinge dort}}Dinge dortDinge hier​
Endzustand:-MKGHAnfangszustand:MKGH-\textsf{Endzustand: }\frac{\text{-}}{\text{MKGH}} \qquad \textsf{Anfangszustand: }\frac{\text{MKGH}}{\text{-}}Endzustand:MKGH-​Anfangszustand:-MKGH​

Verbotene Zustände:

GHMK,MKGH,KHMG,MGKH,HMKG,MKGH\frac{G H}{M K}, \frac{M K}{G H}, \frac{K H}{M G}, \frac{M G}{K H}, \frac{H}{M K G}, \frac{M K G}{H}MKGH​,GHMK​,MGKH​,KHMG​,MKGH​,HMKG​

Zustandsübergänge: h,m,k,g\mathrm{h}, \mathrm{m}, \mathrm{k}, \mathrm{g}

Dadurch Automat ohne verbotenen Zuständen:

Alle gültigen Wörter (die zum Ziel führen) sind die Sprache des Automaten.

Mögliche Lösungen: { mhkmghm, mmmhhhgmkhm, ..., mhkmgkmgkmghm, ... } \{\text { mhkmghm, mmmhhhgmkhm, ..., mhkmgkmgkmghm, ... \} }

Beispiel: RLL (run-length limited) Codes

Daten werden auf Festplatten, CDs und DVDs binär kodiert.

Probleme: Abstand zwischen den 1en...

  • zu groß - zu viele 0en - Synchronisation geht verloren
  • zu klein - zu wenige 0en - ununterscheidbar

(m : n)-(d, k)-RLL-Codes

Wir wollen die Anzahl der 0en beeinflussen.

Ziel: minimiere n/m, maximiere d

Lösung: Nütze die „natürlichen“ 0er-Strecken und 1er im Datenstrom.

m Datenbits→n Codebits m \text{ Datenbits} \rarr n \text{ Codebits }

Zwischen zwei 1 sollen:\text{Zwischen zwei 1 sollen:}

min d, max k\text{min d, max k}

0 vorkommen.0 \text{ vorkommen.}

(1 : 2)-(0, 1)-RLL-Code

1 eingabe-bit → 2 ausgabe-bits

Es dürfen nicht zwei 0 hintereinander vorkommen.

Wir machen einen Automaten der das erzwingt. (Ausgaben)

  • Zustand a\textsf{a} hat 2 augehende Kanten.
  • Zustand b\textsf{b} hat 1 augehende Kante. → problematisch bei 3 input bits

Wir "Potenzieren" den Automaten (mehr Kanten)

  • Zustand a\textsf{a} hat 3 augehende Kanten.
  • Zustand b\textsf{b} hat 2 augehende Kanten.

Jetzt entscheidet man willkürlich welches der 3 Kanten man für 00 und welches man für 11 wählt:

10010⇒ 10 10 10 11 01 oder 11 01 01 11 01 oder... 10010 \Rightarrow \text{10 10 10 11 01} \text { oder } \text{11 01 01 11 01} \text { oder... } 

Bedingung bleibt immer erhalten.

Vorherige Beispiele

(2 : 3)-(0, 1)-RLL-Code

2 eingabe-bits → 3 ausgabe-bits

Es dürfen nicht zwei 0 hintereinander vorkommen.

Wir machen einen Automaten der das erzwingt. (Ausgaben)

  • Zustand a\textsf{a} hat 2 augehende Kanten. → problematisch bei 4 input bots
  • Zustand b\textsf{b} hat 1 augehende Kante. → problematisch bei 4 input bits

Wir "Potenzieren" den Automaten mehrmals (mehr Kanten)

  • Zustand a\textsf{a} hat 2 augehende Kanten. → immer noch problematisch
  • Zustand b\textsf{b} hat 2 augehende Kanten. → immer noch problematisch

Wir "splitten" Zustand a\textsf{a} auf damit b\textsf{b} mehr Kanten hat

  • Zustand a1\textsf{a}_1 hat 3 augehende Kanten.
  • Zustand a2\textsf{a}_2 hat 2 augehende Kanten.
  • Zustand b\textsf{b} hat 3 augehende Kanten.

Mealy Automat: