En classe, notre professeur nous a montré 3 méthodes pour prouver la non-régularité:
- Théorème de Myhill – Nerode
- Pompage du lemme pour les langues régulières
- Preuve de non-régularité, basée sur la complexité de Kolmogorov
Maintenant les deux premiers, le théorème de Myhill-Nerode et le lemme de pompage, j'ai bien compris et j'ai également pu faire les exercices des deux premières méthodes. Mais je n'ai pas compris le troisième. La définition de la troisième méthode est la suivante:
Laisser être une langue régulière. Laisser pour chaque. Il existe alors une constante, de telle sorte que pour tous
si est le nième mot de la langue .
Maintenant, je ne comprends pas comment utiliser ce théorème pour prouver qu'un langage n'est pas régulier, je ne comprends pas vraiment le concept. Nous avons utilisé la complexité de kolmogorov avant pour déterminer la longueur du programme informatique le plus court d'un objet. Comment prouver la non-régularité avec ce théorème? Et quelle est la pensée derrière cela?
Merci beaucoup!
Un autre exemple très simple est le suivant: utilisez la complexité de Kolmogorov pour prouver queLww={ww∣w∈{0,1}∗} n'est pas régulier.
Je vous donne une preuve très informelle en espérant que cela peut vous aider à mieux comprendre le rôle de la complexité de Kolmogorov.
L'idée clé est la suivante: des automates finisD (qui reconnaît une langue régulière LD ) a une quantité finie de «mémoire»; donc en cours d'exécution sur une chaîne d'entréex=yz quand il a "traité" la première partie de l'entrée y l'appartenance à x dans LD dépend uniquement de son état actuel et de la deuxième partie de l'entrée z .
Supposons maintenant queLww est régulier; puis il y a un DFADww qui le reconnaît.
Laissery être une chaîne de longueur incompressible |y|=n≫|D|
Pour toutes les entréesx=yz , à la fin de la première partie y , le DFA Dww sera clairement sur le même état qi , et par hypothèse, il n'acceptera que si la partie restante z est telle que x=yz peut être divisé en deux moitiés égales (c.-à-d. yz=ww ); par exemple
Mais il est important de noter qu'il n'y a qu'une seule chaînez de longueur |y| qui est accepté (z=y ).
Donc, étant donné la description deDww , l'état qi au bout du y et la longueur |y| nous pouvons simuler le comportement de Dww sur tous les 2|y| cordes et voir lequel d'entre eux il accepte ... mais il accepte exactement z=y .
Donc avec un programme de tailleℓ=|Dww|+logi+logy+c
(|Dww| un espace est nécessaire pour stocker la description de Dww ,
logi espace pour stocker qi , logy espace pour stocker la longueur de y , c de l'espace est nécessaire pour les instructions simulant le DFA)
on peut "reconstruire" la chaîney ; mais pour assez grandy on a ℓ<|y| ce qui est une contradiction parce que y est incompressible.
la source