Automa a stati finiti non deterministico: differenze tra le versioni

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
Xqbot (discussione | contributi)
Xqbot (discussione | contributi)
m [r2.5.2] Bot: Modifico: uk:Недетермінований автомат; modifiche estetiche
Riga 14: Riga 14:
When the last input symbol is consumed the NFA accepts if and only if there is ''some'' set of transitions it could make that will take it to an accepting state. Equivalently, it rejects iff no matter what choices it makes it would not end in an accepting state.
When the last input symbol is consumed the NFA accepts if and only if there is ''some'' set of transitions it could make that will take it to an accepting state. Equivalently, it rejects iff no matter what choices it makes it would not end in an accepting state.
-->
-->
==Definizione formale==
== Definizione formale ==


Un automa a stati finiti non deterministico è una quintupla,
Un automa a stati finiti non deterministico è una quintupla,
Riga 34: Riga 34:
Il linguaggio accettato da questo tipo di automa è un [[linguaggio regolare]].
Il linguaggio accettato da questo tipo di automa è un [[linguaggio regolare]].


==Equivalenza tra automa non deterministico e deterministico==
== Equivalenza tra automa non deterministico e deterministico ==
Per ogni automa a stati finiti non deterministico può essere trovato un [[automa a stati finiti deterministico]] che accetta lo stesso linguaggio. Quindi è possibile convertire un automa a stati finiti non deterministico in uno deterministico per realizzare una macchina più semplice; quest'operazione può essere effettuata utilizzando la [[costruzione dei sottoinsiemi]].
Per ogni automa a stati finiti non deterministico può essere trovato un [[automa a stati finiti deterministico]] che accetta lo stesso linguaggio. Quindi è possibile convertire un automa a stati finiti non deterministico in uno deterministico per realizzare una macchina più semplice; quest'operazione può essere effettuata utilizzando la [[costruzione dei sottoinsiemi]].


==Esempio==
== Esempio ==


Il seguente esempio mostra un automa a stati finiti non deterministico '''M''', con alfabeto binario, il quale determina se l'input contiene un numero pari di zero o un numero pari di uno.
Il seguente esempio mostra un automa a stati finiti non deterministico '''M''', con alfabeto binario, il quale determina se l'input contiene un numero pari di zero o un numero pari di uno.
Riga 88: Riga 88:
:<math>(1^*(01^*01^*)^*) \cup (0^*(10^*10^*)^*) </math>
:<math>(1^*(01^*01^*)^*) \cup (0^*(10^*10^*)^*) </math>


==Automa a stati finiti non deterministico con <math>\epsilon</math>-transizioni==
== Automa a stati finiti non deterministico con <math>\epsilon</math>-transizioni ==
È possibile definire una variante degli automi a stati finiti non deterministici che permetta transizioni di stato spontanee, ossia transizioni su stringa vuota <math>\epsilon</math>. Per tali automi è sufficiente ridefinire la funzione di transizione come:
È possibile definire una variante degli automi a stati finiti non deterministici che permetta transizioni di stato spontanee, ossia transizioni su stringa vuota <math>\epsilon</math>. Per tali automi è sufficiente ridefinire la funzione di transizione come:
:<math>\delta\left(Q\times\left(\Sigma\cup\left\{ \epsilon\right\} \right)\right)\rightarrow\mathcal{P}\left(Q\right)</math>.
:<math>\delta\left(Q\times\left(\Sigma\cup\left\{ \epsilon\right\} \right)\right)\rightarrow\mathcal{P}\left(Q\right)</math>.


===Funzione di chiusura su <math>\epsilon</math>===
=== Funzione di chiusura su <math>\epsilon</math> ===
La funzione di chiusura su <math>\epsilon</math> <math>\epsilon-closure\left(\cdot\right)</math> si definisce induttivamente.<br />
La funzione di chiusura su <math>\epsilon</math> <math>\epsilon-closure\left(\cdot\right)</math> si definisce induttivamente.<br />
Base: <math>q\in\epsilon-closure\left(q\right)</math>.<br />
Base: <math>q\in\epsilon-closure\left(q\right)</math>.<br />
Riga 98: Riga 98:
Passo induttivo: <math>\delta\left(p,\epsilon\right)=\left\{ r_{1},...,r_{n}\right\} \subseteq\epsilon-closure\left(q\right)</math>.
Passo induttivo: <math>\delta\left(p,\epsilon\right)=\left\{ r_{1},...,r_{n}\right\} \subseteq\epsilon-closure\left(q\right)</math>.


===Funzione di transizione estesa===
=== Funzione di transizione estesa ===
La funzione di transizione estesa <math>\hat{\delta}\left(\cdot\right)</math> va ridefinita in termini di <math>\epsilon-closure</math> come segue:<br />
La funzione di transizione estesa <math>\hat{\delta}\left(\cdot\right)</math> va ridefinita in termini di <math>\epsilon-closure</math> come segue:<br />
Base: <math>\hat{\delta}\left(q,\epsilon\right)=\epsilon-closure\left(q\right)</math>.<br />
Base: <math>\hat{\delta}\left(q,\epsilon\right)=\epsilon-closure\left(q\right)</math>.<br />
Riga 104: Riga 104:
Passo induttivo: <math>\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}\epsilon-closure\left(r_{i}\right)</math>.
Passo induttivo: <math>\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}\epsilon-closure\left(r_{i}\right)</math>.


==Voci correlate==
== Voci correlate ==
* [[Automa a stati finiti]]
* [[Automa a stati finiti]]
* [[Automa a stati finiti deterministico]]
* [[Automa a stati finiti deterministico]]
Riga 126: Riga 126:
[[sh:Nedeterministički konačni automat]]
[[sh:Nedeterministički konačni automat]]
[[sr:Недетерминистички коначни аутомат]]
[[sr:Недетерминистички коначни аутомат]]
[[uk:Недетермінований автомат]]
[[uk:Автомат недетермінований]]
[[zh:非确定有限状态自动机]]
[[zh:非确定有限状态自动机]]

Versione delle 13:09, 25 nov 2010

Template:Avvisounicode Nella teoria del calcolo, un automa a stati finiti non deterministico (NFA in inglese) è una macchina a stati finiti dove per ogni coppia stato-simbolo in input ci possono essere più stati di destinazione.

Definizione formale

Un automa a stati finiti non deterministico è una quintupla, (S, Σ, T, s0, A), formata da:

  • un insieme finito di stati (S)
  • un insieme finito dei possibili simboli in input (Σ), chiamato alfabeto
  • una relazione di transizione (T : S × Σ) → P(S)).
  • uno stato iniziale (s0S)
  • un insieme di stati A di accettazione (AS)

Dato l'automa a stati finiti non deterministico M tale che M = (S, Σ, T, s0, A), e X è una stringa dell'alfabeto Σ. M accetta le stringhe X se esiste un rappresentazione di X nella forma x1x2 ... xn (xi ∈ Σ), e una sequenza di stati r0,r1, ..., rn, riS, concordate a queste definizioni:

  1. r0 = s0
  2. riT(ri-1, xi ), for i = 1, ..., n
  3. rnA.

La macchina parte dallo stato iniziale e legge un stringa. Attraverso la relazione di transizione T determina il prossimo/i stato/i di destinazione usando lo stato corrente e il simbolo appena letto. Se finisce in uno stato di accettazione la macchina accetta la stringa, altrimenti rifiuta la stringa. L'insieme di tutte le stringhe accettate dall'automa a stati finiti non deterministico è il linguaggio accettato dall'automa.

Il linguaggio accettato da questo tipo di automa è un linguaggio regolare.

Equivalenza tra automa non deterministico e deterministico

Per ogni automa a stati finiti non deterministico può essere trovato un automa a stati finiti deterministico che accetta lo stesso linguaggio. Quindi è possibile convertire un automa a stati finiti non deterministico in uno deterministico per realizzare una macchina più semplice; quest'operazione può essere effettuata utilizzando la costruzione dei sottoinsiemi.

Esempio

Il seguente esempio mostra un automa a stati finiti non deterministico M, con alfabeto binario, il quale determina se l'input contiene un numero pari di zero o un numero pari di uno.

M = (S, Σ, T, s0, A) dove

  • Σ = {0, 1},
  • S = {S0, S1, S2, S3, S4},
  • s0 = S0,
  • A = {S1, S3}, e
  • La funzione di transizione T può essere definita da questa tabella di transizione di stato:
0
1
ε
S0
{}
{}
{S1, S3}
S1
{S2}
{S1}
{}
S2
{S1}
{S2}
{}
S3
{S3}
{S4}
{}
S4
{S4}
{S3}
{}

Il diagramma di stato per M è:

M può essere visto come l'unione di due automi a stati finiti deterministico: uno con gli stati{S2, S1} e l'altro con gli stati {S3, S4}.

Il linguaggio di M può essere descritto da un linguaggio regolare attraverso la seguente espressione regolare:

Automa a stati finiti non deterministico con -transizioni

È possibile definire una variante degli automi a stati finiti non deterministici che permetta transizioni di stato spontanee, ossia transizioni su stringa vuota . Per tali automi è sufficiente ridefinire la funzione di transizione come:

.

Funzione di chiusura su

La funzione di chiusura su si definisce induttivamente.
Base: .
Ipotesi induttiva: .
Passo induttivo: .

Funzione di transizione estesa

La funzione di transizione estesa va ridefinita in termini di come segue:
Base: .
Ipotesi induttiva: .
Passo induttivo: .

Voci correlate

Teoria degli automi: linguaggi formali e grammatiche formali
Gerarchia di Chomsky Grammatica formale Linguaggio Automa minimo
Tipo-0 (illimitato) Ricorsivamente enumerabile Macchina di Turing
(illimitato) Ricorsivo Decider
Tipo-1 Dipendente dal contesto Dipendente dal contesto Automa lineare
Tipo-2 Libera dal contesto Libero dal contesto Automa a pila ND
Tipo-3 Regolare Regolare A stati finiti
Ciascuna categoria di linguaggio o grammatica è un sottoinsieme proprio della categoria immediatamente sovrastante.