Epädeterministinen tilakone

Ei-deterministinen äärellinen automaatti (NFA, eng.  nondeterministic finite automaton , NFA) on deterministinen äärellinen automaatti (DFA, eng.  deterministic finite automaton , DFA), joka ei täytä seuraavia ehtoja:

Erityisesti mikä tahansa DFA on myös NFA.

Alijoukon rakennusalgoritmia käyttämällä mikä tahansa NFA voidaan muuntaa vastaavaksi DFA:ksi, eli DFA:ksi, joka tunnistaa saman muodollisen kielen [1] . Kuten DFA, NFA tunnistaa vain tavalliset kielet .

NFA:ta ehdottivat vuonna 1959 Michael O. Rabin ja Dana Scott [2] , jotka osoittivat sen vastaavan DFA:ta. NFA:ta käytetään säännöllisten lausekkeiden toteutuksessa  - Thompsonin konstruktio on algoritmi säännöllisen lausekkeen muuntamiseksi NFA:ksi, joka tunnistaa tehokkaasti merkkijonojen kuvion. Käänteisesti Kleenen algoritmia voidaan käyttää NFA:n muuntamiseen säännölliseksi lausekkeeksi , jonka koko riippuu yleensä eksponentiaalisesti automaatin koosta.

NFA on yleistetty monella tapaa, esimerkiksi: epädeterministiset äärelliset automaatit ε-siirtymillä , äärelliset muuntimet, pushdown- automaatit , vuorottelevat automaatit, ω-automaatit ja todennäköisyysautomaatit . DFA:n lisäksi tunnetaan myös muita NFA:iden erikoistapauksia - yksiselitteiset äärelliset automaatit ( eng. unambiguous finite  automata , UFA) ja itsevarmentavat äärelliset automaatit ( eng.  self-verifying finite automata , SVFA).

Epävirallinen esittely

On olemassa useita epävirallisia vastaavia kuvauksia:

Muodollinen määritelmä

Alkeisempi johdatus muodolliseen määritelmään on artikkelissa " Automaattiteoria ".

Automaatti

NFA on muodollisesti edustettuna 5-osaisena , joka koostuu:

Tässä tarkoittaa joukon astetta .

Tunnustettu kieli

Kun NFA on annettu , se tunnistaa kielen, joka merkitään ja määritellään kaikkien merkkijonojen joukoksi automaatin hyväksymien aakkosten yli .

Yleisesti ottaen yllä olevien epävirallisten selitysten mukaan on olemassa useita vastaavia automaatin hyväksymiä muodollisia merkkijonomäärityksiä :

Sanat. Ensimmäinen ehto sanoo, että kone alkaa tilasta . Toinen ehto sanoo, että jokaisen merkkijonon merkin kohdalla kone siirtyy tilasta toiseen siirtymäfunktion mukaisesti . Viimeinen ehto sanoo, että kone hyväksyy merkkijonon , jos syötemerkkijono saa koneen päätymään lopulliseen tilaan. Jotta automaatti hyväksyisi merkkijonon , ei edellytetä, että jokin tilasarja päättyy lopulliseen tilaan, riittää, että yksi sarja johtaa sellaiseen tilaan. Muussa tapauksessa, ts ., jos on mahdotonta siirtyä tilasta tilaan , seuraamalla , automaatin sanotaan hylkäävän merkkijonon. Joukko merkkijonoja, jotka automaatti hyväksyy, on automaatin tunnistama kieli , ja tämä kieli on merkitty [9] [10] . Toisin sanoen onko kaikkien tilojen joukko saavutettavissa tilasta merkkijonoa hankittaessa . Merkkijono hyväksytään, jos jokin lopputila kohteesta voidaan saavuttaa syötemerkkijonon aloitustilasta [11] [12] .

Alkutila

Yllä oleva automaattimääritelmä käyttää yhtä alkutilaa , mikä ei ole vaatimus. Joskus NFA määritellään joukolla alkutiloja. On olemassa yksinkertainen rakenne , joka vie NFA:n, jossa on useita alkutiloja, NFA:han, jolla on yksi aloitustila.

Esimerkki

Seuraava binääriaakkosautomaatti määrittää, päättyykö syöttömerkkijono yhteen. Olkoon , jossa siirtymäfunktio voidaan määritellä seuraavalla tilasiirtymätaulukolla (vertaa vasemmalla olevaan yläkuvaan):

SisäänkäyntiOsavaltio 0 yksi

Koska joukko sisältää useamman kuin yhden tilan, automaatti on epädeterministinen. Automaattikieli voidaan kuvata säännöllisen lausekkeen antamana säännöllisenä kielenä . (0|1)*1

Kaikki mahdolliset tilasekvenssit syötemerkkijonolle "1011" on esitetty alla olevassa kuvassa. Automaatti hyväksyy merkkijonon, koska yksi tilajonoista täyttää yllä olevan määritelmän. Sillä ei ole väliä, että muut jaksot eivät onnistu. Piirustus voidaan tulkita kahdella tavalla:

Kyky lukea sama kuvio kahdella tavalla osoittaa myös kahden yllä olevan selityksen vastaavuuden.

Sitä vastoin automaatti hylkää merkkijonon "10" (kaikki mahdolliset tilasarjat tietyn syötteen syötemerkkijonolle näkyvät oikeassa yläkulmassa), koska ei ole polkua, joka saavuttaisi lopullisen tilan lopullisen lukemisen jälkeen. merkki 0. Vaikka tila voidaan saavuttaa ensimmäisen merkin vastaanottamisen jälkeen, "1" ei tarkoita, että syötemerkkijono "10" on hyväksyttävä. Se tarkoittaa vain, että syötemerkkijono "1" olisi hyväksyttävä.

DFA-ekvivalenssi

Determinististä  äärellistä automaattia ( DFA ) voidaan pitää erikoisena NFA:na, jossa siirtymäfunktiolla on vain yksi aakkosten tila ja kirjain. Näin ollen on selvää, että mikä tahansa muodollinen kieli , joka voidaan tunnistaa DFA:lla, voidaan tunnistaa myös NFA:lla.

Sitä vastoin jokaiselle NFA:lle on DFA, joka tunnistaa saman muodollisen kielen. DFA voidaan rakentaa käyttämällä osajoukkorakennetta .

Tämä tulos osoittaa, että suuresta joustavuudestaan ​​huolimatta NFA ei pysty tunnistamaan kieliä, joita mikään DFA ei voi tunnistaa. Tämä on tärkeää myös käytännössä, jotta rakenteellisesti yksinkertaisemmat NFA:t muunnetaan laskennallisesti tehokkaammiksi DFA:iksi. Jos NFA:ssa on kuitenkin n tilaa, tuloksena olevalla DFA:lla voi olla jopa 2n tilaa, mikä tekee rakentamisesta joskus epäkäytännöllistä suurille NFA:ille.

NCA ε-siirtymillä

Epädeterministinen äärellinen automaatti ε-siirtymällä (NFA-ε) on lisäyleistys jo NFA:lle. Tämän siirtymäfunktioautomaatin syötteenä saa olla tyhjä merkkijono ε. Siirtymää ilman syöttösymbolia kutsutaan ε-siirtymäksi. Tilakaaviossa nämä siirtymät on yleensä merkitty kreikkalaisella kirjaimella ε. ε-siirtymät tarjoavat kätevän tavan mallintaa järjestelmiä, joiden nykyistä tilaa ei tarkasti tunneta. Jos esimerkiksi mallinnetaan järjestelmää, jonka nykyinen tila ei ole selvä (jonkin syötemerkkijonon käsittelyn jälkeen) ja joka voi olla joko q tai q', voimme lisätä ε-siirtymän näiden kahden tilan välille, jolloin automaatti saadaan molempiin tiloihin samaan aikaan.

Muodollinen määritelmä

NFA-ε esitetään muodollisesti 5-numerolla , , joka koostuu:

Tässä tarkoittaa joukon potenssia ja ε tyhjää merkkijonoa.

ε-Tilan tai tilajoukon sulkeminen

Merkitään tilalle tilojen joukko, joka on saavutettavissa seuraavista siirtymäfunktioissa olevista ε-siirtymistä , eli jos on olemassa sellainen tilajono , että :

Joukko tunnetaan nimellä ε - tilasulkeminen .

ε-sulkeminen on myös määritelty tilajoukolle. NK-automaatin tilajoukon ε-sulkeutuminen määritellään tilajoukoksi, joka voidaan saavuttaa joukon alkioista ε-siirtymillä. Muodollisesti, varten


Hyväksyttävät tilat

Antaa olla merkkijono aakkosten päällä . Automaatti hyväksyy merkkijonon , jos siinä on tilasarja , jossa on seuraavat ehdot:

  1. , missä tahansa
  2. .
Sanat. Ensimmäinen ehto sanoo, että kone lähtee tilasta, joka on saavutettavissa tilasta ε-siirtymien kautta. Toinen ehto sanoo, että lukemisen jälkeen kone valitsee siirtymän kohdasta toiseen ja suorittaa sitten minkä tahansa määrän ε-siirtymiä siirron mukaan . Viimeinen ehto sanoo, että kone hyväksyy, jos viimeinen syötemerkki saa koneen siirtymään johonkin hyväksytyistä tiloista. Muuten automaatin sanotaan hylkäävän merkkijonon. Sen hyväksymä merkkijonojoukko on kieli , jonka automaatti tunnistaa , ja tämä kieli on merkitty nimellä .

Esimerkki

Olkoon NFA-ε binääriaakkosella, joka määrittää, sisältääkö syötemerkkijono parillisen määrän nollia vai parillisen määrän ykkösiä. Huomaa, että 0 esiintymistä on parillinen luku.

Olkoon muodollisessa merkinnässä , jossa siirtymäsuhde voidaan määritellä sellaisella tilasiirtymätaulukolla :

SisäänkäyntiOsavaltio 0 yksi ε
S0 _ {} {} { S 1 , S 3 }
S1_ _ { S2 } _ { S 1 } {}
S2_ _ { S 1 } { S2 } _ {}
S3_ _ { S 3 } { S4 } _ {}
S4_ _ { S4 } _ { S 3 } {}

voidaan ajatella kahden DFA :n liittona  , joista toinen on valtioiden ja toinen valtioiden kanssa . Kieli voidaan kuvata säännöllisen lausekkeen (1*(01*01*)*) ∪ (0*(10*10*)*) antamana säännöllisenä kielenä . Määrittelemme ε-siirtymien avulla, mutta voimme määritellä ilman niitä.

NFA:iden vastaavuus

Sen osoittamiseksi, että NFA-e vastaa NFA:ta, huomaa ensin, että NFA on NFA-e:n erikoistapaus, jää osoittaa, että mille tahansa NFA-e:lle on vastaava NFA.

Olkoon NFA-ε. NFA vastaa , missä tahansa ja .

Silloin NFA-e vastaa NFA:ta. Koska NFA vastaa DFA:ta, NFA-e vastaa myös DFA:ta.

Sulkemisominaisuudet

NFA:n sanotaan olevan suljettu ( binäärisen / unaarisen ) operaation vuoksi. Jos NFA tunnistaa kielet, jotka on saatu soveltamalla tätä toimintoa NFA:n tunnistamiin kieliin. NFA:t on suljettu seuraavien toimintojen osalta.

Koska NFA:t vastaavat ε-siirtymän epädeterministisiä äärellisiä automaatteja (NFA-ε), yllä olevat sulkemiset on todistettu käyttämällä NFA-ε:n sulkeutumisominaisuuksia. Yllä olevista sulkemisominaisuuksista seuraa, että NFA:t tunnistavat vain tavalliset kielet .

NFA:t voidaan rakentaa mistä tahansa säännöllisestä lausekkeesta käyttämällä Thompson-algoritmia .

Ominaisuudet

Kone aloittaa tietystä alkutilasta ja lukee sen aakkosten kirjaimista koostuvan merkkijonon . Automaatti käyttää siirtymäfunktiota Δ määrittääkseen seuraavan tilan nykyisestä tilasta ja juuri luetun merkin tai tyhjän merkkijonon. Kuitenkin "NFA:n seuraava tila ei riipu vain nykyisestä syöttösymbolista, vaan myös mielivaltaisesta määrästä myöhempiä syöttötapahtumia. Kun näitä myöhempiä tapahtumia tapahtuu, on mahdotonta määrittää, missä tilassa kone on” [13] . Jos automaatti on lopullisessa tilassa viimeisen luetun merkin jälkeen, NFA:n sanotaan hyväksyvän merkkijonon, muuten sen sanotaan hylkäävän merkkijonon.

Kaikkien NFA:n hyväksymien merkkijonojen joukko on kieli, jonka NFA hyväksyy. Tämä kieli on tavallinen kieli .

Jokaiselle NFA:lle löytyy deterministinen äärellinen automaatti (DFA), joka hyväksyy saman kielen. Siksi olemassa oleva NFA on mahdollista muuntaa DFA:ksi (mahdollisesti) yksinkertaisemman koneen toteuttamiseksi. Tällainen muunnos suoritetaan käyttämällä osajoukkokonstruktiota , mikä voi johtaa tarvittavien tilojen määrän eksponentiaaliseen kasvuun. Muodollinen todiste osajoukon rakenteesta on artikkelissa " Osajoukon rakentaminen ".

Toteutus

NFA voidaan mallintaa jollakin seuraavista tavoista:

NCA-sovellukset

NFA ja DFA ovat samanarvoisia siinä mielessä, että jos automaatti tunnistaa kielen NFA:lla, myös DFA tunnistaa sen. Päinvastoin on myös totta. Tällaisen vastaavuuden määrittäminen on tärkeää ja hyödyllistä. Tärkeää, koska NFA:ita voidaan käyttää vähentämään matemaattisen työn monimutkaisuutta, jota tarvitaan algoritmiteorian tärkeiden ominaisuuksien määrittämiseen . Esimerkiksi tavallisten kielten sulkeutuneisuus on paljon helpompi todistaa NFA : lla kuin DFA:lla. Hyödyllinen, koska NFA:n luominen tunnistamaan, että kieli on joskus paljon tärkeämpää kuin DFA:n rakentaminen kyseiselle kielelle.

Katso myös

Muistiinpanot

  1. Martin, 2010 , s. 108.
  2. Rabin ja Scott, 1959 , s. 114-125.
  3. Vaalisarja voi johtaa "umpikujaan", jossa mikään siirtymistä ei kelpaa nykyiselle syöttösymbolille, ja tämä tapaus katsotaan epäonnistuneeksi (merkkijono hylätään).
  4. Hopcroft, Ullman, 1979 , s. 19.
  5. Aho, Hopcroft & Ullman 1974 , s. 319.
  6. Hopcroft, Ullman, 1979 , s. 19-20.
  7. Sipser, 1997 , s. 48.
  8. Hopcroft, Motwani, Ullman, 2001 , s. 56.
  9. Aho, Hopcroft & Ullman 1974 , s. 320.
  10. Sipser, 1997 , s. 54.
  11. Hopcroft, Ullman, 1979 , s. 21.
  12. Hopcroft, Motwani, Ullman, 2001 , s. 59.
  13. Äärellisen tilan kone FOLDOC ilmainen online-laskennan sanakirja . Käyttöpäivä: 11. helmikuuta 2020. Arkistoitu alkuperäisestä 4. huhtikuuta 2015.
  14. Chris Calabro. NFA DFA räjäyttää. 27-02-2005 . Haettu 11. helmikuuta 2020. Arkistoitu alkuperäisestä 7. helmikuuta 2013.
  15. Hopcroft, Motwani, Ullman, 2001 , s. 153.

Kirjallisuus