Exemplu ASFND
În teoria calculului, un automat cu stare finită nedeterministică (ASFND, în engleză nondeterministic finite automaton, NFA) este o mașină cu stări finite în care pentru fiecare pereche intrarea simbol-stare poate avea mai multe stări de destinație.
Spre deosebire de automatele finite deterministe , NFA-urile pot schimba starea independent de simbolul citit, prin tranziții epsilon . Automatele care prezintă acest tip de tranziții se mai numesc ε-NFA.
Definiție formală
Un automat finit nedeterminist este un cvintuplu {\ displaystyle {\ mathcal {A}} = \ left \ langle \ Sigma, S, \ delta, s_ {0}, F \ right \ rangle} cu:
- {\ displaystyle \ Sigma = \ {a_ {0}, a_ {1}, \ ldots, a_ {n} \}} set finit de simboluri numit alfabet
- {\ displaystyle S = \ {s_ {0}, s_ {1}, \ ldots, s_ {m} \}} ansamblu finit de stări
- {\ displaystyle \ delta: S \ times \ Sigma \ to P (S)} funcție de tranziție , unde {\ displaystyle P (S)} este ansamblul părților lui S
- {\ displaystyle s_ {0} \ în S} stare initiala
- {\ displaystyle F \ subseteq S} set de stări finale
Având un NFA {\ displaystyle {\ mathcal {A}} = \ left \ langle \ Sigma, S, \ delta, s_ {0}, F \ right \ rangle} și un șir {\ displaystyle w \ in \ Sigma ^ {*}} , A acceptă șirul{\ displaystyle w = x_ {1} x_ {2} \ cdots x_ {n}} cu {\ displaystyle x_ {i} \ in \ Sigma} dacă există o succesiune de stări {\ displaystyle R = \ left \ {r_ {0}, r_ {1}, \ cdots, r_ {n} \ right \}} astfel încât:
- {\ displaystyle r_ {0} = s_ {0}}
- {\ displaystyle \ delta (r_ {i}, x_ {i}) \ în R}
- {\ displaystyle \ delta (r_ {i}, x_ {n}) \ cap F \ neq \ emptyset}
Aparatul pornește din starea inițială și citește un șir. Prin relația de tranziție {\ displaystyle \ delta} starea sau stările de destinație sunt determinate pe baza stării curente și a simbolului citit. Dacă după citirea ultimului simbol aparatul se află în cel puțin una dintre stările aparținând lui F, aparatul acceptă șirul, altfel îl respinge. Setul tuturor șirurilor acceptate de automatul de stare finită nedeterminist este limbajul acceptat de automat.
Limbajul acceptat de automatele finite nedeterministe este un limbaj obișnuit .
Echivalența dintre automatul nedeterminist și determinist
Pentru orice automat cu stare finită nedeterministă este posibil să se construiască un automat cu stare finită determinist capabil să recunoască același limbaj folosind construcția subseturilor .
Automat cu stare finită nedeterminist cu tranziții epsilon
Este posibil să se definească o variantă a automatelor finite nedeterministe care să permită tranziții de stare spontane, adică tranziții pe un șir gol {\ displaystyle \ varepsilon} . Pentru astfel de automate este suficient să se redefinească funcția de tranziție ca:
- {\ displaystyle \ delta \ left (Q \ times \ left (\ Sigma \ cup \ left \ {\ varepsilon \ right \} \ right) \ right) \ rightarrow {\ mathcal {P}} \ left (Q \ right) } .
Funcția de închidere {\ displaystyle \ varepsilon}
Funcția de închidere activată {\ displaystyle \ varepsilon} {\ displaystyle \ varepsilon -closure \ left (\ cdot \ right)} este definit inductiv.
Baza: {\ displaystyle q \ in \ varepsilon -closure \ left (q \ right)} .
Ipoteză inductivă: {\ displaystyle p \ in \ varepsilon -closure \ left (q \ right)} .
Pas inductiv: {\ displaystyle \ delta \ left (p, \ varepsilon \ right) = \ left \ {r_ {1}, ..., r_ {n} \ right \} \ subseteq \ varepsilon -closure \ left (q \ right) } .
Funcție de tranziție extinsă
Funcția de tranziție extinsă {\ displaystyle {\ hat {\ delta}} \ left (\ cdot \ right)} trebuie redefinit în termeni de {\ displaystyle \ varepsilon -closure} după cum urmează:
Baza: {\ displaystyle {\ hat {\ delta}} \ left (q, \ varepsilon \ right) = \ varepsilon -closure \ left (q \ right)} .
Ipoteză inductivă: {\ displaystyle {\ hat {\ delta}} \ left (q, z \ right) = \ left \ {p_ {1}, ..., p_ {k} \ right \}} .
Pas inductiv: {\ displaystyle \ omega = za \ wedge \ bigcup _ {i = 1} ^ {k} \ delta \ left (p_ {i}, a \ right) = \ left \ {r_ {1}, ..., r_ {m} \ right \} \ Rightarrow {\ hat {\ delta}} \ left (q, \ omega \ right) = \ bigcup _ {i = 1} ^ {m} \ varepsilon -closure \ left (r_ {i } \ dreapta)} .
Exemplu
Următorul exemplu prezintă un automat finit nedeterminist {\ displaystyle A} , pe alfabetul binar , capabil să determine dacă șirul de intrare conține un număr par de zero sau unul.
{\ displaystyle {\ mathcal {A}} = \ left \ langle \ Sigma, S, \ delta, s_ {0}, F \ right \ rangle} unde este
- {\ displaystyle \ Sigma = \ left \ {0,1 \ right \}}
- {\ displaystyle S = \ left \ {S_ {0}, S_ {1}, S_ {2}, S_ {3}, S_ {4} \ right \}}
- {\ displaystyle s_ {0} = S_ {0}}
- {\ displaystyle F = \ left \ {S_ {1}, S_ {3} \ right \}}
- Funcția de tranziție {\ displaystyle \ delta} este definit de următorul tabel de tranziție:
| 0 | 1 | {\ displaystyle \ varepsilon} |
---|
{\ displaystyle S_ {0}} | {\ displaystyle \ emptyset} | {\ displaystyle \ emptyset} | {\ displaystyle \ left \ {S_ {1}, S_ {3} \ right \}} |
{\ displaystyle S_ {1}} | {\ displaystyle \ left \ {S_ {2} \ right \}} | {\ displaystyle \ left \ {S_ {1} \ right \}} | {\ displaystyle \ emptyset} |
{\ displaystyle S_ {2}} | {\ displaystyle \ left \ {S_ {1} \ right \}} | {\ displaystyle \ left \ {S_ {2} \ right \}} | {\ displaystyle \ emptyset} |
{\ displaystyle S_ {3}} | {\ displaystyle \ left \ {S_ {3} \ right \}} | {\ displaystyle \ left \ {S_ {4} \ right \}} | {\ displaystyle \ emptyset} |
{\ displaystyle S_ {4}} | {\ displaystyle \ left \ {S_ {4} \ right \}} | {\ displaystyle \ left \ {S_ {3} \ right \}} | {\ displaystyle \ emptyset} |
Automat cu stare finită al exemplului
De asemenea, este important să rețineți că {\ displaystyle A} poate fi obținut din unirea a două automate finite deterministe ale căror stări sunt respectiv {\ displaystyle \ left \ {S_ {1}, S_ {2} \ right \}} Și {\ displaystyle \ left \ {S_ {3}, S_ {4} \ right \}} . Limbajul regulat recunoscut de automat este de asemenea exprimabil prin expresie regulată
{\ displaystyle (1 ^ {*} (01 ^ {*} 01 ^ {*}) ^ {*}) + (0 ^ {*} (10 ^ {*} 10 ^ {*}) ^ {*}) }
Bibliografie
- (EN) automat finit nedeterministic, în Academic Press Dictionary of Science and Technology, Oxford, Elsevier Science & Technology, 1992.
- (EN) teoria automatelor , în Encyclopedia of Computer Science, Hoboken, Wiley, 2003.
- ( EN ) John E. Hopcroft , Rajeev Motwani; Jeffrey D. Ullman , Automate finite , în Introducere în teoria automatelor, limbaje și calcul , Addison Wesley, 15 iulie 2006, ISBN 978-0-321-46225-1 .
- (EN) Martin Davis , Ron Sigal; Elaine J. Weyuker, Automate finite , în Computabilitate, Complexitate și Limbi: Fundamente ale științei teoretice a computerelor , Morgan Kaufmann, 17 februarie 1994, ISBN 978-0-12-206382-4 .
Elemente conexe
Alte proiecte
Portal IT : accesați intrările Wikipedia care se ocupă cu IT |