En deterministisk endelig automat ( DFA , DFA , eng. deterministic finite automaton , DFSA , eng. deterministic finite-state automaton , DFSM eng. deterministic finite-state machine ), også kendt som en deterministisk finite-genkendelse , er en finit automat , der accepterer eller afviser en given streng karakterer ved at passere gennem sekvensen af tilstande defineret af strengen [1] . Har en enkelt sekvens af tilstande under drift. McCulloch og Walter Pitts var blandt de første forskere, der foreslog et statsmaskine-lignende koncept i 1943 [2] [3] .
Figuren illustrerer en deterministisk finite state-maskine ved hjælp af et tilstandsdiagram . I dette eksempel er der tre tilstande - S 0 , S 1 og S 2 (afspejlet i figuren af cirkler). Automaten accepterer en endelig række af nuller og ettaller som input. For hver tilstand er der en overgangspil, der fører fra tilstand til tilstand for både 0 og 1. Efter at have læst et symbol, går DFA deterministisk fra en tilstand til en anden, efter overgangspilen. Hvis f.eks. automaten er i tilstand S0, og indgangssymbolet er 1, så går automaten deterministisk over til tilstand S1 . En DFA har en begyndelsestilstand (grafisk repræsenteret af en ud af ingenting-pil), hvorfra beregningen starter, og et sæt endelige tilstande (grafisk repræsenteret som en dobbelt cirkel), der bestemmer, om beregningen lykkes.
DFA er defineret som et abstrakt matematisk begreb, men implementeres ofte i hardware og software for at løse specifikke problemer. For eksempel kan en DFA modellere programmer, der afgør, om en brugerindtastet e - mailadresse er gyldig.
DFA genkender præcis en række regulære sprog [1] , der blandt andet er nyttige til leksikalsk analyse og mønstermatchning . DFA'er kan bygges ud fra nondeterministic finite automata ( NFA'er ) ved at reducere DFA'er til NFA'er .
En deterministisk finit automat er en 5 -tupel bestående af
Lad være en snor over alfabetet . Automaten accepterer en streng, hvis tilstandssekvensen eksisterer i med følgende betingelser
Med andre ord siger den første betingelse, at maskinen starter fra staten . Den anden betingelse siger, at for en given strengkarakter går maskinen over fra tilstand til tilstand i henhold til overgangsfunktionen . Den sidste betingelse siger, at maskinen accepterer, hvis strengens sidste inputtegn får maskinen til at gå til en af de endelige tilstande. Ellers siges automaten at afvise strengen. Det sæt af strenge, der accepterer, er et sprog , der genkendes af automaten , og dette sprog er betegnet med .
En deterministisk endelig tilstandsmaskine uden sluttilstande og ingen starttilstand er kendt som et overgangssystem eller semiautomaton .
For en mere komplet formel definition, se artiklen " Automata Theory ".
Ifølge ovenstående definition er deterministiske endelige automater altid komplette - de definerer en overgang for hver tilstand og for hvert inputsymbol.
Mens den anvendte definition er den mest almindeligt accepterede, bruger nogle forfattere udtrykket deterministisk endelig automat om et lidt anderledes koncept - en automat, der højst definerer én overgang (i stedet for præcis én som i ovenstående definition) for hver tilstand og hvert inputsymbol . Overgangsfunktionen er tilladt at være delvist defineret . Hvis overgangen ikke er defineret, stopper maskinen.
Følgende eksempel er en binær DFA, der kræver, at inputtet indeholder et lige antal nuller.
hvor
0 | en | |
S1 _ | S2 _ | S1 _ |
S2 _ | S1 _ | S2 _ |
Sluttilstanden svarer til et lige antal nuller i inputstrengen, mens den taler om et ulige tal. 1 i inputstrømmen ændrer ikke automatens tilstand. Når inputstrengen slutter, vil den endelige tilstand indikere, om inputstrengen indeholdt et lige antal nuller eller ej. Hvis inputstrengen indeholder et lige antal nuller, vil den ende i den endelige tilstand , så inputstrengen vil blive accepteret.
Det sprog, der genkendes, er et regulært sprog defineret af et regulært udtryk , hvor er en Kleene-stjerne , hvilket for eksempel betyder et hvilket som helst tal (muligvis nul) af på hinanden følgende 1'ere. ((1*) 0 (1*) 0 (1*))**1*
Hvis DFA genkender sprog, der opnås ved at anvende en operation på sprog, der er anerkendt af DFA, siges DFA at være lukket under operationen. DFA'er er lukket under følgende handlinger.
For hver operation bestemmes den optimale konstruktion, under hensyntagen til antallet af tilstande, i studiet af positionskompleksitet .
Fordi DFA'er svarer til nondeterministic finite automata (NFA'er ) , kan disse lukninger bevises ved hjælp af NFA-lukningsegenskaber.
Driften af en given DFA kan ses som en sekvens af superpositioner af en meget generel formulering af overgangsfunktioner på sig selv. Vi vil bygge sådan en funktion her.
For et givet inputsymbol kan du konstruere en overgangsfunktion ved at definere for alle . (Denne teknik kaldes currying .) I dette perspektiv "virker" på Q-tilstanden for at producere en anden tilstand. Man kan overveje resultatet af en superposition af funktioner , successivt anvendt på forskellige funktioner , og så videre. Givet et par bogstaver , kan man definere en ny funktion , hvor betegner en superposition af funktioner.
Det er klart, at denne proces kan fortsættes rekursivt, hvilket giver følgende rekursive definition :
, hvor er den tomme streng, og , hvor og .Funktionen er defineret for alle ord . DFA's arbejde er en sekvens af superpositioner på sig selv.
Gentagelsen af superpositioner af funktioner danner en monoid . For overgangsfunktioner er denne monoid kendt som overgangsmonoiden , eller nogle gange som transformationshalvgruppen . Konstruktionen kan vendes - hvis den er givet , kan man rekonstruere , så de to beskrivelser er ækvivalente.
En lokal automat er en DFA, hvor alle buer med den samme etiket fører til det samme toppunkt. Lokale automater accepterer klassen af formelle sprog , for hvilke et ords tilhørsforhold til et sprog bestemmes af et "glidende vindue" med længden to på ordet [5] [6]
Myhill-grafen over alfabetet A er en rettet graf med toppunktsæt A og en delmængde af toppunkter mærket "initial" og "terminal". Sproget, der accepteres af Myhill-grafen, er sættet af dirigerede stier fra startspidsen til slutspidsen - grafen fungerer så som en automat [5] . Klassen af sprog, der opfattes af Myhill-grafer, er klassen af lokale sprog [7] .
Når starttilstanden og sluttilstanden ignoreres, kan en DFA med tilstande og et størrelsesalfabet opfattes som en vertex -digraf , hvor alle toppunkter har mærket udgående buer (outcome-digraph ). Det er kendt, at når er et fast heltal, med stor sandsynlighed er den største stærkt forbundne komponent ( SCC), hvor digrafen med udfald er valgt ensartet tilfældigt, har en lineær størrelse og kan nås fra ethvert toppunkt [8] . Det blev også bevist, at når , stiger som , har hele digrafen en faseovergang til en stærk forbindelse, svarende til Erdős-Rényi-modellen for tilslutning [9] .
I en tilfældig DFA er det maksimale antal toppunkter, der kan nås fra ét toppunkt med høj sandsynlighed, meget tæt på antallet af toppunkter i den største stærkt forbundne komponent [8] [10] . Dette gælder også for den største genererede undergraf med minimum en i grader, som kan opfattes som en rettet version af -kernen [9] .
DFA er en af de mest praktiske beregningsmodeller, da der er en triviel onlinealgoritme lineær tid og konstant hukommelse til simulering af DFA på inputstrømmen. Der er også effektive søgealgoritmer til DFA-genkendelse:
Fordi DFA'er kan reduceres til en kanonisk form ( minimale DFA'er ), er der også to effektive algoritmer til at bestemme
DFA'er er beregningsmæssigt ækvivalente med ikke- deterministiske endelige automater (NFA'er, ikke- deterministiske endelige automater , NFA'er). Dette skyldes for det første, at enhver DFA også er en NFA, så en NFA kan gøre alt, hvad en DFA kan. Også givet en NFA kan man ved at reducere en DFA til en NFA konstruere en DFA, der genkender det samme sprog som NFA, selvom en DFA kan have eksponentielt flere tilstande end en NFA [11] [12] . Men selvom NFA'er er beregningsmæssigt ækvivalente med DFA'er, løses ovenstående problemer ikke nødvendigvis effektivt for NFA'er. Ikke-universalitetsproblemet for en NFA har PSPACE -kompleksitet , da der er små NFA'er med de mindste eksponentielle ord, der skal afvises. En DFA er universel, hvis og kun hvis alle tilstande er endelige, men dette er ikke sandt for en NFA. Ækvivalens-, inklusion- og minimeringsproblemerne har også PSPACE- kompleksitet , da de kræver dannelsen af komplementet af NFA, hvilket fører til en eksponentiel størrelseseksplosion [13] .
På den anden side er statsmaskiner stærkt begrænset på de sprog, de genkender. Mange simple sprog, inklusive ethvert problem, der kræver mere end konstant hukommelse at løse, kan ikke genkendes af DFA. Et klassisk eksempel på et simpelt sprog, som ingen DFA kan genkende, er parenteser eller Dyck-sprog , det vil sige et sprog, der består af korrekt adskilte parenteser, som i ordet "(()())". Det er intuitivt klart, at ingen DFA kan genkende Dycks sprog, da DFA'er ikke kan lave beregninger - automater som DFA'er har brug for en tilstand, der repræsenterer et hvilket som helst muligt antal "åbne" parenteser, hvilket betyder, at de skal have et ubegrænset antal tilstande. Et andet simpelt eksempel er et sprog, der består af strenge af formen for et begrænset, men vilkårligt stort antal bogstaver a efterfulgt af lige mange bogstaver b [14] .
Formelle sprog og formelle grammatikker | |
---|---|
Generelle begreber | |
Type 0 | |
Type 1 |
|
Type 2 | |
Type 3 |
|
parsing |