Une opération qui transforme un NFA en un autre NFA mais ne le fait pas pour un DFA est l'inversion (pointez toutes les flèches dans l'autre sens et échangez les états initiaux avec les états accepteurs). Le langage reconnu par l'automate transformé est le langage inversé .LR= { un - 1… U0∣ u0… Un - 1∈ L }
Ainsi, une idée est de chercher un langage qui a une construction asymétrique. À l'avenir, ce langage devrait être reconnu en inspectant les premiers symboles, ne nécessitant que n + O ( 1 ) états. En reculant, il devrait être nécessaire de conserver une mémoire des n derniers états, ce qui nécessite A n + O ( 1 ) états où A est la taille de l'alphabet.nn + O ( 1 )nUNEn+ O ( 1 )UNE
Nous recherchons un langage de la forme où M n est constitué de mots de longueur n , S est un sous-ensemble non trivial de l'alphabet, et M ′ ne fournit aucune autre contrainte. Nous pourrions aussi bien choisir l'alphabet le plus simple A = { a , b } (un alphabet singleton ne fera pas l'affaire, vous n'y obtenez pas de NFA plus petits) et M ′ = A ∗ . Un S non trivial signifie S = { a } . Pour ce qui est deMnSM′MnnSM′A={a,b}M′=A∗SS={a} , nous exigeons qu'il ne soit pas corrélé avec S (de sorte que le DFA pour le langage inversé devra garder la mémoire de S ): prendre M n = A n .MnSSMn=An
Soit donc . Il est reconnu par un DFA simple avec n + 2 états.Ln=(a|b)na(a|b)∗n+2
L'inverser donne un NFA qui reconnaît .LRn=(a|b)∗a(a|b)n
Le DFA minimal qui reconnaît
a au moins 2 n + 1 états. En effet, tous les mots de longueur 2 n + 1 doivent atteindre des états distincts dans le DFA. (En d'autres termes, ils appartiennent à des classes d'équivalence Myhill-Nerode distinctes .) Pour le prouver, prenez deux mots distincts u , v ∈ A n + 1 et soit k une position où ils diffèrent ( u k ≠ v k ). Sans perte de généralité, supposons u kLRn2n+12n+1u,v∈An+1kuk≠vk et v k = b . Alors u b k ∈ L R n et v b k ∉ L R n ( b k est une extension distinctive pour u et v ). Si u et v conduisaient au même état dans un DFA reconnaissant L R n, alors u b k et v b kuk=avk=bubk∈LRnvbk∉LRnbkuvuvLRnubkvbk, ce qui est impossible car l'un mène à un état acceptant et l'autre non.
Remerciements: cet exemple a été cité sur Wikipedia sans explication. L'article fait référence à un article que je n'ai pas lu qui donne une limite plus
stricte : Leiss, Ernst (1981), "Représentation succincte des langages réguliers par les automates booléens", Theoretical Computer Science 13 (3): 323-330, doi: 10.1016 / S0304-3975 (81) 80005-9 .