Deux expressions, un même langage ?
Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 29 — Langages réguliers et automates finis
Énoncé
Décider, pour chacun de ces trois couples, si les deux expressions dénotent le même langage. Donner un mot témoin quand ce n'est pas le cas, et dire quel algorithme tranche en général.
Corrigé
Premier couple : même langage. dénote toutes les concaténations de blocs de la forme ; comme un tel bloc peut être réduit à une seule lettre, on obtient tous les mots.
Deuxième couple : même langage. Les deux dénotent les mots alternés commençant et finissant par a : , , , … Elles ne se ressemblent pas, et c'est le point : groupe par la gauche, par la droite, et le langage est le même. Deux écritures, un ensemble — la distinction syntaxe / sémantique du chapitre.
Troisième couple : différents. Le plus court témoin est ab, qui est dans et dans aucune des deux branches de .
L'algorithme général. On ne compare pas des expressions, on compare des automates :
- construire un automate pour chaque expression (Berry-Sethi) ;
- les déterminiser et les compléter ;
- former le produit reconnaissant — acceptant si la première composante l'est et la seconde non ;
- tester si ce langage est vide, par un parcours en largeur depuis l'état initial ;
- recommencer en échangeant les rôles.
Le parcours ne rend pas seulement « oui » ou « non » : il rend le plus court mot de la différence, donc un témoin. C'est ainsi que les témoins ci-dessus ont été obtenus, et confirmés par un calcul indépendant par dérivées sur tous les mots de longueur au plus .
Ce que ce test montre en creux. L'équivalence de deux expressions régulières est décidable — au sens du chapitre chap:decidabilite. Peu de problèmes de ce genre le sont : l'équivalence de deux grammaires non contextuelles, elle, ne l'est pas.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.