Prouver que les langues régulières sont fermées sous l'opérateur de cycle

8

J'ai en quelques jours un examen et j'ai des problèmes pour résoudre cette tâche.

Laisser L être une langue régulière sur l'alphabet Σ. Nous avons l'opération cycle(L)={xyx,yΣ and yxL} Et maintenant, nous devons montrer que cycle(L) est également régulier.

La référence est que nous pourrions construire à partir d'un DFA D=(Q,Σ,δ,q0,F) avec L()=L une ϵ-NFA N avec L(N)=cycle(L) et 2·|Q|2+1 États.

user1594
la source
Exercice 5.4 , attendu le 24 mai.
Raphael

Réponses:

15

L'idée est de décider au début de façon non déterministe combien le mot est cyclé, et d'avoir une copie de l'automate pour chaque cas. En termes d'automate, cela signifie que nous devinons dans quel étatD aurait été après avoir consommé le préfixe d'un mot (qui est un suffixe de notre entrée), et commencer dans cet état.

Maintenant la construction. Pour chaque étatqQ, séparé D en deux parties A1 et A2. A1 contient les états à partir desquels q est accessible et A2 les états accessibles depuis q:

entrez la description de l'image ici
[ source ]

Notez que n'importe quel nœud donné peut être contenu dans les deux A1 et A2. Par conséquent, le nombre d'états peut doubler si nous rendons cette étape explicite.

Maintenant, nous recâblons cet automate pour qu'il accepte tous les mots pour lesquels q marque le "point de cycle":

entrez la description de l'image ici
[ source ]

On a |Q|automates de cette forme; créer un nouvel état initial qui aε-transitions vers tous leurs états de départ. L'automate résultant acceptecycle(L). Au total, nous obtenons tout au plus|Q|(2|Q|+1)+1 états, seulement |Q| plus d'états que les revendications de référence sont possibles.

Vous pouvez réaliser 2|Q|2+1états en modifiant un peu les automates des composants; éliminer toutq0 en remplaçant l'entrée ε-transitions avec copies de ses transitions sortantes. Autrement dit, pour chaque paire de transitions(q1,ε,q0),(q0,a,q2), introduire une transition (q1,a,q2).

Une construction rigoureuse et une preuve d'exactitude restent un exercice.

Raphael
la source
mais comment prouver que vous venez de construire une nfa?
Sad Golduhren
3
@SadGolduhren Raphael a construit un NFA (c'est fini parce qu'il y a une limite finie sur le nombre d'états). Pour voir que ce NFA reconnaît la même langue que l'original, observez les chemins à travers les automates:q0q et qqF (où qF est un état final atteint à partir de q) devenir qqF et q0q, et qFϵq0termine le chemin.
Gilles 'SO- arrête d'être méchant'