NFA con numero esponenziale di stati quando deteminizzato


10

Come posso creare un esempio di DFA con stati in cui NFA equivalente ha stati. Ovviamente il set di stati del DFA dovrebbe contenere tutti i sottoinsiemi del set di stati del NFA, ma non so come iniziare. Qualche suggerimento per mettermi sulla buona strada?2nn


Questa domanda non è chiara. In generale, ci sono infiniti DFA equivalenti per un determinato linguaggio normale e infiniti molti NFA equivalenti per un determinato linguaggio normale. Se desideri DFA minimi con stati, questo non è sempre nemmeno possibile, poiché NFA diversi possono riconoscere la stessa lingua e avere un numero diverso di stati, ma corrispondono allo stesso DFA minimo. Se, inoltre, vuoi solo considerare gli NFA "minimi", questo diventa un po 'più interessante ...2n
Patrick87

2
Patrick, penso che il PO significhi un esempio in cui il DFA minimo è esponenzialmente più grande del NFA minimo.
Yuval Filmus,

@ Patrick87 Non sto cercando un algoritmo. Tutto quello che voglio è un esempio di una coppia di macchine: DFA con stati e NFA con stati che accettano la stessa lingua. 2nn
saadtaame,

@saadtaame: è banale: prendi qualsiasi DFA e aggiungi abbastanza stati per raggiungere . Esempio interessante sono quelli in cui il DFA minimo equivalente ha altrettanti stati. 2n
Raffaello

1
Nota che l' articolo di Wikipedia sulla minimizzazione di DFA fa riferimento ad esempi adatti (anche se devi capire tu stesso il piccolo NFA).
Raffaello

Risposte:


18

L'esempio standard è la lingua di tutte le parole su un alfabeto di dimensione che non contiene tutte le diverse lettere. Esiste un NFA che accetta con stati (o stati se si consentono più stati iniziali): prima indovinare una lettera che manca, quindi passare (con un -move) a uno stato accettante con auto-loop per tutte le lettere diverse da .LAnLn+1naϵA

Qualsiasi DFA per richiede almeno stati. Questo può essere visto usando il teorema di Myhill-Nerode. LasciaL2n due diversi sottogruppi diparole A , e w ( S 1 ) , w ( S 2 ) che contengono tutte e solo le lettere in S 1 , S 2 , rispettivamente. Senza perdita di generalità, supponi a S 1S 2 e lascia w = w ( AS1,S2Aw(S1),w(S2)S1,S2aS1S2 . Poi w ( S 1 ) w L mentre w ( S 2 ) w L .w=w(Aa)w(S1)wLw(S2)wL


10

questo è un esercizio nel libro "Finite Automata" di Mark V. Lawson Heriot-Watt University, Edimburgo, pagina 68:

n1(0+1)1(0+1)n1n+12n


10

Immagino che intendi dire che il DFA ottimale ha stati. Forse questo non ti dà 2 n stati, ma è Ω ( 2 n ) .2n2nΩ(2n)

Da "Communication Complexity" di Kushilevitz e Nisan nell'esercizio 12.6:

cLc={www{0,1}c}

LcO(c)Ω(2c)


Inoltre, la prova della seconda parte "richiede" complessità comunicativa, quindi potrebbe non essere adatta ai tuoi scopi.
Timothy Sun,

Grazie per la risposta! Cosa intendi con co-NFA?
Saadtaame,

Fondamentalmente, passare "accettando" con "rifiutando" nella definizione di un NFA. Cioè, se nessuno dei possibili percorsi porta a uno stato di rifiuto, accetti, altrimenti rifiuti.
Timothy Sun,

2c(c+1)2cΘ(c2)

Le lingue finite sono piuttosto noiose in questo senso. Vedi anche qui .
Raffaello

9

A={a,b}Qn={0,1,,n1}An=(Qn,A,En,{0},{0})

En={(i,a,i+1)0in1}{(n1,a,0)}{(i,b,i)1in1}{(i,b,0)1in1}}
n2n

3
Molto intelligente! Il linguaggio accettato da questo automa è , dove consiste di tutte le parole che contengono la lettera di al massimo volte. (an+aWn1b)Wn1an1
Yuval Filmus,

2
@ yuval-filmus Questo esempio non è mio. Volevo dare un riferimento, ma al momento non ricordo dove l'ho visto.
J.-E.
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.