È obbligatorio definire le transizioni su ogni possibile alfabeto in Automi finiti deterministici?


13

Domani è la mia presentazione e voglio chiarire i miei concetti ...

Ho letto che in DFA, "Per ogni stato, dovrebbe essere definita la transizione su tutti i possibili simboli (alfabeto)".

Per ogni stato, definire la transizione su tutti i simboli possibili è obbligatorio in DFA? In caso contrario, ti preghiamo di fare qualche esempio?


1
Benvenuto in CS.SE! Preferiamo che tu faccia solo una domanda per post. Sembra due domande separate. Sarebbe meglio pubblicare il secondo (sugli NFA) separatamente. Inoltre, hai cercato a fondo su questo sito e verificato la definizione formale nel tuo libro di testo? Altrimenti, dovresti farlo prima di chiedere; e dovresti mostrarci nella domanda cosa hai trovato quando l'hai fatto.
DW

Grazie per il caloroso benvenuto, in realtà ho cercato su questo sito e anche su Google, ma sto ottenendo opinioni contrarie che mi stanno confondendo ..
HQuser

La seconda domanda è stata rimossa, ma è possibile trovarla nella cronologia delle modifiche e pubblicarla separatamente come domanda separata utilizzando il pulsante "Poni domanda" in alto a destra. Tuttavia, prima di chiedere, assicurati di fare la ricerca suggerita e dicci nella domanda quale ricerca hai fatto, incluso comunicarci quali libri di testo hai letto. Per quanto riguarda questa domanda, puoi comunque modificare questa domanda per rispondere al feedback che ho dato qui cercando la definizione formale nel tuo libro di testo, includendola nella domanda, e mostrando la tua interpretazione di tale definizione.
DW

9
Ad ogni modo, questo sembra coperto da cs.stackexchange.com/q/12587/755 . Voti della comunità, per favore: è un duplicato?
DW

1
Non capisco davvero la tua domanda. Sembra essere "Ho letto che la definizione è X. È la definizione X?"
David Richerby,

Risposte:


12

Un DFA è specificato dai seguenti dati:

  • Un alfabeto .Σ
  • Un insieme di stati .Q
  • Uno stato iniziale .q0Q
  • Un insieme di finale afferma .FQ
  • Una funzione di transizione .δ:Q×ΣQ

Come puoi vedere dalla firma di , specifica una transizione in ogni stato per ogni simbolo.δ


7
Tranne che i DFA sono talvolta definiti con una funzione di transizione parziale.
Gilles 'SO- smetti di essere malvagio' il

6
Hai ragione, non esiste una definizione "ufficiale" di un DFA. Ma la lettura del PO tradisce l'influenza di questa particolare definizione.
Yuval Filmus,

Dovrebbe dire esplicitamente che la funzione di transizione è totale.
Ryan,

24

Supponiamo che un DFA abbia avuto transizioni mancanti. Cosa succede se si incontra un simbolo che non ha una transizione definita per esso? Il risultato non è definito. Ciò sembrerebbe violare la caratteristica "deterministica" di un DFA.

Tuttavia, è banale trasformare un DFA così incompleto in un DFA completo. Basta aggiungere un nuovo stato illegale mappare tutte le transizioni indefinite allo illegalstato. Infine, aggiungi le transizioni per ogni simbolo dallo illegalstato a se stesso. Questo illegalstato viene spesso chiamato stato sink , poiché una volta che i dati cadono nel sink non c'è modo di uscirne.

Quindi, da una prospettiva pratica, è un po 'discutibile, purché tu abbia un modo ben definito per gestire le transizioni mancanti.


10
Attenzione: una transizione non definita non rende l'automa non deterministico, solo incompleto. Esistono alcune definizioni di DFA che consentono transizioni così indefinite proprio perché è banale completarlo sistematicamente.
Darkhogg,

1
@Darkhogg, non sono necessariamente in disaccordo, ma il determinismo di un DFA incompleto non dipenderebbe da come una particolare implementazione gestisce queste transizioni indefinite / mancanti? E tale implementazione non comporterebbe implicitamente il DFA?
Nathan Davis,

1
No, non dipende dall'implementazione, dipende dalla definizione. Se definisci i DFA come aventi una funzione di transizione totale e poi usi una funzione parziale sicuramente, hai un comportamento indefinito e potresti finire con un non determinismo, ma non è un dato di fatto. Tuttavia, a volte i DFA vengono definiti esplicitamente per utilizzare una funzione parziale e quando si verifica una transizione indefinita il comportamento è "non accetta", punto. Nessun non determinismo o qualcosa di strano lì, per qualsiasi implementazione perché il risultato è definito anche se la transizione non lo è.
Darkhogg,

A proposito: puoi anche effettuare la trasformazione inversa. Prendi un "automa totale" e rimuovi uno stato sink per ottenere un "automa incompleto". Alla fine l'unica differenza è che un automa totale è sempre in grado di leggere una parola fino alla fine, e successivamente decide se accetta la parola o meno, mentre un automa parziale è in grado di rifiutare alcune parole prima di leggere tutte le loro personaggi.
Bakuriu,

5

ΣQρQ×Σ×Qδ:(Q×Σ)2Q|δ(q,σ)|1qQσΣδ(q,σ)qQσΣ

Una parola viene accettata da un NFA se ha una corsa di accettazione. Un automa deterministico ha al massimo una corsa. Un automa completo ha almeno una corsa.

Alcuni autori definiscono gli automi di trim come quelli in cui ogni stato si trova su un percorso da uno stato iniziale a uno stato finale. Per alcune lingue, non è possibile avere automi sia trim che completi. In questi casi, è conveniente mantenere il requisito di completezza fuori dalla definizione di automa deterministico.

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.