Langages et Automates en Théorie
Langages et Automates en Théorie
Définitions générales
Alphabet : Un alphabet est un ensemble fini, non vide, de symboles (appelés aussi lettres ou
caractères). On le note généralement Σ. Le nombre de symboles qu’il contient est appelé sa
cardinalité et dénoté par |Σ|.
Exemple : Le langage machine est basé sur l’alphabet Σ = {0, 1}. |Σ|=2
Mot (ou chaîne) : Un mot sur un alphabet Σ est une suite finie de symboles de Σ.
Exemple :
- Le mot 1011 est défini sur l’alphabet {0, 1}
- Le mot 6.1239 est défini sur l’alphabet {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, .}
Longueur : La longueur d’un mot w notée |w| est le nombre de symboles de ce mot.
Exemple :
- Le mot w = 010 est de longueur |w| = 3.
- Le mot u = 01110 est de longueur |u| = 5.
- Le mot vide noté ε est le seul mot de longueur nulle, |ε|=0.
On note :
- Σ* l’ensemble de tous les mots (y compris le mot vide ε) définis sur Σ.
- Σ+ représente l’ensemble des mots sur l’alphabet Σ de longueur ≥ 1.
- Σn représente l’ensemble des mots sur l’alphabet Σ de longueur n.
Propriété de la concaténation
Soient w, w1 et w2 trois mots définis sur l’alphabet Σ :
- |w1.w2| = |w1| + |w2|
- (w1.w2).w3 = w1.(w2.w3) (la concaténation est associative)
- w. ε = ε.w = w (ε est un élément neutre pour la concaténation)
Exposant (puissance)
La puissance n-ième d’un mot est définie par : wn=w…w (n fois), w0 = ε, wn+1 = wnw.
Mot miroir
Soit w = a1a2...an un mot définit sur l’alphabet Σ. On appelle mot miroir de w et on le note par
wR le mot obtenu en écrivant w à l’envers, c’est-à-dire : wR = an...a2a1. Il est donc facile de voir
que (wR)R = w.
Mots conjugués
Les mots w1 et w2 sont dits conjugués s’il existe deux mots u et v tels que : w1 = uv et w2 = vu.
Préfixe et suffixe
Un mot u ∈ Σ* est préfixe du mot w ∈ Σ* s’il existe v ∈ Σ* tel que w = uv. Le mot v est dit
suffixe du mot w.
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−1
Projection
Soit le mot u ∈ Σ* et un alphabet Σ ⊆ Σ. La projection de u sur Σ , notée u ↑ Σ , est la suite
obtenue de u en gardant les symboles qui appartiennent à Σ et effaçant les autres symboles.
Exemple : Soit Σ = {a, b, c} et Σ = {a, b}. On considère le mot u = cacbcca, sa projection sur
Σ est obtenue en gardant les a et b et en effaçant tous les c et donc u ↑ Σ = aba.
Langage
Un langage L sur Σ est un sous-ensemble de Σ*, c’est-à-dire, L ∈ P(Σ*) ou L ⊆ Σ*. Sa cardinalité,
à savoir le nombre de mots qu’il contient, est notée |L|.
Exemple :
- Langage des nombre binaires définies sur l’alphabet Σ ={0, 1} (langage infini)
- Langage des mots de longueur 2 défini sur l’alphabet Σ ={a, b}, L={aa, ab, ba, bb}
- L= ∅ est le langage vide, il ne contient aucun mot
Ce langage contient un nombre infini de mots, qui sont les répétitions indéfinies de mots
du langage L.
+∞
- Fermeture plus : L+ = Lk = L1 ∪ L2 ∪ ∪ Ln ∪
k =1
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−2
- L1.(L2 ∩ L3) ≠ (L1 ∩ L2).(L1 ∩ L3)
- L1.L2 ≠ L2.L1
- (L*)* = L*
- L*.L* = L* ;
- L1.(L2.L1)* = (L1.L2) *.L1
- (L1 + L2) * = (L1* L2*)*
- L1* + L2* ≠ (L1 + L2) *
– Ce sont les langages décrits par les expressions régulières ou rationnelles, d’où le nom de
langages réguliers ;
– Ce sont les langages obtenus, à partir des lettres et de l’ensemble vide, par les opérations
rationnelles (union, produit et l’étoile de Kleene), d’où le nom de langages rationnels ;
– Ce sont les langages reconnus par des automates finis, d’où le nom de langages
reconnaissables.
Les expressions régulières (ou rationnelles) sont une notation qui indique comment un
ensemble régulier est construit à partir des ensembles réguliers élémentaires.
Remarque :
– Tout langage fini est rationnel.
– Si L est rationnel, alors L* est rationnel.
– Si L1 et L2 sont rationnels, alors L1 + L2 et L1L2 sont rationnels
Expressions régulières
Les expressions régulières (ER) pour un alphabet Σ sont les expressions formées par les règles
suivantes :
- Règle 1 : ∅ et chaque lettre de Σ est une ER
- Règle 2 : si α et β sont des ER, alors (αβ), (α+β) et α* sont des ER
- Règles 3 : On ne peut obtenir des expressions régulières qu’en appliquant de manière
finie les règles 1 et 2 énoncées ci-dessus.
Exemple :
Soit l’alphabet Σ = {a, b, c}
(a + b + c)* : L’ensemble de tous les mots définis à partir de l’alphabet Σ
(a + b + c)*a : L’ensemble de tous les mots finissant par le symbole a
(a + b + c) (a + b + c)* : L’ensemble de tous les mots non vides définis à partir de l’alphabet Σ
(a + b)*b(a + b)* : Définit l’ensemble des mots composés par a et b contenant au moins un b.
0 + 10* : C’est le langage formé du mot 0 et des mots composés d’un 1 suivi d’un nombre
quelconque de 0 : {0, 1, 10, 100, . . .}.
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−3
Remarque :
Ordre de priorité sur les opérations : priorité (étoile) > priorité (concaténation) > priorité
(union). L’expression 0 + 10* est donc équivalente à (0 + (1(0)*)).
Automates Finis
On rencontre couramment des automates finis (ou automates à états finis) dans de nombreux
appareils qui réalisent des actions déterminées en fonction des évènements qui se présentent.
Exemples :
- Un distributeur automatique de boissons qui délivre l’article souhaité quand le montant
introduit est approprié,
- Les ascenseurs qui savent combiner les appels successifs pour s’arrêter aux étages
intermédiaires,
- Les feux de circulation capables de s’adapter aux voitures en attente,
- Des digicodes qui analysent la bonne suite de chiffres,
On distingue deux types d’automates finis :
- AFD : automate fini déterministe
- AFN : automate fini non déterministe
Un automate fini peut être représenté de deux manières : soit par une table définissant la
fonction de transition soit par un graphe orienté.
Représentation graphique
Un automate fini peut être représente graphiquement comme un graphe orienté dont les
sommets (des cercles) sont les états et les arcs sont les transitions. Une transition δ(qi, a)=qj est
représentée par un arc reliant les sommets qi et qj, étiqueté par a. L’état initial est désigné par
une flèche entrante au sommet correspondant tandis que les états finaux sont marqués par un
double cercle.
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−4
Exemple :
a b
→ q0 q1 q2
q1 q1 q3
*q2 q1 q2
q3 q2 q3
Exemple :
a b
→0 1 0
1 1 2
2 1 3
*3 1 0
Le café coûte 40 DA et les pièces acceptées sont celles de 10 et 20 DA. Il n’y a pas de retour
de monnaie.
L’alphabet Σ = {10, 20} ; Ensemble des états : Q = {0,1, 2,3, 4} ; Ensemble des états finaux :
F = {4} ; Etat initial : 0.
On peut construire l’automate fini complet suivant (l’état 3 est l’état puits) :
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−5
Langage reconnu (accepté) par un AFD
Le langage L(A) reconnu par l’automate A est l’ensemble des mots permettant d’atteindre un
) {ω ∈ Σ* | δ ( q0 , ω ) ∈ F }
état final à partir de l’état initial : L ( A=
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−6
- I est un sous-ensemble de Q appelé ensemble des états initiaux de A.
- F est un sous-ensemble de Q appelé ensemble des états finaux de A.
Un AFN admet des transitions étiquetées par ε et des états dont plus d’une transition sortante
ont la même étiquette. Un mot w est reconnu par un AFN s’il existe un état final dans δ(q0,w).
a b
→ q0 {q0, q1} {q0}
q1 {q2} ∅
*q2 {q2} {q2}
Le mot abaa est accepté parce que l’un des chemins aboutit à l’état final q2.
Remarque : Il est important de comprendre qu’un AFN évalue simultanément tous les chemins
possibles. Si au moins l’un de ces chemins conduit à un état final, l’automate déclare avoir
reconnu le mot.
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−7
Passage de l’automate fini vers l’expression régulière
Etant donné un automate fini A, on veut construire une expression régulière dénotant le langage
L(A). Le principe est d’exprimer les langages de chaque état q dans un système d’équations
d’inconnues Lq. Pour chaque état, on écrit une équation de la forme :
- Si l’état q n’est pas un état final : Lq = Σ a L p
a
q → p ∈δ
- à Lq : Lq
Si l’état q est un état final, alors ε appartient= Σ
a
a Lp + ε
q → p ∈δ
L = a L + b ( a + (b + c ) c * b ) L + ε = ( a + b ( a + (b + c ) c * b )) L + ε
0 0 0 0
⇒ L = ( a + b ( a + (b + c ) c * b ))*
0
Alors, le langage reconnu par cet AFD est donné par l’expression régulière :
( a + b ( a + (b + c ) c * b ))*
2) Langage reconnu par cet AFD.
L0 b L0 + a L1 ;
=
L1 a L1 + b L2 ;
=
L2 a L1 + b L3 ;
=
L3 = a L1 + b L0 + ε
Ce qui donne :
L2 = ( a + ba ) L1 + bb L0 + b
L1 =( a + b ( a + ba ) ) L1 + bbb L0 + bb ⇒ L1 =( a + b ( a + ba ) ) * ( bbb L0 + bb )
(
L0 = b L0 + a ( a + b ( a + ba ) ) * ( bbb L0 + bb ) )
( )
=b + a ( a + b ( a + ba ) ) * bbb L0 + a ( a + b ( a + ba ) ) * bb
( )
⇒ L0 =b + a ( a + b ( a + ba ) ) * bbb * a ( a + b ( a + ba ) ) * bb
Alors, le langage reconnu par cet AFD est donné par l’expression régulière :
( b + a ( a + b ( a + ba ) ) * bbb ) * a ( a + b ( a + ba ) ) * bb
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−8
Remarques sur les AFN
- Un mot est accepté par un automate non déterministe s’il existe une dérivation qui
accepte ce mot. Nous laissons l’automate « choisir » la bonne dérivation.
- Si un langage L est accepté par un AFND alors il existe un AFD acceptant L.
- Un langage est régulier ssi il est accepté par un automate fini.
- Le non déterminisme permet de construire facilement des automates utilisant la
disjonction et l’itération, mais ne reconnaît pas plus de langages que les automates
déterministes.
- Les automates finis déterministes et non déterministes reconnaissent la même classe de
langages.
- Ce résultat est à la fois surprenant et pratique.
o Il est surprenant car les automates non déterministes semblent plus puissants que
les automates déterministes.
o Il est pratique car il est souvent plus simple de décrire un langage à l’aide d’un
automate non déterministe.
Algorithme de Glushkov
C’est un algorithme qui permet de construire un automate fini (pas nécessairement déterministe
et sans ε-transitions) à partir d’une expression régulière.
Entrée : une expression régulière : (aba + b)* + a*
Etape 2 : Déterminer
- Premier : l’ensemble des symboles pouvant commencer un mot.
- Dernier : l’ensemble des symboles pouvant terminer un mot.
- Suivant : pour tout symbole xi , l’ensemble des symboles pouvant suivre xi .
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−9
- une transition de l’état qi vers l’état q j pour tout x j appartenant à Suivant( xi ) et
étiquetée par la lettre correspondant à x j (δ(qi , xj ) = qj , pour
tout xj ∈ Suivant(xi )). suivant
- Puis remplacer les symboles xi par les lettres d’origine de x1 x2
l’expression régulière. x2 x3
x3 x1 , x4
Remarque : L’automate obtenu est souvent non déterministe.
Exemple : x4 x1 , x4
Construction un AFN qui reconnait le langage : (aba + b)* + a* x5 x5
Linéarisation de l’expression régulière : ( x1 x2 x3 + x4 ) + x5*
*
Premier = { x1 , x4 , x5 }
Dernier = { x3 , x4 , x5 }
Ensemble des états de l’automate fini
Q = {q0 , q1 , q2 , q3 , q4 , q5 }
Etat initial : q0
Etats finals : {q0 , q3 , q4 , q5 }
(ε appartient au langage ⇒ l’état initial est un état final).
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−10
Dans cet automate, on n’a pas de ε-transitions, alors l’ε-fermeture de chaque est l’état lui-
même.
La table de transition de l’automate fini déterministe résultant est :
a b a b
→0 {0, 1} {2} → q0 q1 q2
Après renommage des états,
*{0, 1} {0,1,3} {2} * q1 q3 q2
*{2} {1} {2} on obtient : * q2 q4 q2
*{0,1,3} {0,1,3} {2,3} * q3 q3 q5
*{1} {1,3} {2} *q4 q6 q2
*{2,3} {1,3} {2,3} * q5 q6 q5
*{1,3} {1,3} {2,3} *q6 q6 q5
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−11
Minimisation d’un AFD
La minimisation d’un automate fini déterministe (AFD) vise à transformer un AFD donné en
un AFD équivalent comportant le nombre minimal d’états, tout en reconnaissant le même
langage régulier.
Théorème de Myhill-Nérode : Soit L un langage régulier. Parmi tous les AFD reconnaissant
L, il en existe un et un seul qui a un nombre minimal d’états.
En partant de n’importe quel AFD complet, une façon élémentaire pour obtenir l’automate
minimal équivalent est :
- de supprimer les états inaccessibles à partir de l’état initial (et de compléter
l’automate).
- d’identifier les états équivalents (indistinguables).
- Construire l’automate minimal en regroupant ensemble les états dans chaque classe
d’équivalence.
Définition. Deux états q1 et q2 sont équivalents (indistinguables) si aucun mot ne les sépare :
q1 ~ q2 ssi pour tout mot u, on a : δ(q1, u) ∈ F implique δ(q2, u) ∈ F et réciproquement.
Procédure de minimisation
Etape 1 : Supprimer les états inaccessibles à partir de l’état initial (et de compléter l’automate).
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−12
pas marquée à l’étape 2 (dans le tableau). Les états de l’automate minimal sont les
classes d’équivalence. L’état initial est la classe d’équivalence qui contient q0 . Les états
finaux de l’automate minimal sont les classes d’équivalence qui se composent des états
finaux de l’automate à minimiser. La fonction de transition est définie comme suit :
Pour déterminer δ ′ ( X , a ) , pour une classe d’équivalence X , choisissez n’importe quel
q ∈ X et déterminer δ ′ ( X , a ) = Y , où Y est la classe d’équivalence qui contient
δ ( q, a ) .
- Supprimer tous les états non accessibles et tous les états non co-accessibles. Toutes les
transitions vers ces états depuis d’autres états deviennent indéfinies.
En premier lieu, on supprime l’état q3 parce que cet état n’est pas accessible à partir de l’état
initial. Ensuite, on construit la table d’équivalence (sans q3)
q1
q2 D D
q4 D D D
. q5 D D D D
q6 D D D D
q7 D D D D D D
q0 q1 q2 q4 q5 q6
On regroupe les états dans des classes d’équivalence. A partir du tableau, q0 et q1 sont
équivalents, et q5 et q6 sont équivalents. Alors, les classes d’équivalences sont : {q0, q1}, {q2},
{q4}, {q5, q6}, et la table de transitions de l’automate minimale est la suivante :
a b
→ q0q1 q7 q0q1
q2 q4 q5q6
q4 q5q6 q5q6
* q5q6 q5q6 q5q6
q7 q2 q2
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−13
En premier lieu, Il n’y a pas d’état inaccessible. On construit alors la table d’équivalence.
q1
q2 D D
q3 D D
q4 D D
q5 D D D D D
q0 q1 q2 q3 q4
On regroupe les états dans des classes d’équivalence. A partir du tableau, q0 et q1 sont
équivalents, et q2 , q3 et q4 sont équivalents. Alors, les classes d’équivalences sont : q01={q0,
q1}, q234={q2, q3, q4} et {q5}. La table de transitions de l’automate résultant est la suivante :
0 1
→ q01 q01 q234
q234 q234 q5
q5 q5 q5
Le graphe de l’automate obtenu est :
On remarque que l’état q5 n’est pas co-accessible, alors on supprime cet état, et l’automate
minimal devient :
Complément
Soit un automate déterministe A reconnaissant le langage L . L’automate complémentaire
reconnaissant le langage inverse (c’est-à-dire LC ou Σ∗-L) peut être obtenu comme suit :
− Compléter l’automate A s’il n’est pas complet.
− L’automate complémentaire peut être obtenu en transformant les états non finaux à des
états finaux et vice-versa.
Exemple :
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−14
Concaténation
Soit les deux automates déterministes A1 = ( Σ1 , Q1 , δ1 , q10 , F1 ) et A2 = ( Σ 2 , Q2 , δ 2 , q20 , F2 )
reconnaissant les langages L1 et L2 . Pour construire l’automate A qui reconnaît le langage
L = L1.L2 , on peut procéder de la manière suivante:
− L’ensemble des états du nouveau automate A est Q = Q1 ∪ Q2 .
− L’état initial de l’automate A est l’état initial du premier automate A1 .
− Les états finaux de l’automate A sont les états finaux du deuxième automate A2 .
− Chaque transition des deux automates A1 et A2 est une transition dans l’automate A .
− On ajoute de nouvelles ε-transitions entre chaque état final de A1 (qui n’est plus final
dans le nouvel automate A ) et l’état initial de A2 .
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−15
− L’état de départ est l’état composé du couple des deux états initiaux (l’état initial du
nouvel automate).
− Pour chaque état créé ( p, q ) et pour chaque lettre a de l’alphabet Σ = Σ1 ∩ Σ 2 , ajouter
dans la table de transition les états produits calculés de la manière suivante :
=δ ( ( p, q ) , a ) ( p′, q′ )=
, si δ1 ( p, a ) p=
′ et δ 2 ( q, a ) q′
− Chacun des nouveaux états produits devient un état dans le nouvel automate.
− Recommencer les deux étapes précédentes à partir de chaque nouvel état produit,
jusqu’à ce qu’on ne crée plus de nouvel état.
− Chaque nouvel état composé d’un état final de A1 et d’un autre état final de A2 devient
état final dans le nouvel automate.
− Pour plus de clarté, renommer éventuellement les états.
a b
→ q04 → (q0,q4) (q1,q4) q5
q14 (q1,q4) (q2,q4) q5
q5 q5 q6 q5
q24 (q2,q4) (q3,q4) (q2,q5)
*q6 *q6 q6 q6
*q34 *(q3,q4) (q3,q4) (q2,q5)
q25 (q2,q5) (q3,q6) (q2,q5)
*q36 *(q3,q6) (q3,q6) (q2,q6)
*q26 *(q2,q6) (q3,q6) (q2,q6)
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−16
o Automate reconnaissant le langage L1 ∩ L2
a b
→ q04 → (q0,q4) (q1,q4) -
q14 (q1,q4) (q2,q4) -
q24 (q2,q4) (q3,q4) (q2,q5)
q34 (q3,q4) (q3,q4) (q2,q5)
q25 (q2,q5) (q3,q6) (q2,q5)
*q36 *(q3,q6) (q3,q6) (q2,q6)
q26 (q2,q6) (q3,q6) (q2,q6)
Composition d’automates
L’opération de composition des automates permet l’obtention du modèle global d’un système
à partir des modèles de ses sous-systèmes. On peut distinguer deux sortes de compositions :
− Composition synchrone, qui est effectuée quand les alphabets associés aux automates
considérés ont au moins un événement en commun.
− Composition asynchrone, qui est réalisée quand les alphabets associés aux automates
considérés n’ont aucun événement en commun.
Soient deux automates A1 = ( Σ1 , Q1 , δ1 , q10 , F1 ) et A2 = ( Σ 2 , Q2 , δ 2 , q20 , F2 ) . La composition
entre A1 et A2 est l’automate A = A1 A2 = ( Σ, Q, δ , q0 , F ) , où :
– Q= Q1 × Q2 est l’ensemble d’états,
– Σ = Σ1 ∪ Σ 2 est l’alphabet,
– q0 = ( q10 , q20 ) est l’état initial,
– F= F1 × F2 est l’ensemble des états finaux,
– δ est une relation de Q × Σ qui définit la fonction de transition d’état. Elle associe à
chaque état ( p, q ) et à tout événement σ ∈ Σ un état calculé de la façon suivante :
Pour σ ∉ Σ1 ∩ Σ 2
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−17
δ ( ( p, q ) , σ ) = ( p′, q ) si σ ∈ Σ1 et δ1 ( p, σ ) = p′ ,
δ ( ( p, q ) , σ ) = ( p, q′ ) si σ ∈ Σ 2 et δ 2 ( q, σ ) = q′ ,
Pour σ ∈ Σ1 ∩ Σ 2 :
δ ( ( p, q ) , σ ) = ( p′, q′ ) si δ1 ( p, σ ) = p′ et δ 2 ( q, σ ) = q′
A1 : A2 :
p b j
→ *(q0,s0) (q1,s0) (q0,s1) -
(q1,s0) - (q1,s1) -
(q0,s1) (q1,s1) - -
(q1,s1) - - (q0,s0)
M2 – AII – Cours SED – Département d’Automatique – FST – Université MSBY – Jijel 2−18