logo

DFA (determinisztikus véges automaták)

  • A DFA determinisztikus véges automatákra utal. A determinisztikus a számítás egyediségére utal. A véges automatákat determinisztikus véges automatáknak nevezzük, ha a gép egy bemeneti sztringet egy-egy szimbólummal olvas be.
  • A DFA-ban csak egy útvonal van az adott bemenethez az aktuális állapotból a következő állapotba.
  • A DFA nem fogadja el a nullmozgást, azaz a DFA nem tud állapotot változtatni bemeneti karakter nélkül.
  • A DFA több végső állapotot is tartalmazhat. A Compiler Lexical Analysisben használatos.

A következő ábrán láthatjuk, hogy a q0 állapotból az a bemenethez csak egy út vezet a q1-hez. Hasonlóképpen, q0-ból csak egy út van a b bemenet számára, amely a q2-be megy.

Determinisztikus véges automaták

A DFA formális meghatározása

A DFA az FA definíciójában leírtakkal megegyező 5 sorból álló gyűjtemény.

tömbök java
 Q: finite set of states ∑: finite set of the input symbol q0: initial state F: final state δ: Transition function 

Az átmenet függvény a következőképpen definiálható:

 δ: Q x ∑→Q 

A DFA grafikus ábrázolása

A DFA-t állapotdiagramnak nevezett digráfokkal ábrázolhatjuk. Amiben:

  1. Az állapotot csúcsok képviselik.
  2. A bemeneti karakterrel jelölt ív mutatja az átmeneteket.
  3. A kezdeti állapotot nyíl jelzi.
  4. A végső állapotot kettős kör jelöli.

1. példa:

 Q = {q0, q1, q2} ∑ = {0, 1} q0 = {q0} F = {q2} 

Megoldás:

Átmeneti diagram:

Determinisztikus véges automaták

Átmeneti táblázat:

sor és oszlop
Jelen állapot A 0. bemenet következő állapota Következő 1. beviteli állapot
→q0 q0 q1
q1 q2 q1
*q2 q2 q2

2. példa:

A ∑ = {0, 1} értékkel rendelkező DFA minden 0-val kezdődőt elfogad.

Megoldás:

Determinisztikus véges automaták

Magyarázat:

pothineni ram
  • A fenti ábrán láthatjuk, hogy adott 0-nál a DFA bemeneteként a q0 állapotban a DFA állapotát q1-re változtatja, és mindig a q1 végső állapotba megy a 0-s bemenet indításakor. Elfogadhat 00, 01, 000, 001... .stb. Nem tud elfogadni egyetlen 1-gyel kezdődő karakterláncot sem, mert soha nem kerül végső állapotba az 1-gyel kezdődő karakterláncon.

3. példa:

A ∑ = {0, 1} értékkel rendelkező DFA elfogad minden 0-ra végződőt.

Megoldás:

Determinisztikus véges automaták

Magyarázat:

A fenti diagramon láthatjuk, hogy adott 0-nál a DFA bemeneteként q0 állapotban a DFA állapotát q1-re változtatja. Bármilyen 0-ra végződő karakterláncot el tud fogadni, például 00, 10, 110, 100... stb. Nem tud elfogadni olyan karakterláncot, amely 1-re végződik, mert 1 bemeneten soha nem megy a q1 végső állapotba, így az 1-re végződő karakterláncot nem fogadja el, vagy elutasítja.