In caso contrario, cosa significa quando per qualche stato e qualche simbolo , non esiste?
In caso contrario, cosa significa quando per qualche stato e qualche simbolo , non esiste?
Risposte:
Sembra che ti sia imbattuto in una questione controversa. Apparentemente agli informatici piace discutere. Mi piace sicuramente discutere, quindi ecco qui!
La mia risposta è inequivocabile: no. Un automa finito deterministico non ha bisogno di una transizione da ogni stato per ogni simbolo. Il significato quando non esiste è semplicemente che DFA non accetta la stringa di input.
Sebbene sia possibile creare una definizione di DFA che richieda l' esistenza di , semplicemente non è il caso in cui una transizione mancante rende la struttura risultante (come la si chiama) in alcun modo non deterministica come molti dei commentatori sono sostenendo. Se stai seguendo un corso sulla teoria degli automi, il prossimo argomento saranno i linguaggi senza contesto e gli automi push-down in cui la distinzione tra automi non deterministici e deterministici è critica e devi utilizzare la corretta definizione di non determinismo.
Il non determinismo è associato ad avere più di una transizione legale.
Penso che siamo tutti d'accordo con la seguente definizione di Wikipedia (che mostrerò in un secondo è leggermente ambigua):
Un automa finito deterministico è una tupla 5, ( , , , , ), costituito da
Sia una stringa sopra l'alfabeto . L'automa accetta la stringa se esiste una sequenza di stati, , in con le seguenti condizioni:
L'ambiguità e la controversia riguarda la definizione della funzione di transizione, (numero "3" nel primo elenco puntato). Siamo tutti d'accordo sul fatto che ciò che differenzia un DFA da un NFA è che è una funzione piuttosto che una relazione . Ma è una funzione parziale o una funzione totale ?
La definizione di DFA funziona bene se è una funzione parziale. Data una stringa di input, se si raggiunge uno stato con un simbolo di input dove non esiste uno stato successivo, gli automi semplicemente non accettano.
Inoltre, quando si estende questa definizione per creare la definizione di automi push-down, è necessario distinguere gli automi push-down con funzioni di transizione che sono funzioni parziali classificate come deterministiche, non non deterministiche.
Commenter @Alex Smart giustamente mi critica per non dare riferimenti, né per spiegare perché dovremmo preoccuparci. Quindi ecco qui:
Il motivo per cui ci preoccupiamo della definizione esatta di determinismo vs non determinismo è che alcune classi di automi non deterministici sono più potenti dei loro cugini deterministici e alcune classi di automi non deterministici non sono più potenti dei loro cugini deterministici. Per gli automi finiti e le macchine di Turing le varianti deterministiche e non deterministiche hanno una potenza equivalente. Per gli automi pushdown ci sono lingue in cui la distinzione è importante: ci sono NPDA che accettano la lingua e nessun DPDA accetta la lingua. Per gli automi limitati lineari la domanda è (o è stata l'ultima volta che ho controllato) aperta. L'aumento della potenza di NPDA rispetto a DPDA deriva dal consentire il multiplo transizioni, non dal passaggio della funzione di transizione da una funzione totale a una funzione parziale.
Libri dalla comunità dei compilatori:
Aho e Ullman, Principles of Compiler Design , 1977: prima definisce NFA (pagina 88) con una relazione di transizione, quindi (p. 90-91):
Aho, Sethi e Ullman, Compilatori, principi, tecniche e strumenti , ristampa del 1988, è simile, definisce prima NFA con una relazione di transizione, quindi (p. 115-116):
(Si noti che nei commenti @Alex Smart dice che "il drago menziona specificamente che la funzione è totale". Presumo che stia parlando della versione successiva con il coautore Lam, al quale non ho accesso al momento. )
Appel, Modern Compiler Implementation in Java , 1988 (p. 22):
In un automa finito deterministico (DFA), nessun bordo che esce dallo stesso stato è etichettato con lo stesso simbolo.
Appel prosegue spiegando che quando si utilizza DFA per riconoscere le partite più lunghe facciamo esplicitamente uso delle transizioni mancanti per decidere quando fermarsi (p. 23):
quando viene raggiunto uno stato morto (uno stato non definitivo senza transizioni di output), le variabili [che registrano la corrispondenza più lunga che abbiamo visto finora] indicano quale token è stato abbinato e dove è terminato.
Libri della comunità della teoria dei cambi:
Kohavi, Switching and Finite Automata Theory, 2 / e , 1978, pag. 611 dice:
Poiché un diagramma di stato descrive una macchina deterministica , la transizione di stato successiva deve essere determinata in modo univoco dallo stato attuale e dal simbolo di input attualmente scansionato.
In genere interpreterei in modo univoco il significato di "esattamente uno", non "non più di uno". (Vale a dire, Kohavi sembra dire che il determinismo richiede una funzione totale)
Libri della comunità della teoria del calcolo:
Qui sembra essere più comune definire DFA prima degli NFA e richiedere ai DFA di avere una funzione di transizione totale, ma poi definire NPDA prima dei DPDA e definire il "determinismo" come una restrizione della relazione di transizione al fatto di non avere più di -una voce per ogni coppia stato / simbolo.
Questo è vero per Hopcroft e Ullman, 1979, Lewis e Papadimitriou, 1981, e, in particolare di Sipser, 2006, che usa la definizione di DFA pedagogicamente per introdurre definizioni formali precise, spiegarne l'importanza e dire esplicitamente (p.36):
È interessante notare che Rabin e Scott definiscono anche automi finiti non deterministici in termini di funzione totale! Pagina 120, Definizione 9:
Cioè: la funzione di transizione essendo totale non rende deterministico il sistema!
Sipser 2006 segue Rabin e Scott e usa una funzione di transizione totale da stati / simboli all'insieme di potenza degli stati per le sue definizioni di automi finiti non deterministici, PDA non deterministici e macchine di Turing non deterministiche, ma salta l'argomento del deterministico PDA.
Sia Hopcroft che Ullman, 1979, e Lewis e Papadimitriou, 1981 usano funzioni parziali nelle loro definizioni di PDA deterministici. Prima definiscono NPDA con una relazione di transizione e poi quando arrivano ai PDA, Lewis e Papadimitriou dicono (p. 135),
Un automa pushdown è deterministico , intuitivamente parlando, se esiste al massimo una transizione applicabile a ciascuna configurazione.
Mentre Hopcroft e Ullman dicono (p. 112):
Il PDA ... è deterministico, nel senso che al massimo una mossa è possibile da qualsiasi ID.
In termini di calcolabilità, gli NFA sono equivalenti ai DFA: esiste un algoritmo per convertire da un NFA a un DFA e un DFA è semplicemente banale un NFA che non usa alcun determinismo, quindi entrambi definiscono l'insieme di linguaggi regolari.
Ci sono definizioni di DFA lungo le linee di
In tal caso, non sono necessarie tutte le transizioni. Se l'automa non ha una transizione che si adatta al simbolo di input successivo, rifiuta.
È un buon esercizio dimostrare che entrambe le definizioni sono equivalenti in termini di lingue accettabili.
Nella definizione di DFA, ogni stato dovrebbe avere tutto l'alfabeto che in £. Ad esempio, se £ = {a, b, c} e Q = {q0, q1, q2}, tutti questi stati dovrebbero avere tutti i simboli a, b, c che passano a un altro stato o allo stesso stato.