In un DFA, ogni stato ha una transizione su ogni simbolo dell'alfabeto?


12

In caso contrario, cosa significa quando per qualche stato q e qualche simbolo a , δ(q,a) non esiste?


Definirei un automa non deterministico che non ha mai più di una transizione sullo stesso stato e il simbolo di input deterministico. Non si adatta alla definizione di DFA.
reinierpost,

1
Se le regole di un DFA sono organizzate in modo tale che non possa mai essere nello stato q quando il simbolo sul nastro è a , dobbiamo davvero definire δ (q, a) ?
Peter Shor,

4
La risposta è chiaramente che dipende da come si definisce "automa finito deterministico". In quanto tale, non sono sicuro che questa domanda sia del tutto costruttiva, in quanto non esiste una risposta corretta universalmente accettata - cioè, questa domanda sollecita l'opinione e il dibattito.
Patrick87

1
Se si suppone che δ sia una funzione , deve essere definita per tutte le coppie q,a .
vonbrand,

Nella mia nozione di DFA, questa è una condizione di "interruzione" o se si preferisce un salto implicito a uno stato di "rifiuto".
Yves Daoust,

Risposte:


22

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 δ(q,a) non esiste è semplicemente che DFA non accetta la stringa di input.

Sebbene sia possibile creare una definizione di DFA che richieda l' esistenza di δ(q,a) , 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 M è una tupla 5, ( Q , Σ , δ , q0 , F ), costituito da

  1. un insieme finito di stati ( Q )
  2. un set finito di simboli di input chiamato alfabeto ( Σ )
  3. una funzione di transizione ( δ:Q×ΣQ )
  4. uno stato iniziale ( q0Q)
  5. un insieme di stati di accettazione ( FQ ).

Sia w=a1a2an una stringa sopra l'alfabeto Σ . L'automa M accetta la stringa w se esiste una sequenza di stati, r0,r1,,rn , in Q con le seguenti condizioni:

  1. r0=q0
  2. ri+1=δ(ri,ai+1) , peri=0,,n1
  3. rnF .

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 qi con un simbolo di input aj 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.

δ

  1. qerror
  2. (qi,sj)δδ(qi,sj)=qerror

δ

Modifica, gennaio 2019

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):

ϵsaas

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):

as

(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):

δ

s×Σ

È interessante notare che Rabin e Scott definiscono anche automi finiti non deterministici in termini di funzione totale! Pagina 120, Definizione 9:

MS×ΣS

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.


qerror

2
La versione della funzione parziale è quella fornita in Hopcroft e Ullman, se questo fa la differenza. Quindi l'idea che una funzione parziale sia intrinsecamente non deterministica non è affatto standard.
jmite,

1
@jmite Le funzioni parziali non implicano il non determinismo; è che le funzioni totali implicano il determinismo che rende le funzioni totali la scelta migliore. Naturalmente, è una questione più o meno arbitraria delle definizioni che stai usando.
Patrick87

3
δ

1
Come hai mostrato, la versione della funzione parziale ha una traduzione semplice per la versione della funzione totale e, per quanto posso vedere, non ottieni assolutamente nulla, pedagogicamente o altrimenti, consentendo alla funzione di traduzione di essere parziale. Il drago menziona specificamente che la funzione è totale. Perché nel mondo stiamo creando un argomento su qualcosa che è stato chiaramente definito in un libro di testo standard che la maggior parte delle persone segue quando non c'è assolutamente nulla da guadagnare dalla scelta di una definizione non standard?
Alex Smart,

8

δ(q,a)qQaΣQΣ

ε

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.


2
Questo dipende dalla definizione; ce ne sono molti equivalenti in potenza.
Raffaello

3
+1 Meglio attenersi a questa definizione, IMHO, poiché tutti concorderebbero che un FA che definisce esattamente una transizione per ogni coppia (stato, simbolo) costituisce un DFA valido.
Patrick87

1
E questa definizione è completamente sbagliata quando si tenta di estenderla per decidere se un linguaggio libero dal contesto sia deterministico o non deterministico. Gli automi pushdown con transizioni mancanti possono sempre essere trasformati in automi pushdown con esattamente una transizione per stato / simbolo input / simbolo stack. Gli automi pushdown non deterministici con più possibili transizioni per stato / simbolo input / simbolo stack non possono necessariamente essere trasformati in automi pushdown deterministici. (Ad esempio: nel caso in cui la lingua riconosciuta sia libera dal contesto non deterministico.)
Wandering Logic,

2
@jmite Definisci gli automi di trim indipendentemente dai DFA. Penso che sia molto più importante che i DFA minimi abbiano il giusto numero di stati secondo il teorema di Myhill-Nerode, che ottieni solo con stati morti.
Patrick87

4
ϵϵϵ

6

Ci sono definizioni di DFA lungo le linee di

A|δ(q,a)|1qaδ(q,ε)δ(q,a)=aΣA

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.


Penso che la domanda del PO debba essere modificata per includere la definizione formale di DFA.
scaaahu,

0

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.


1
Qual è la differenza rispetto alle risposte esistenti in modo da pubblicare una nuova risposta?
xskxzr,

0

La risposta più semplice è aggiungere uno stato morto per il simbolo sinistro . Come nella conversione da NFA a DFA, otteniamo Φ transizione per alcuni simboli, il che significa che creiamo lo stato morto per questo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.