Icke-deterministisk tillståndsmaskin

En icke-deterministisk finit automat (NFA, eng.  nondeterministic finite automaton , NFA) är en deterministisk finit automat (DFA, eng.  deterministic finite automaton , DFA) som inte uppfyller följande villkor:

I synnerhet är alla DFA också en NFA.

Med hjälp av subset-konstruktionsalgoritmen , kan vilken NFA som helst konverteras till en likvärdig DFA, det vill säga en DFA som känner igen samma formella språk [1] . Precis som DFA känner NFA bara igen vanliga språk .

NFA föreslogs 1959 av Michael O. Rabin och Dana Scott [2] som visade att det var likvärdigt med DFA. NFA används vid implementering av reguljära uttryck  - Thompsons konstruktion är en algoritm för att konvertera ett reguljärt uttryck till NFA som effektivt kan känna igen mönstret av strängar. Omvänt kan Kleenes algoritm användas för att omvandla en NFA till ett reguljärt uttryck vars storlek i allmänhet beror exponentiellt på storleken på automaten.

NFA är generaliserat på många sätt, till exempel: icke-deterministiska finita automater med ε-övergångar , finita-tillståndsgivare, pushdown- automater , alternerande automater, ω-automater och probabilistiska automater . Förutom DFA är andra specialfall av NFA kända - entydiga finite automata ( eng.  entydiga finite automata , UFA) och självverifierande finita automater ( eng.  self-verifying finite automata , SVFA).

Informell introduktion

Det finns flera informella likvärdiga beskrivningar:

Formell definition

För en mer elementär introduktion till den formella definitionen, se artikeln " Automatateory ".

Automatisera

En NFA representeras formellt som en 5-tupel bestående av:

Här menas graden av uppsättningen .

Känt språk

Med en NFA känner den igen ett språk som betecknas som och definieras som uppsättningen av alla strängar över alfabetet som accepteras av automaten .

I allmänna termer, enligt de informella förklaringarna ovan , finns det flera likvärdiga formella strängdefinitioner som accepteras av automaten :

Ord. Det första villkoret säger att maskinen startar från staten . Det andra villkoret säger att för varje tecken i strängen övergår maskinen från tillstånd till tillstånd enligt övergångsfunktionen . Det sista villkoret säger att maskinen accepterar en sträng om inmatningssträngen får maskinen att avslutas i sitt slutliga tillstånd. För att en sträng ska accepteras av en automat krävs det inte att någon sekvens av tillstånd slutar i ett sluttillstånd, det räcker att en sekvens leder till ett sådant tillstånd. Annars, d.v.s. om det är omöjligt att gå från till tillståndet från , efter , sägs automaten avvisa strängen. Uppsättningen strängar som automaten accepterar är ett språk som känns igen av automaten , och detta språk betecknas som [9] [10] . Med andra ord, är uppsättningen av alla tillstånd nåbar från staten när strängen hämtas . En sträng accepteras om något sluttillstånd från kan nås från starttillståndet för ingångssträngen [11] [12] .

Initialt tillstånd

Automatdefinitionen ovan använder ett enda initialtillstånd , vilket inte är ett krav. Ibland definieras en NFA med en uppsättning initiala tillstånd. Det finns en enkel konstruktion som tar en NFA med flera initiala tillstånd till en NFA med ett enda initialtillstånd.

Exempel

Följande binära alfabetautomat bestämmer om inmatningssträngen slutar på ett. Låt , där övergångsfunktionen kan definieras av följande tillståndsövergångstabell (jämför med den övre bilden till vänster):

Ingångstat 0 ett

Eftersom uppsättningen innehåller mer än ett tillstånd är automaten icke-deterministisk. Automatspråket kan beskrivas som ett reguljärt språk som ges av ett reguljärt uttryck . (0|1)*1

Alla möjliga tillståndssekvenser för ingångssträngen "1011" visas i figuren nedan. Strängen accepteras av automaten eftersom en av tillståndssekvenserna uppfyller ovanstående definition. Det spelar ingen roll att de andra sekvenserna inte lyckas. Ritningen kan tolkas på två sätt:

Förmågan att läsa samma figur på två sätt visar också motsvarigheten mellan de två förklaringarna ovan.

Däremot avvisas strängen "10" av automaten (alla möjliga sekvenser av tillstånd för ingångssträngen för en given ingång visas i den övre högra figuren), eftersom det inte finns någon väg som når det slutliga tillståndet efter att ha läst den slutliga tecken 0. Även om tillståndet kan nås efter att ha mottagit det första tecknet "1" betyder det inte att inmatningssträngen "10" är acceptabel. Det betyder bara att inmatningssträngen "1" skulle vara acceptabel.

DFA-ekvivalens

En  deterministisk finit automat ( DFA ) kan betraktas som en speciell typ av NFA där övergångsfunktionen för alla tillstånd och bokstäver i alfabetet endast har ett resulterande tillstånd. Således är det tydligt att vilket formellt språk som helst som kan kännas igen med en DFA också kan kännas igen med en NFA.

Omvänt, för alla NFA finns det en DFA som känner igen samma formella språk. En DFA kan byggas med hjälp av delmängdskonstruktionen .

Detta resultat visar att NFA, trots sin stora flexibilitet, inte kan känna igen språk som inte kan kännas igen av någon DFA. Detta är också viktigt i praktiken för att konvertera strukturellt enklare NFA:er till mer beräkningseffektiva DFA:er. Men om NFA har n tillstånd kan den resulterande DFA ha upp till 2n tillstånd, vilket ibland gör konstruktionen opraktisk för stora NFA.

NCA med ε-övergångar

Den icke-deterministiska finita automaten med ε-övergångar (NFA-ε) är en ytterligare generalisering redan för NFA. Denna övergångsfunktionsautomat får ha den tomma strängen ε som indata. En övergång utan att använda en ingångssymbol kallas en ε-övergång. I ett tillståndsdiagram är dessa övergångar vanligtvis märkta med den grekiska bokstaven ε. ε-övergångar ger ett bekvämt sätt att modellera system vars nuvarande tillstånd inte är exakt känt. Till exempel, om vi modellerar ett system vars nuvarande tillstånd inte är klart (efter bearbetning av någon indatasträng) och kan vara antingen q eller q', kan vi lägga till en ε-övergång mellan dessa två tillstånd, vilket för automaten till båda tillstånden vid samtidigt.

Formell definition

NFA-ε representeras formellt av en 5-tupel , , som består av:

Här betyder mängden kraft och ε betyder den tomma strängen .

ε-Stängning av ett tillstånd eller en uppsättning tillstånd

För ett tillstånd, låt beteckna uppsättningen tillstånd som kan nås från följande ε-övergångar i övergångsfunktionerna , nämligen om det finns en sekvens av tillstånd så att:

Uppsättningen är känd som ε- state closure .

ε-förslutningen definieras också för uppsättningen av tillstånd. ε-stängningen av uppsättningen av tillstånd, , av NK-automaten definieras som den uppsättning tillstånd som kan nås från elementen i uppsättningen genom ε-övergångar. Formellt, för


Godkända tillstånd

Låt vara en sträng över alfabetet . Automaten accepterar en sträng om det finns en sekvens av tillstånd med följande villkor:

  1. , var för någon
  2. .
Ord. Det första villkoret säger att maskinen startar från ett tillstånd som är nåbart från tillståndet via ε-övergångar. Det andra villkoret säger att efter avläsning väljer maskinen övergången från till och utför sedan valfritt antal ε-övergångar enligt övergången från till . Det sista villkoret säger att maskinen accepterar om det sista inmatade tecknet får maskinen att övergå till ett av de accepterade tillstånden. Annars sägs automaten avvisa strängen. Uppsättningen strängar som den accepterar är det språk som automaten känner igen , och detta språk betecknas som .

Exempel

Låt det finnas en NFA-ε med ett binärt alfabet som avgör om inmatningssträngen innehåller ett jämnt antal nollor eller ett jämnt antal ettor. Observera att 0 förekomster är ett jämnt tal.

I formell notation, låt , där övergångsrelationen kan definieras av en sådan tillståndsövergångstabell :

Ingångstat 0 ett ε
S0 _ {} {} { S 1 , S 3 }
S1 _ { S2 } _ { S 1 } {}
S2 _ { S 1 } { S2 } _ {}
S3 _ { S 3 } { S4 } _ {}
S4 _ { S4 } _ { S 3 } {}

kan ses som en förening av två DFA  , en med stater och den andra med stater . Språket kan beskrivas som ett reguljärt språk som ges av det reguljära uttrycket (1*(01*01*)*) ∪ (0*(10*10*)*). Vi definierar med ε-övergångar, men vi kan definiera utan dem.

Ekvivalens av NFAs

För att visa att NFA-ε är ekvivalent med NFA, notera först att NFA är ett specialfall av NFA-ε, det återstår att visa att det för alla NFA-ε finns en motsvarande NFA.

Låt det vara NFA-ε. NFA motsvarar , där för alla och .

Då är NFA-ε ekvivalent med NFA. Eftersom NFA är ekvivalent med DFA, är NFA-ε också ekvivalent med DFA.

Stängningsegenskaper

En NFA sägs vara stängd under en ( binär / unär ) operation. Om NFA känner igen språken som erhålls genom att tillämpa denna operation på de språk som erkänns av NFA. NFA är stängda med avseende på följande operationer.

Eftersom NFA är ekvivalenta med ε-transition nondeterministic finite automata (NFA-ε), bevisas stängningarna ovan med användning av stängningsegenskaperna för NFA-ε. Det följer av stängningsegenskaperna ovan att NFA endast känner igen vanliga språk .

NFAs kan byggas från vilket reguljärt uttryck som helst med Thompson-algoritmen .

Egenskaper

Maskinen startar från ett visst initialtillstånd och läser en teckensträng som består av bokstäverna i dess alfabet . Automaten använder övergångsfunktionen Δ för att bestämma nästa tillstånd från det aktuella tillståndet och tecknet eller den tomma strängen som just lästs. Men nästa tillstånd för NFA beror inte bara på den aktuella inmatningssymbolen, utan också på ett godtyckligt antal efterföljande ingångshändelser. Medan dessa efterföljande händelser äger rum är det omöjligt att avgöra vilket tillstånd maskinen är i” [13] . Om automaten är i det slutliga tillståndet efter det senast lästa tecknet, sägs NFA acceptera strängen, annars sägs den avvisa strängen.

Uppsättningen av alla strängar som accepteras av NFA är det språk som NFA accepterar. Detta språk är ett vanligt språk .

För vilken NFA som helst kan man hitta en deterministisk finit automat (DFA) som accepterar samma språk. Därför är det möjligt att konvertera en befintlig NFA till en DFA för att implementera en (eventuellt) enklare maskin. En sådan transformation utförs med hjälp av delmängdskonstruktionen , vilket kan leda till en exponentiell ökning av antalet nödvändiga tillstånd. För ett formellt bevis på delmängdens konstruktion, se artikeln " Undermängdskonstruktion ".

Implementering

NFA kan modelleras på något av följande sätt:

NCA Applications

NFA och DFA är likvärdiga i den meningen att om ett språk känns igen av en NFA av en automat, så känns det också igen av en DFA. Det omvända är också sant. Att fastställa en sådan likvärdighet är viktigt och användbart. Viktigt eftersom NFA kan användas för att minska komplexiteten i det matematiska arbete som behövs för att etablera viktiga egenskaper inom algoritmteorin . Till exempel är det mycket lättare att bevisa att vanliga språk är stängda med NFA än med DFA. Användbart eftersom att bygga en NFA för att erkänna att språket ibland är mycket viktigare än att bygga en DFA för det språket.

Se även

Anteckningar

  1. Martin, 2010 , sid. 108.
  2. Rabin och Scott, 1959 , sid. 114–125.
  3. En valsekvens kan leda till en "återvändsgränd" där ingen av övergångarna är giltiga för den aktuella inmatningssymbolen, och detta fall anses vara ett misslyckande (strängen avvisas).
  4. Hopcroft, Ullman, 1979 , sid. 19.
  5. Aho, Hopcroft & Ullman 1974 , sid. 319.
  6. Hopcroft, Ullman, 1979 , sid. 19-20.
  7. Sipser, 1997 , sid. 48.
  8. Hopcroft, Motwani, Ullman, 2001 , sid. 56.
  9. Aho, Hopcroft & Ullman 1974 , sid. 320.
  10. Sipser, 1997 , sid. 54.
  11. Hopcroft, Ullman, 1979 , sid. 21.
  12. Hopcroft, Motwani, Ullman, 2001 , sid. 59.
  13. Finite-State Machine FOLDOC Free Online Dictionary of Computing . Datum för åtkomst: 11 februari 2020. Arkiverad från originalet den 4 april 2015.
  14. Chris Calabro. NFA till DFA sprängs. 2005-02-27 . Hämtad 11 februari 2020. Arkiverad från originalet 7 februari 2013.
  15. Hopcroft, Motwani, Ullman, 2001 , sid. 153.

Litteratur