Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> Computer Programming Languages >> .

Come distinguere tra DFA e ndfa

deterministici e non deterministici Finite Automata sono due tipi di concettuali "macchine" progettate per verificare se una data stringa di simboli determinate regole - se è accettabile come un messaggio in una lingua o un codice . Il automi legge un unico simbolo alla volta , ed esiste sempre in un particolare " stato". Ogni stato un automa può essere in ha un insieme di regole per reagire al simbolo successivo da leggere - si può passare ad un altro stato particolare , o rimanere la stessa . Se , dopo una stringa intera è stato letto , l' automa è entrata in uno di un insieme di stati finali accettabili " , " la stringa è grammaticalmente accettabile all'interno del linguaggio del automi sta testando per . Istruzioni
1

Esaminare le regole del automi . Questi includono : . Tutti i possibili stati del automi , il suo insieme di stati finali e gli effetti di ogni possibile simbolo su ogni stato
2

check per vedere se uno degli stati del automi hanno più possibili reazioni un simbolo particolare . Se uno lo fanno , gli automi non è deterministico - un ndfa . Per esempio, se lo stato iniziale di un automa in grado di reagire con il simbolo " A" sia spostando ad un secondo stato o rimanendo lo stesso , si tratta di un ndfa . Un ndfa restituisce un risultato positivo se non vi è un modo per raggiungere uno stato finale utilizzando una data stringa .
3

Tenete a mente che un DFA esiste per ogni ndfa . Perché un ndfa restituendo un risultato positivo per una stringa specifica deve avere almeno un percorso di successo attraverso di esso per quella stringa , ci deve per forza essere un corrispondente DFA che accetta la stringa , che contiene solo le regole per il percorso unico che è stato utilizzato . Ecco un esempio molto semplice : Supponiamo di avere un ndfa con uno stato finale chiamato S1 , la cui iniziale S0 Stato risponde il simbolo " A" sia cambiando a S1 o rimanendo in S0 . Questa macchina avrebbe accettato una stringa costituita semplicemente di " A ", perché c'è un possibile percorso di S1 , e non vi è un corrispondente DFA in cui " A" cambia sempre da S1 a S0 , erogazione con il percorso inutilizzato
.

 

Programmazione © www.354353.com