Nem determinisztikus állapotgép

A nem-determinisztikus véges automata (NFA, eng.  nondeterministic finite automaton , NFA) egy olyan determinisztikus véges automata (DFA, angol  determinisztikus véges automata , DFA), amely nem teljesíti a következő feltételeket:

Különösen minden DFA egyben NFA is.

Az részhalmaz-konstrukciós algoritmus segítségével bármely NFA konvertálható ekvivalens DFA-vá, azaz olyan DFA-vá, amely ugyanazt a formális nyelvet ismeri fel [1] . A DFA-hoz hasonlóan az NFA is csak a normál nyelveket ismeri fel .

Az NFA-t 1959-ben javasolta Michael O. Rabin és Dana Scott [2] , akik bebizonyították, hogy egyenértékű a DFA-val. Az NFA-t reguláris kifejezések implementálására használják  – a Thompson-konstrukció egy olyan algoritmus, amely egy reguláris kifejezést NFA-vá konvertál, amely képes hatékonyan felismerni a karakterláncok mintáját. Ezzel szemben a Kleene-algoritmus felhasználható egy NFA reguláris kifejezéssé alakítására, amelynek mérete általában exponenciálisan függ az automata méretétől.

Az NFA sokféleképpen általánosítható, például: nem-determinisztikus véges automaták ε-átmenetekkel , véges állapotú átalakítók, lenyomó automaták , váltakozó automaták, ω-automaták és valószínűségi automaták . A DFA-n kívül az NFA-k egyéb speciális esetei is ismertek - egyértelmű véges automaták ( eng. unambiguous finite  automata , UFA) és önellenőrző véges automaták ( eng.  self-verifying finite automata , SVFA).

Informális bemutatkozás

Számos informális egyenértékű leírás létezik:

Formális definíció

A formális definíció elemibb bevezetéséért lásd az " Automata elmélet " című cikket.

Automata

Az NFA formálisan egy 5 sorból áll, amely a következőkből áll:

Itt a halmaz fokát jelenti .

Elismert nyelv

Adott egy NFA , felismer egy nyelvet , amelyet az automata által elfogadott ábécé feletti összes karakterlánc halmazaként jelölnek és definiálnak .

Általánosságban elmondható, hogy a fenti informális magyarázatok szerint több egyenértékű formális karakterlánc-definíciót is elfogad az automata :

Szavak. Az első feltétel azt mondja, hogy a gép az állapotból indul . A második feltétel azt mondja ki, hogy a karakterlánc minden egyes karakterénél a gép állapotról állapotra vált át az átmeneti függvénynek megfelelően . Az utolsó feltétel azt mondja, hogy a gép akkor fogad el egy karakterláncot , ha a bemeneti karakterlánc hatására a gép befejeződik a végső állapotában. Ahhoz, hogy egy karakterláncot elfogadjon egy automata , nem szükséges, hogy bármely állapotsorozat egy végállapotban végződjön, elég, ha egy sorozat ilyen állapotba vezet. Ellenkező esetben, azaz ha nem lehet a -ból állapotba lépni, akkor a következőt követve az automata elutasítja a karakterláncot. Az automata által elfogadott karakterláncok halmaza az automata által felismert nyelv , és ezt a nyelvet [9] [10] -ként jelöljük . Más szóval, elérhető-e az összes állapot halmaza abból az állapotból , amikor megkapja a karakterláncot . Egy karakterlánc akkor fogadható el, ha a bemeneti karakterlánc [11] [12] kezdõállapotából elérhetõ valamilyen végállapot .

Kezdeti állapot

A fenti automatadefiníció egyetlen kezdeti állapotot használ , ami nem követelmény. Néha az NFA-t kezdeti állapotok halmazával határozzák meg. Létezik egy egyszerű konstrukció , amely egy több kezdeti állapotú NFA-t egyetlen kezdeti állapotú NFA-ra visz.

Példa

A következő bináris ábécé automata határozza meg, hogy a bemeneti karakterlánc egyre végződik-e. Legyen , ahol az átmeneti függvény a következő állapotátmeneti táblázattal definiálható (hasonlítsa össze a bal oldali felső ábrával):

BejáratÁllapot 0 egy

Mivel a halmaz egynél több állapotot tartalmaz, az automata nem determinisztikus. Az automata nyelv egy reguláris kifejezéssel adott reguláris nyelvként írható le . (0|1)*1

Az alábbi ábra az „1011” bemeneti karakterlánc összes lehetséges állapotsorát mutatja. A karakterláncot az automata elfogadja, mert az egyik állapotsor megfelel a fenti definíciónak. Nem számít, hogy a többi sorozat nem sikerül. A rajz kétféleképpen értelmezhető:

Az a képesség, hogy ugyanazt az ábrát kétféleképpen is leolvashatjuk, a fenti két magyarázat egyenértékűségét is mutatja.

Ezzel szemben a "10" karakterláncot az automata elutasítja (az adott bemenethez tartozó bemeneti karakterlánc összes lehetséges állapotsora a jobb felső ábrán látható), mivel nincs olyan út, amely a végső állapot beolvasása után érné el a végső állapotot. karakter 0. Bár az állapotot az első karakter beérkezése után lehet elérni, az "1" nem jelenti azt, hogy a "10" bemeneti karakterlánc elfogadható. Ez csak azt jelenti, hogy az "1" bemeneti karakterlánc elfogadható.

DFA egyenértékűség

A  determinisztikus véges automata ( DFA ) az NFA egy speciális fajtájának tekinthető, amelyben az ábécé bármely állapotához és betűihez az átmeneti függvénynek csak egy eredő állapota van. Így egyértelmű, hogy minden formális nyelv , amely DFA-val felismerhető, felismerhető NFA-val is.

Ezzel szemben minden NFA-hoz létezik egy DFA, amely ugyanazt a formális nyelvet ismeri fel. Egy DFA-t [en] lehet ] részhalmaz konstrukcióval .

Ez az eredmény azt mutatja, hogy az NFA a nagy rugalmassága ellenére nem képes felismerni azokat a nyelveket, amelyeket egyetlen DFA sem ismer fel. Ez a gyakorlatban is fontos annak érdekében, hogy a szerkezetileg egyszerűbb NFA-kat számításilag hatékonyabb DFA-kká alakítsuk. Ha azonban az NFA-nak n állapota van, akkor a kapott DFA-nak akár 2n állapota is lehet, ami néha kivitelezhetetlenné teszi a nagy NFA-k esetében.

NCA ε-átmenetekkel

A nem-determinisztikus véges automata ε-átmenetekkel (NFA-ε) egy további általánosítás már az NFA-ra. Ennek az átmeneti függvényautomatának megengedhető, hogy az üres ε karakterlánc legyen bemenetként. A bemeneti szimbólum használata nélküli átmenetet ε-átmenetnek nevezzük. Az állapotdiagramon ezeket az átmeneteket általában a görög ε betűvel jelölik. Az ε-átmenetek kényelmes módot biztosítanak olyan rendszerek modellezésére, amelyek jelenlegi állapota nem pontosan ismert. Például, ha egy olyan rendszert modellezünk, amelynek aktuális állapota nem tiszta (valamilyen bemeneti karakterlánc feldolgozása után), és lehet q vagy q', akkor hozzáadhatunk egy ε-átmenetet a két állapot között, így az automata mindkét állapotba kerül ugyanakkor.

Formális definíció

Az NFA-ε formálisan egy 5 sorból áll , amely a következőkből áll:

Itt a halmaz hatványát jelenti , ε pedig az üres karakterláncot.

ε-Egy állapot vagy állapothalmaz lezárása

Egy állapothoz jelölje az átmeneti függvényekben a következő ε-átmenetekből elérhető állapotok halmazát , nevezetesen, ha van olyan állapotsorozat, amelyre:

A halmaz ε - állapotú zárás néven ismert .

Az ε-zárás is definiálva van az állapotok halmazára. Az NK-automata állapothalmazának, , ε-zárását úgy definiáljuk, mint azon állapotok halmazát, amelyek a halmaz elemeiből ε-átmenetekkel elérhetők. Formálisan azért


Elfogadható állapotok

Legyen egy karakterlánc az ábécé fölött . Az automata akkor fogad el egy karakterláncot , ha van egy állapotsorozat a következő feltételekkel:

  1. , hol bármely
  2. .
Szavak. Az első feltétel azt mondja, hogy a gép olyan állapotból indul ki, amely az állapotból ε-átmeneteken keresztül elérhető. A második feltétel szerint a gép beolvasása után kiválasztja az átmenetet -ról -ra , majd tetszőleges számú ε-átmenetet hajt végre a -ról -ra való átmenetnek megfelelően . Az utolsó feltétel azt mondja, hogy a gép elfogadja , ha az utolsó bemeneti karakter hatására a gép átáll valamelyik elfogadott állapotba. Ellenkező esetben az automatáról azt mondják, hogy elutasítja a karakterláncot. Az általa elfogadott karakterláncok halmaza az a nyelv , amelyet az automata felismer , és ezt a nyelvet a következővel jelöljük .

Példa

Legyen egy NFA-ε bináris ábécével, amely meghatározza, hogy a bemeneti karakterlánc páros számú nullát vagy páros számú egyest tartalmaz-e. Vegye figyelembe, hogy a 0 előfordulás páros szám.

Formális jelölésben legyen , ahol az átmeneti reláció egy ilyen állapotátmeneti táblával definiálható :

BejáratÁllapot 0 egy ε
S0_ _ {} {} { S 1 , S 3 }
S1_ _ { S2 } _ { S 1 } {}
S2_ _ { S 1 } { S2 } _ {}
S3_ _ { S 3 } { S4 } _ {}
S4_ _ { S4 } _ { S 3 } {}

felfogható két DFA uniójaként  , az egyik az államokkal , a másik pedig az állapotokkal . A nyelv leírható reguláris nyelvként , amelyet a reguláris kifejezés adja meg (1*(01*01*)*) ∪ (0*(10*10*)*). Definiálunk ε-átmenetekkel, de definiálhatunk nélkülük is.

NFA-k egyenértékűsége

Annak bizonyítására, hogy az NFA-ε ekvivalens az NFA-val, először is meg kell jegyezni, hogy az NFA az NFA-ε speciális esete, továbbra is meg kell mutatni, hogy minden NFA-ε esetében létezik egy ekvivalens NFA.

Legyen NFA-ε. Az NFA egyenértékű a következővel: , ahol bármely és .

Ekkor az NFA-ε egyenértékű az NFA-val. Mivel az NFA egyenértékű a DFA-val, az NFA-ε a DFA-val is egyenértékű.

Bezárás tulajdonságai

Egy NFA-ról azt mondják, hogy egy ( bináris / unáris ) művelet miatt zárva van . Ha az NFA felismeri azokat a nyelveket, amelyeket ennek a műveletnek az NFA által felismert nyelvekre történő alkalmazásával szerez. Az NFA-k a következő műveletek tekintetében zárva vannak.

Mivel az NFA-k ekvivalensek az ε-átmenet nemdeterminisztikus véges automatákkal (NFA-ε), a fenti lezárásokat az NFA-ε zárási tulajdonságaival bizonyítjuk. A fenti lezárási tulajdonságokból következik, hogy az NFA-k csak a reguláris nyelveket ismerik fel .

Az NFA-k bármilyen reguláris kifejezésből felépíthetők a Thompson algoritmus segítségével .

Tulajdonságok

A gép egy bizonyos kezdeti állapotból indul, és beolvassa az ábécé betűiből álló karakterláncot . Az automata a Δ átmeneti függvényt használja az aktuális állapot és az éppen beolvasott karakter vagy üres karakterlánc következő állapotának meghatározására. Azonban „az NFA következő állapota nemcsak az aktuális bemeneti szimbólumtól függ, hanem tetszőleges számú későbbi bemeneti eseménytől is. Amíg ezek a későbbi események zajlanak, lehetetlen meghatározni, hogy a gép milyen állapotban van” [13] . Ha az automata az utolsó beolvasott karakter után a végső állapotban van, az NFA elfogadja a karakterláncot, ellenkező esetben pedig elutasítja a karakterláncot.

Az NFA által elfogadott összes karakterlánc halmaza az a nyelv, amelyet az NFA elfogad. Ez a nyelv egy szabályos nyelv .

Bármely NFA-hoz találhat egy determinisztikus véges automatát (DFA), amely elfogadja ugyanazt a nyelvet. Ezért lehetőség van egy meglévő NFA-t DFA-vá konvertálni egy (esetleg) egyszerűbb gép megvalósítása érdekében. Az ilyen transzformációt az részhalmaz konstrukcióval hajtjuk végre , ami a szükséges állapotok számának exponenciális növekedéséhez vezethet. Az alhalmaz felépítésének hivatalos bizonyítékát lásd a " Részhalmaz felépítése " cikkben.

Megvalósítás

Az NFA a következő módok egyikével modellezhető:

NCA alkalmazások

Az NFA és a DFA egyenértékűek abban az értelemben, hogy ha egy nyelvet egy NFA felismer egy automata által, akkor azt a DFA is felismeri. Ennek a fordítottja is igaz. Egy ilyen egyenértékűség megállapítása fontos és hasznos. Fontos, mert az NFA-k segítségével csökkenthető az algoritmuselmélet fontos tulajdonságainak megállapításához szükséges matematikai munka bonyolultsága . Például sokkal könnyebb bizonyítani a reguláris nyelvek zártságát NFA-kkal, mint DFA-kkal. Hasznos, mert az NFA létrehozása annak felismerésére, hogy a nyelv néha sokkal fontosabb, mint az adott nyelv DFA-jának létrehozása.

Lásd még

Jegyzetek

  1. Martin, 2010 , p. 108.
  2. Rabin és Scott, 1959 , p. 114–125.
  3. Egy választási sorozat „zsákutcához” vezethet, amelyben az átmenetek egyike sem érvényes az aktuális bemeneti szimbólumra, és ez az eset kudarcnak minősül (a karakterláncot elutasítják).
  4. Hopcroft, Ullman, 1979 , p. 19.
  5. Aho, Hopcroft és Ullman, 1974 , p. 319.
  6. Hopcroft, Ullman, 1979 , p. 19-20.
  7. Sipser, 1997 , p. 48.
  8. Hopcroft, Motwani, Ullman, 2001 , p. 56.
  9. Aho, Hopcroft és Ullman, 1974 , p. 320.
  10. Sipser, 1997 , p. 54.
  11. Hopcroft, Ullman, 1979 , p. 21.
  12. Hopcroft, Motwani, Ullman, 2001 , p. 59.
  13. Véges állapotú gép FOLDOC ingyenes online számítástechnikai szótár . Hozzáférés dátuma: 2020. február 11. Az eredetiből archiválva : 2015. április 4.
  14. Chris Calabro. Az NFA a DFA felrobbant. 2005-02-27 . Letöltve: 2020. február 11. Az eredetiből archiválva : 2013. február 7..
  15. Hopcroft, Motwani, Ullman, 2001 , p. 153.

Irodalom