Ikke-deterministisk tilstandsmaskine

En ikke-deterministisk finit automat (NFA, eng.  nondeterministic finite automaton , NFA) er en deterministisk finite automat (DFA, eng.  deterministic finite automaton , DFA), der ikke opfylder følgende betingelser:

Især er enhver DFA også en NFA.

Ved at bruge undersætkonstruktionsalgoritmen , kan enhver NFA konverteres til en ækvivalent DFA, det vil sige en DFA, der genkender det samme formelle sprog [1] . Ligesom DFA genkender NFA kun almindelige sprog .

NFA blev foreslået i 1959 af Michael O. Rabin og Dana Scott [2] som viste, at det svarede til DFA. NFA bruges i implementeringen af ​​regulære udtryk  - Thompsons konstruktion er en algoritme til at konvertere et regulært udtryk til NFA, der effektivt kan genkende mønstret af strenge. Omvendt kan Kleenes algoritme bruges til at transformere en NFA til et regulært udtryk, hvis størrelse generelt afhænger eksponentielt af størrelsen af ​​automaten.

NFA er generaliseret på mange måder, for eksempel: ikke-deterministiske endelige automater med ε-overgange , finite-state transducere, pushdown- automater , alternerende automater, ω-automater og probabilistiske automater . Ud over DFA kendes andre specielle tilfælde af NFA'er - entydige finite automata ( eng.  unambiguous finite automata , UFA) og self -verifying finite automata ( eng.  self-verifying finite automata , SVFA).

Uformel introduktion

Der er flere uformelle tilsvarende beskrivelser:

Formel definition

For en mere elementær introduktion til den formelle definition, se artiklen " Automata Theory ".

Automater

En NFA er formelt repræsenteret som en 5-tuple bestående af:

Her menes graden af ​​sættet .

Genkendt sprog

Givet en NFA , genkender den et sprog, der er betegnet som og defineret som sættet af alle strenge over alfabetet , der accepteres af automaten .

Generelt set er der ifølge de uformelle forklaringer ovenfor flere ækvivalente formelle strengdefinitioner, der accepteres af automaten :

Ord. Den første betingelse siger, at maskinen starter fra staten . Den anden betingelse siger, at for hvert tegn i strengen , skifter maskinen fra tilstand til tilstand i henhold til overgangsfunktionen . Den sidste betingelse siger, at maskinen accepterer en streng, hvis inputstrengen får maskinen til at afslutte i sin endelige tilstand. For at en streng skal accepteres af en automat , kræves det ikke, at nogen sekvens af tilstande ender i en endelig tilstand, det er nok, at en sekvens fører til en sådan tilstand. Ellers, dvs. hvis det er umuligt at gå fra til tilstanden fra , efter , siges automaten at afvise strengen. Det sæt af strenge, som automaten accepterer, er et sprog , der genkendes af automaten , og dette sprog betegnes som [9] [10] . Med andre ord, er sættet af alle tilstande tilgængeligt fra staten, når strengen hentes . En streng accepteres, hvis en eller anden sluttilstand fra kan nås fra starttilstanden for inputstrengen [11] [12] .

Oprindelig tilstand

Automatdefinitionen ovenfor bruger en enkelt starttilstand , hvilket ikke er et krav. Nogle gange er en NFA defineret med et sæt begyndelsestilstande. Der er en simpel konstruktion , der tager en NFA med flere starttilstande til en NFA med en enkelt starttilstand.

Eksempel

Den følgende binære alfabetautomat bestemmer, om inputstrengen ender på én. Lad , hvor overgangsfunktionen kan defineres af følgende tilstandsovergangstabel (sammenlign med den øverste figur til venstre):

IndgangStat 0 en

Da sættet indeholder mere end én tilstand, er automaten ikke-deterministisk. Automatsproget kan beskrives som et regulært sprog givet af et regulært udtryk . (0|1)*1

Alle mulige tilstandssekvenser for inputstrengen "1011" er vist i figuren nedenfor. Strengen accepteres af automaten , fordi en af ​​tilstandssekvenserne opfylder ovenstående definition. Det gør ikke noget, at de andre sekvenser ikke lykkes. Tegningen kan fortolkes på to måder:

Evnen til at læse den samme figur på to måder viser også ækvivalensen af ​​de to forklaringer ovenfor.

I modsætning hertil afvises strengen "10" af automaten (alle mulige sekvenser af tilstande for inputstrengen for en given input er vist i figuren øverst til højre), da der ikke er nogen sti, der når den endelige tilstand efter at have læst den endelige tegn 0. Selvom tilstanden kan nås efter at have modtaget det første tegn "1", betyder det ikke, at inputstrengen "10" er acceptabel. Det betyder kun, at inputstrengen "1" ville være acceptabel.

DFA-ækvivalens

En  deterministisk endelig automat ( DFA ) kan betragtes som en speciel slags NFA, hvor overgangsfunktionen for enhver tilstand og bogstaver i alfabetet kun har én resulterende tilstand. Det er således klart, at ethvert formelt sprog , der kan genkendes med en DFA, også kan genkendes med en NFA.

Omvendt er der for enhver NFA en DFA, der genkender det samme formelle sprog. En DFA kan bygges ved hjælp af undersætkonstruktionen .

Dette resultat viser, at NFA på trods af sin store fleksibilitet ikke er i stand til at genkende sprog, der ikke kan genkendes af nogen DFA. Dette er også vigtigt i praksis for at konvertere strukturelt enklere NFA'er til mere beregningseffektive DFA'er. Men hvis NFA har n tilstande, kan den resulterende DFA have op til 2n tilstande, hvilket nogle gange gør konstruktionen upraktisk for store NFA'er.

NCA med ε-overgange

Den ikke-deterministiske endelige automat med ε-overgange (NFA-ε) er en yderligere generalisering allerede for NFA. Denne overgangsfunktionsautomat har lov til at have den tomme streng ε som input. En overgang uden brug af et inputsymbol kaldes en ε-overgang. I et tilstandsdiagram er disse overgange normalt mærket med det græske bogstav ε. ε-overgange giver en bekvem måde at modellere systemer, hvis nuværende tilstand ikke er nøjagtigt kendt. For eksempel, hvis vi modellerer et system, hvis nuværende tilstand ikke er klar (efter at have behandlet en inputstreng) og kan være enten q eller q', kan vi tilføje en ε-overgang mellem disse to tilstande, hvilket bringer automaten til begge tilstande kl. den samme tid.

Formel definition

NFA-ε er formelt repræsenteret af en 5-tupel , , som består af:

Her betyder sættets magt , og ε betyder den tomme streng.

ε-Lukning af en tilstand eller et sæt af tilstande

For en tilstand, lad betegne det sæt af tilstande, der kan nås fra følgende ε-overgange i overgangsfunktionerne , nemlig hvis der er en sekvens af tilstande, således at:

Sættet er kendt som ε -tilstandslukningen .

ε-lukningen er også defineret for sættet af tilstande. ε-lukningen af ​​sættet af tilstande, , af NK-automaten er defineret som det sæt af tilstande, der kan nås fra sættets elementer ved ε-overgange. Formelt, for


Acceptable tilstande

Lad være en snor over alfabetet . Automaten accepterer en streng, hvis der er en sekvens af tilstande i med følgende betingelser:

  1. , hvor for evt
  2. .
Ord. Den første betingelse siger, at maskinen starter fra en tilstand, der er tilgængelig fra tilstanden via ε-overgange. Den anden betingelse siger, at efter læsning vælger maskinen overgangen fra til og udfører derefter et vilkårligt antal ε-overgange i henhold til overgangen fra til . Den sidste betingelse siger, at maskinen accepterer, hvis det sidste inputtegn får maskinen til at skifte til en af ​​de accepterede tilstande. Ellers siges automaten at afvise strengen. Det sæt af strenge, den accepterer, er det sprog , som automaten genkender , og dette sprog betegnes som .

Eksempel

Lad der være en NFA-ε med et binært alfabet, der bestemmer, om inputstrengen indeholder et lige antal nuller eller et lige antal enere. Bemærk, at 0 forekomster er et lige tal.

I formel notation, lad , hvor overgangsrelationen kan defineres af en sådan tilstandsovergangstabel :

IndgangStat 0 en ε
S0 _ {} {} { S 1 , S 3 }
S1 _ { S2 } _ { S 1 } {}
S2 _ { S 1 } { S2 } _ {}
S3 _ { S 3 } { S4 } _ {}
S4 _ { S4 } _ { S 3 } {}

kan opfattes som en forening af to DFA'er  , den ene med stater og den anden med stater . Sproget kan beskrives som et regulært sprog givet af det regulære udtryk (1*(01*01*)*) ∪ (0*(10*10*)*). Vi definerer ved hjælp af ε-overgange, men vi kan definere uden dem.

Ækvivalens af NFA'er

For at vise, at NFA-ε er ækvivalent med NFA, skal man først bemærke, at NFA er et specialtilfælde af NFA-ε, det er tilbage at vise, at der for enhver NFA-ε er en tilsvarende NFA.

Lad der være NFA-ε. NFA svarer til , hvor for enhver og .

Så svarer NFA-ε til NFA. Da NFA svarer til DFA, svarer NFA-ε også til DFA.

Lukningsegenskaber

En NFA siges at være lukket under en ( binær / unær ) operation. Hvis NFA genkender de sprog, der opnås ved at anvende denne handling på de sprog, der er anerkendt af NFA. NFA'er er lukket med hensyn til følgende operationer.

Da NFA'er er ækvivalente med ε-transition nondeterministic finite automata (NFA-ε), er lukningerne ovenfor bevist ved hjælp af lukkeegenskaberne for NFA-ε. Det følger af lukningsegenskaberne ovenfor, at NFA'er kun genkender regulære sprog .

NFA'er kan bygges ud fra ethvert regulært udtryk ved hjælp af Thompson-algoritmen .

Egenskaber

Maskinen starter fra en bestemt begyndelsestilstand og læser en tegnstreng bestående af bogstaverne i dens alfabet . Automaten bruger overgangsfunktionen Δ til at bestemme den næste tilstand ud fra den aktuelle tilstand og det tegn eller den tomme streng, der lige er blevet læst. Men "NFA's næste tilstand afhænger ikke kun af det aktuelle inputsymbol, men også af et vilkårligt antal efterfølgende inputhændelser. Mens disse efterfølgende begivenheder finder sted, er det umuligt at afgøre, hvilken tilstand maskinen er i” [13] . Hvis automaten er i den endelige tilstand efter det sidst læste tegn, siges NFA at acceptere strengen, ellers siges den at afvise strengen.

Sættet af alle strenge, der accepteres af NFA, er det sprog, som NFA accepterer. Dette sprog er et almindeligt sprog .

For enhver NFA kan man finde en deterministisk finit automat (DFA), der accepterer det samme sprog. Derfor er det muligt at konvertere en eksisterende NFA til en DFA for at implementere en (evt.) enklere maskine. En sådan transformation udføres ved hjælp af delmængdekonstruktionen , hvilket kan føre til en eksponentiel stigning i antallet af påkrævede tilstande. For et formelt bevis for delmængdekonstruktionen, se artiklen " Undersætkonstruktion [ ".

Implementering

NFA kan modelleres på en af ​​følgende måder:

NCA Applications

NFA og DFA er ækvivalente i den forstand, at hvis et sprog genkendes af en NFA af en automat, genkendes det også af en DFA. Det omvendte er også sandt. Det er vigtigt og nyttigt at etablere en sådan ækvivalens. Vigtigt, fordi NFA'er kan bruges til at reducere kompleksiteten af ​​det matematiske arbejde, der er nødvendigt for at etablere vigtige egenskaber i algoritmeteori . For eksempel er det meget lettere at bevise lukketheden af ​​regulære sprog med NFA'er end med DFA'er. Nyttigt, fordi det at opbygge en NFA for at anerkende, at sprog nogle gange er meget vigtigere end at bygge en DFA for det sprog.

Se også

Noter

  1. Martin, 2010 , s. 108.
  2. Rabin og Scott, 1959 , s. 114-125.
  3. En valgsekvens kan føre til en "blindgyde", hvor ingen af ​​overgangene er gyldige for det aktuelle inputsymbol, og denne sag betragtes som en fiasko (strengen afvises).
  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. Finite-State Machine FOLDOC Free Online Dictionary of Computing . Dato for adgang: 11. februar 2020. Arkiveret fra originalen den 4. april 2015.
  14. Chris Calabro. NFA til DFA sprænges. 2005-02-27 . Hentet 11. februar 2020. Arkiveret fra originalen 7. februar 2013.
  15. Hopcroft, Motwani, Ullman, 2001 , s. 153.

Litteratur