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= { un - 1... u0∣ u0... un - 1∈ L }
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 )nUNn+ O ( 1 )UN
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 aMnSM'MnnSM'UN= { a , b }M'= A*SS= { 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
Inversione produce un NFA che riconosce .LRn= ( a | b )*a ( a | b )n
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 k ∈ L R n e v b k ∉ L R n ( b kLRn2n + 12n + 1 .) Per dimostrarlo, prendi due parole distinte e lascia che k sia una posizione in cui differiscono ( u k ≠ v k ). Senza perdita di generalità, supponiamo u ku,v∈An+1kuk≠vkuk=avk=bubk∈LRnvbk∉LRnbkè 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 kuvLRnubkvbk, 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 .