3- Automates
I. Expressions régulières (rappels)
On se donne un alphabet
Définition : expression régulière
On définit inductivement une expression régulière comme :
, l'expression vide ; , le mot vide ; , pour une lettre.
Pour
ou , l'union ; ou , la concaténation ; , l'étoile.
Définition : langage associé à une expression
On définit inductivement le langage associé à une expression régulière :
Pour
(à noter que )
On appelle langage régulier un langage dénoté par une expression régulière.
II. Automates
a) Automates déterministes
Définition : automate déterministe
Un automate
est un ensemble fini d'états ; est un alphabet ; est l'état initial de l'automate ; est l'ensemble des états acceptants de l'automate ; est l'ensemble des transitions.
Définition :
Définition : langage reconnu par un automate
On définit le langage reconnu par un automate
Par exemple, sur
Modifiez le mot pour voir l'automate le lire, lettre par lettre :
Dessin de l'automate…
abbab
État courant : 0
b) Automates non déterministes
Les différences avec les automates déterministes sont indiquées en rouge.
Définition : automate non déterministe
Un automate non déterministe
est un ensemble fini d'états ; est un alphabet ; est l'ensemble des états initiaux de l'automate ; est l'ensemble des états acceptants de l'automate ; est l'ensemble des transitions.
Définition :
Définition : langage reconnu par un automate
On définit le langage reconnu par un automate
Par exemple, l'automate non déterministe suivant reconnaît les mots qui se terminent par
Dessin de l'automate…
aabab
État courant : 0
c) Transitions instantanées (ε-transitions)
On s'autorise maintenant des transitions étiquetées par
Pendant la lecture d'un mot, dès qu'on est dans un état, on est donc aussi, "gratuitement", dans tous les états qu'on peut atteindre depuis lui en suivant uniquement des
Par exemple, l'automate suivant reconnaît
Dessin de l'automate…
aabb
États courants : 0, 1
Essayez avec aba : après le
Les
d) Propriétés
Propriété : déterminisation
Soit
Alors :
Définition : langage rationnel
On appelle langage rationnel tout langage
Définition : automate des parties
Soit
On définit
(les parties de ) ; ; ; ; .
Propriété
Par exemple, pour l'automate non déterministe précédent (mots se terminant par
Dessin de l'automate…
aabab
État courant : {0}
Ses états courants sont exactement les ensembles d'états courants de l'automate non déterministe.
Avec des
- L'état initial est la clôture de l'ensemble des états initiaux.
- Depuis un ensemble
, en lisant , on va dans la clôture de .
Par exemple, l'automate suivant reconnaît
Dessin de l'automate…
aabbaa
États courants : 0, 1, 2
- La clôture de l'état initial est
: c'est l'état initial de l'automate des parties. - Depuis
: en lisant , on atteint , dont la clôture est ; en lisant , on atteint , de clôture . - Depuis
: mène à , et à , de clôture . - Depuis
: mène à , et il n'y a pas de transition par . - Les trois ensembles contiennent l'état final 2 : ils sont tous acceptants.
Dessin de l'automate…
aabbaa
État courant : {0, 1, 2}
On obtient un automate déterministe, sans
Propriété : opérations sur les langages rationnels
Soit
On le montre en construisant les automates correspondants. Prenons comme exemples, sur
Dessin de l'automate…
abab
État courant : p₀
Dessin de l'automate…
abab
État courant : q₀
Union. On place les deux automates côte à côte : les états initiaux sont ceux de
Dessin de l'automate…
aab
États courants : p₀, q₀
Intersection. On fait avancer les deux automates "en même temps" : c'est l'automate produit, dont les états sont les couples
Dessin de l'automate…
abab
État courant : (p₀, q₀)
Complémentaire et différence. Si
Concaténation. Prenons maintenant l'automate
Dessin de l'automate…
ab
État courant : s₀
Pour reconnaître
Dessin de l'automate…
abab
État courant : s₀
Les
Étoile. Prenons l'automate
Dessin de l'automate…
aab
État courant : 0
Pour reconnaître
On ajoute donc un nouvel état
Dessin de l'automate…
abaab
États courants : i, 0
Essayez le mot a : il est bien refusé.
III. Lien entre les deux
Théorème de Kleene
Les langages rationnels sont exactement les langages réguliers.
a) Passage automate → expression régulière
On étiquette les transitions par des expressions régulières plutôt que par des lettres, et on supprime les sommets un à un.
Méthode : élimination des états
- On ajoute un nouvel état initial
, relié par une transition aux anciens états initiaux, et un nouvel état final , vers lequel vont des transitions depuis les anciens états finals. - On supprime un à un les autres états. Pour supprimer l'état
: pour chaque transition et chaque transition , si a une boucle étiquetée , on ajoute la transition (sans boucle : ). Si une transition de vers existe déjà, étiquetée , on la remplace par . - À la fin, il ne reste que
et : l'étiquette de la transition est une expression régulière du langage.
Par exemple, sur l'automate des mots qui se terminent par
- On supprime 1 : le chemin
devient . - On supprime 2 : le chemin
devient . - On supprime 0, qui a une boucle
: le chemin devient .
On retrouve bien l'expression régulière
b) Passage expression régulière → automate
Prenons par exemple l'expression
- On linéarise l'expression régulière, c'est-à-dire qu'on numérote chaque lettre. On note
le nouvel alphabet : - On trouve l'ensemble des préfixes et suffixes de 1 lettre, et des facteurs de 2 lettres, possibles :
- premiers :
; - derniers :
; - facteurs :
.
- premiers :
- On construit l'automate correspondant au langage linéarisé
, où : ; ; n'est pas définie sinon.
- On supprime la numérotation dans les transitions du graphe pour avoir l'automate final.
Automate de l'étape 3 :
Automate de l'étape 4, sur lequel vous pouvez lire des mots :
Dessin de l'automate…
aba
État courant : ε
À noter qu'on obtient un automate non déterministe, qui contient autant d'états que de lettres dans l'expression régulière source, plus un (l'état initial
IV. Le lemme de l'étoile
Tous les langages ne sont pas rationnels. Pour le montrer, on utilise le fait qu'un automate a un nombre fini d'états : il ne peut retenir qu'une quantité limitée d'information.
Lemme de l'étoile
Soit
; ;- pour tout
, .
Preuve
Soit
On pose
Application : le langage
Preuve
Supposons
Intuitivement, pour reconnaître
Le lemme de l'étoile donne une condition nécessaire pour qu'un langage soit rationnel, pas une condition suffisante : il sert uniquement à montrer qu'un langage n'est pas rationnel.
Exercices
Exercice 1
Construire un automate déterministe qui reconnaît les mots sur
Trois états : 0 (on n'a pas vu
Dessin de l'automate…
babaab
État courant : 0
Exercice 2
Déterminiser l'automate non déterministe suivant (états 0, 1, 2 ; initial 0 ; final 2), qui reconnaît les mots dont l'avant-dernière lettre est un
Parties accessibles :
Dessin de l'automate…
abab
État courant : {0}
Exercice 3
Construire l'automate de Glushkov de l'expression
Linéarisation :
Dessin de l'automate…
aaba
État courant : ε
Exercice 4
Montrer avec le lemme de l'étoile que le langage des palindromes sur
Soit