Automates finis et langages - Expression régulières et théorème de Kleene
Grâce au chapitre précédent nus pouvons représenter par un mot, l'algorithme par un automate fini, mais comment représenter ? S'il est fini, il suffit d'énumérer tous les mots qui le composent, mais que faire quand il est infini ?
Langages réguliers
Nous introdusions tout d'abord les opérateurs ensemblistes nécessaires à la définition des langages réguliers. L'union, l'intersection et la complémentation son bien évidemment définies comme pour tout autre ensemble : por tous langages et
- est l'union de et
- est l'intersection de et
- est le complément de
La concaténation
d'un langage à un langage est le langage
.
La fermeture de Kleene
d'un langage est la langage : avec , il définit le langage des mots qui sont des
concaténations arbitraiirement longues (ie non bornées) de mots de .
L'ensemble des langages réguliers
sur un alphabet est défini par
- et sont des langages réguliers
- est un langage régulier, pour tout
- si et sont des langages réguliers, alors , et sont des langes réguliers.
Si et sont deux langages réguliers, alors
- , le complémentaire de est un langage régulier
- est un langage régulier
Expressions régulières
Nous introduisons maintenant une notation algébrique des langages.
L'ensemble des expressions régulières
sur un alphabet est défini
par
- , et , quel que soit sont des expressions régulières
- Si et sont deux expressions régulières, alors , et sont des expressions régulières
Il est à noter que diffère de , que diffère de et que diffère de . Nous veron par la suite ce que ces notations décrivent les mêmes objets, mais dans deux algèbres différentes : respectivement les expressions régulières et les langages réguliers.
Le langage d'une epxression régulière
est défini par
- et
- quel que soit
- .
- .
- .
Quelques propriétés des expressions régulières
- La somme est commutative et associative
- La concaténation est associative mais non commutative
- La concaténation est distributive à gauche et à droite.
- L'expression est l'élément neutre pour la somme et l'élement absorbant pour la concaténation
- L'expression est l'élément neutre pour la concaténation
- Enfin l'étoile de kleen est prioritaire sur la concaténation qui est elle même prioritaire sur la somme
Théorème de Kleene
Nous montrons maintenant un lien fondamental entre els automates finis, les langages réguliers et les expressions régulières.
Théoreme
Les trois proposition suivantes sont équivalentes pour tout langage
- est accepté par un automate fini
- est un langage régulier
- est représentable par une expression régulière
Le théorème de Kleene est fondamental car il fait le lien entre l'algèbre (ie les expressions régulières) et le calcul (les automates finis) unifiant ainsi ces deux approches de la théorie des langages
Théorème de Kleene
Un langage est régulier si et seulement s'il est reconnu
par un automate fini
Des langages réguliers aux expressions régulières
Nous montrons tout d'abord que les langages réguliers peuvent être représentés par des expressions régulières.
Lemme
Tout langage régulier est représenté par une expression régulière
Lemme
Tout langage représenté par une expressions régulière, est un langage
régulier
Les preuves sont disponibles dans polycopié de cours page 22.
Des expressions régulières aux automates finis
Lemme
Pour toute expression régulière nous pouvons calculer un
automate fini tel que . La preuve
est disponible dans le polycopié de cours page 22 à 25.
Notons qu'en corollaire de cette preuve nous avons une procédure effective pour calculer les opérations d'union, de concaténation et de fermeture de Kleene sur des langages réguliers, directement sur les automates qui les acceptent. Nous remarquons en outre que les automates construits par cette procédure sont non-déterministes puisqu'ils contiennent des transitions étiquetées .
Des automates finis aux expressions régulières
Le lemme suivant montre que pour tout automate fini, il est possible de construire une expression régulière qui représente le langage accepté par cet automate.
Lemme
Pour tout langage accepté par un automate fini nous pouvons
calculer une expression régulière telle que
La preuve est disponible dans le polycopié page 26