Was ist ein endlicher deterministischer Automat?
Ein endlicher deterministischer Automat(DEA) hat eine endliche Anzahl an Zuständen, von welchen er einen immer als aktuellen Zustand hat. Mit hilfe von Übergängen kann er durch verschienen Eingaben seinen Zustand wechseln. Dabei hat ein Zustand einen Eindeutigen zustandswechsel bei einer Eingabe, es sei denn diese Eingabe führt in eine Senke. Bei der Eingabe ist jedes Element teil des Alphabetes und die Eingabe als ganzes ist ein Wort. Wenn nach Ende der Eingabe der Automat einen Endzustand erreicht hat, dann akzeptiert der Automat dieses Wort.
Formale Definition
Die definision für den oben genannten Automaten wäre die folgende:
Der Automat wird über einen Fünf-Tupel definiert.
A = (Q, Σ, δ, q~0~, F)
Symbol | Funktion |
---|---|
Q | Endliche Zustandsmenge |
Σ | Alphabet |
δ | Übergangsfunktion (delta:Q x Σ -> Q) |
q0 | Startzustand |
F | Endliche Menge an Endzuständen |
Beispiel
Annahme: Alle nicht aufgeführten Übergänge führen in eine "Senke".
- Q = {q0, q1, q2}
- δ = {a, b}
- F = {q2}
- δ :
Zustand | a | b |
---|---|---|
q0 | Senke | q1 |
q1 | q0 | q2 |
q2 | q2 | Senke |
Indeterministischer Automat
Ein deterministischer Automat, wie oben erwähnt hat einen klaren Zustandsübergang von Zustand zu Zustand. Es gibt allerdings auch indeterministische Automaten (IEA), welche für einem Zustand mehrere Eingaben in verschiedene Übergänge erlaubt. Bei diesem ist der genaue Pfad, den der Automat nimmt nicht Eindeutig, da der Automat mehrere Pfade gleichzeitig verfolgt. Ein Automat akzeptiert hierbei ein Wort, wenn es in irgendeinem Fall zu einem akzeptierten Endzustand führt. Ein Beispiel für einen indeterministische Automaten ist gleich bei der Umwandlung zu sehen.
IDA zu DEA umwandeln
Man kann allerdings immer jeden Indeterministischen Automat in einen deterministischen Automaten umwandeln. Dabei fängt man mit einer Tabelle mit allen Übergängen des IDA an. Dabei gibt es allerdings nur eine Zelle pro Zustand/Eingabe Kombination und mehrere Zustände werden in einen neuen Zustand zusammengefasst. Besonders gut ist die im Beispiel unten sichtbar. Danach werden die kombinierten Übergänge auch verfolgt und deren Folgezustände zusammengefasst. Dies wird solange gemacht, bis alle Übergänge notiert sind. Danach kann man Duplikate entfernen. Dies geschieht, wenn die Zeile von Zustand in einer Anderen vollständig enthalten ist und beide Zeilen entweder Endzustand sind oder nicht. Beide müssen dabei die Eigenschaft Endzustand (ja/nein) gleich haben.
Beispiel
1. Tabelle mit allen initialen Übergängen
Status | 0 | 1 |
---|---|---|
q0 | q01 | q02 |
q1 | q3 | q0 |
q2 | q0 | q4 |
(E)q3 | q34 | q3 |
(E)q4 | q4 | q23 |
2. Tabelle mit ALLEN Übergängen
Status | 0 | 1 |
---|---|---|
q0 | q01 | q02 |
q01 | q013 | q02 |
(E)q02 | q01 | q024 |
(E)q34 | q34 | q34 |
q013 | q0134 | q0234 |
q024 | q013 | q0234 |
(E)q0134 | q0134 | q0234 |
(E)q0234 | q0134 | q0234 |
(q1, q2, q3, q4 werden nicht mehr aufgenommen, da diese nicht mehr von q0/Startzustand erreichbar sind und damit irrelevant sind)
3. Duplikate entfernen und umbenennen
Da q0124 und q0234 beide Endzustände sind und die gleichen Übergänge haben, kann man diese auch zusammenfassen. So wird man dann eine Zeile los. Man kann allerdings nicht auch noch q013 mit-löschen, da dieser kein Endzustand ist und damit nicht identisch ist.
Status | 0 | 1 |
---|---|---|
(E)q0134 | q0134 | q0234 |
(E)q0234 | q0134 | q0234 |
--------------- | --------- | ------------- |
(E)q0134 | q0134 | q0134 |
Status | 0 | 1 |
---|---|---|
q0 | q1 | q2 |
q1 | q3 | q2 |
(E)q2 | q1 | q4 |
(E)q5 | q5 | q5 |
q6 | q6 | q6 |
q4 | q6 | q6 |
(E)q6 | q6 | q6 |
4. Fertig
Die einzelnen Zustände kann man nun wieder umbenennen und den deterministischen Graphen wieder zeichnen.