Come dimostrare che i DFA di NFA possono avere un numero esponenziale di stati?


20

Tutti gli automi finiti non deterministici possono essere trasformati in automi finiti deterministici equivalenti. Tuttavia, un automa finito deterministico consente solo una singola freccia per simbolo che punta da uno stato. Pertanto, i suoi stati dovrebbero essere membri del gruppo di potere degli stati della NFA. Ciò sembra indicare che il numero di stati del DFA potrebbe scalare esponenzialmente in termini di numero di stati del NFA. Tuttavia, mi chiedevo come dimostrarlo.


7
È una domanda ragionevole e la costruzione non è del tutto ovvia, ma potrebbe comunque essere una domanda per i compiti. Quindi, sarebbe utile sapere perché vuoi sapere.

ci sono alcune costruzioni qui, ma sembra che dovrebbe essere in un documento da qualche parte. non so di un riferimento. anche al di sopra della mia testa penso che ci sia una costruzione tale che l'NFA conta in binario nei suoi stati attivi e accetta solo dopo circa transizioni ...? 2n
vzn,

Risposte:


15

Un'operazione che trasforma un NFA in un altro NFA ma non lo fa per un DFA è l'inversione (punta tutte le frecce al contrario e scambia gli stati iniziali con stati accettanti). La lingua riconosciuta dall'automa trasformato è la lingua invertita .LR={un1u0u0un1L}

Quindi un'idea è quella di cercare un linguaggio che abbia una costruzione asimmetrica. Andando avanti, questa lingua dovrebbe essere riconosciuta ispezionando i primi simboli, richiedendo solo n + O ( 1 ) stati. Andando indietro, dovrebbe essere necessario mantenere una memoria degli ultimi n stati, che richiede A n + O ( 1 ) indica dove A è la dimensione dell'alfabeto.nn+O(1)nAn+O(1)A

Stiamo cercando una lingua della forma cui M n è costituito da parole di lunghezza n , S è un sottoinsieme non banale dell'alfabeto e M non fornisce alcun ulteriore vincolo. Potremmo anche scegliere l'alfabeto più semplice A = { a , b } (un alfabeto singleton non lo farà, non si ottengono NFA più piccoli lì) e M = A . Una S non banale significa S = { a } . Quanto aMnSMMnnSMA={a,b}M=ASS={a} , richiediamo che non sia correlato con S (quindi il DFA per il linguaggio invertito dovrà conservare la memoria di S ): prendere M n = A n .MnSSMn=An

Quindi lascia . È riconosciuto da un semplice DFA con n + 2 stati.Ln=(a|b)na(a|b)n+2

dfa

Inversione produce un NFA che riconosce .LnR=(a|b)a(a|b)n

NFA

Il DFA minimo che riconosce ha almeno 2 n + 1 stati. Questo perché tutte le parole di lunghezza 2 n + 1 devono raggiungere stati distinti nel DFA. (In altre parole, appartengono a classi distinte di equivalenza Myhill-Nerode = a e v k = b . Quindi u b kL R n e v b kL R n ( b kLnR2n+12n+1 .) Per dimostrarlo, prendi due parole distinte e lascia che k sia una posizione in cui differiscono ( u kv k ). Senza perdita di generalità, supponiamo u ku,vAn+1kukvkuk=avk=bubkLnRvbkLnRbkè un'estensione distinguendosi per e v ). Seuv e v portato allo stesso stato in DFA riconoscere L R n allora lo sarebbe u b k e v b kuvLnRubkvbk, il che è impossibile poiché uno porta a uno stato accettante e l'altro no.

Ringraziamento: questo esempio è stato citato in Wikipedia senza spiegazioni. L'articolo fornisce un riferimento a un articolo che non ho letto che dà un limite più stretto:
Leiss, Ernst (1981), "Rappresentazione succinta di linguaggi regolari da parte di automi booleani", Theoretical Computer Science 13 (3): 323–330, doi: 10.1016 / S0304-3975 (81) 80005-9 .


Risposta logica: gli stati in DFA sono usati come memoria (per memorizzare alcune informazioni come l'interruttore di accensione / spegnimento), quindi ciò che può essere rappresentato in un singolo stato in DFA può essere rappresentato usando una combinazione di stati in NFA equivalente. Questo è il motivo per cui NFA ha meno stati rispetto a DFA equivalente. Ora se hai stati in un set Q allora un set di tutte le possibili combinazioni di Q è power-set che è 2 n , quindi se invertiamo un NFA dinQQ2n stati in DFA equivalente, allora DFA sarà composto al massimo da 2 n stati. - Ha senso? n2n
Grijesh Chauhan,

1
@GrijeshChauhan Non è questa la domanda. Sì, è facile vedere che per ogni NFA con stati esiste un DFA con al massimo 2 n stati. Ma qui vogliamo vedere che il limite è raggiunto, cioè che per ogni n esiste un NFA di stato n tale che il DFA equivalente più piccolo abbia almeno 2 n stati (o vicino ad esso, qui provo il limite 2 n - 1 ). n2nnn 2n2n1
Gilles 'SO- smetti di essere malvagio' il

hmm ... dopo aver letto la tua risposta due volte e dal commento "Ma qui vogliamo vedere che il limite è stato raggiunto" ora avrei potuto capire. Grazie.
Grijesh Chauhan,

8

Considera la seguente famiglia di lingue: Ln={x1,x2,,xk#xk+1:i{1,,k} with xi=xk+1}

L'alfabeto di è { # , 1 , ... , n } .Ln{#,1,,n}

Esiste un NFA con stati che riconosce la lingua L n . Ha n copie. Nella i copia supponiamo che l'ultima lettera sarà io e controlliamo le nostre ipotesi. È semplice costruire una copia del genere con 3 stati. L'unico non determinismo è nello stato iniziale.O(n)Lnnii3

Tuttavia, non esiste un DFA che riconosca con meno di 2 O ( nLn2O(n){1,,n}

Sono abbastanza sicuro che il libro di Sipser abbia questo esempio.


La costruzione nel libro di Siper produce un DFA con esattamente 2 ^ n stati. Se l'NFA ha lo stato impostato su Q, allora l'insieme degli stati del DFA è Pow (Q) al fine di simulare tutti i possibili stati "paralleli" in cui si trova una NFA. (Modifica per aggiungere un'opinione sull'ambito della domanda) Dato che il la costruzione usata per questo in un testo standard mostra chiaramente la possibilità di un numero esponenziale, mi sembra che questo non sia un livello di ricerca. Potrebbe essere adatto come richiesta di riferimento.
Logan Mayfield,

8

nn2n

Questo esempio mostra anche che gli NFA potrebbero subire un esponenziale esplodere sotto integrazione. In effetti, è noto che qualsiasi NFA (o anche grammatica senza contesto) per la lingua di tutte le parole che contengono tutti i simboli dell'alfabeto deve avere un numero esponenziale di stati.


1
σΣ(Σσ)

ΣnO(n2)2n2n

Il punto di questo esempio è che l'esplosione corrisponde esattamente alla costruzione del gruppo di potenza. Esiste un esempio binario con lo stesso ingrandimento, ma è più complicato.
Yuval Filmus,

Sì, è un bell'esempio.
6005

1
O(nlogn)
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.