Vous êtes sur la page 1sur 87

Théorie des langages

Automates finis
Elise Bonzon
http://web.mi.parisdescartes.fr/vbonzon/
elise.bonzon@parisdescartes.fr

Théorie des langages


1 / 51
N
Automates finis

Automates finis

Introduction
Formalisation
Représentation et exemples
Automates complets
Langage généré par un automate
Automate fini non déterministe
Opérations sur les automates
Automates finis et langages

Théorie des langages


2 / 51
N
Automates finis

Automates finis

Introduction
Formalisation
Représentation et exemples
Automates complets
Langage généré par un automate
Automate fini non déterministe
Opérations sur les automates
Automates finis et langages

Théorie des langages


3 / 51
N
Automates finis

Introduction

Automate fini : machine abstraite qui effectue des calculs en utilisant une
mémoire de taille bornée.
Il n’est pas possible d’augmenter la taille de la mémoire au delà de cette
borne
Les tailles des données et des résultats peuvent être supérieurs à cette
borne puisque les données sont lues et les résultats produits
progressivement au cours du calcul
La longueur d’un calcul peut aussi être supérieure à la taille de la mémoire
de l’automate
Celui-ci passe alors nécessairement plusieurs fois par un même état de sa
mémoire

Théorie des langages


4 / 51
N
Automates finis

Introduction

Les automates finis ont des applications importantes :


Définition de certains aspects des langages naturels ou artificiels
Description de machines physiques (circuits électroniques, machines à
calculer, distributeur d’objets, etc.)
Définition de protocoles de communication dans des réseaux
Description de systèmes de commandes (comme le système de commandes
d’un ascenseur), etc.
Les automates finis peuvent être utilisés pour calculer des fonctions, ou
pour reconnaı̂tre des langages.

Théorie des langages


5 / 51
N
Automates finis

Automates finis

Introduction
Formalisation
Représentation et exemples
Automates complets
Langage généré par un automate
Automate fini non déterministe
Opérations sur les automates
Automates finis et langages

Théorie des langages


6 / 51
N
Automates finis

Automate fini déterministe

Automate fini déterministe


Un automate fini déterministe est un quintuplet M = hQ, Σ, δ, q0 , F i
où
Q est un ensemble fini d’états
Σ est un ensemble fini de symboles (un alphabet)
δ : Q × Σ → Q est une fonction de transitions
q0 ∈ Q est l’état initial
F ⊆ Q est l’ensemble (fini) des états finaux

Théorie des langages


7 / 51
N
Automates finis

Automate fini déterministe

Automate fini déterministe


Un automate fini déterministe est un quintuplet M = hQ, Σ, δ, q0 , F i
où
Q est un ensemble fini d’états
Σ est un ensemble fini de symboles (un alphabet)
δ : Q × Σ → Q est une fonction de transitions
q0 ∈ Q est l’état initial
F ⊆ Q est l’ensemble (fini) des états finaux

Une paire (q, w ), où q ∈ Q est un état, et w ∈ Σ∗ est un alphabet est


appelé une configuration.

Théorie des langages


7 / 51
N
Automates finis

Dérivation

Configuration dérivable en une étape


Soit M un automate, q, q 0 ∈ Q deux états, w , w 0 ∈ Σ∗ deux mots et
(q, w ), (q 0 , w 0 ) les deux configurations correspondantes.
On dit que la configuration (q 0 , w 0 ) est dérivable en une étape de la
configuration (q, w ) par M, noté (q, w ) 7→ (q 0 , w 0 ), si
w = xw 0 , avec x ∈ Σ
M est dans l’état q
q 0 = δ(q, x)
On dit alors qu’on “lit” la lettre x.

Théorie des langages


8 / 51
N
Automates finis

Dérivation

Configuration dérivable
Soit M un automate, q, q 0 ∈ Q deux états, w , w 0 ∈ Σ∗ deux mots et
(q, w ), (q 0 , w 0 ) les deux configurations correspondantes.
On dit que la configuration (q 0 , w 0 ) est dérivable de la configuration

(q, w ) par M, noté (q, w ) 7→ (q 0 , w 0 ), si ∃k ≥ 0 et k configurations
(qi , wi ), 1 ≤ i ≤ k telles que
(q, w ) = (q1 , w1 )
(q 0 , w 0 ) = (qk , wk )
∀i, 1 ≤ i ≤ k, (qi , wi ) 7→ (qi+1 , wi+1 )

Théorie des langages


9 / 51
N
Automates finis

Reconnaissance d’un mot

Reconnaissance d’un mot par un automate


La reconnaissance d’un mot w par un automate M (appelée aussi
exécution d’un automate M sur un mot w ) est la suite des configura-
tions :
(q0 , w ) 7→ (q1 , w1 ) 7→ (q2 , w2 ) 7→ . . . 7→ (qn , )

Théorie des langages


10 / 51
N
Automates finis

Langage reconnu par un automate

Mot accepté par un automate


Un mot w est accepté par un automate si et seulement si

(q0 , w ) 7→ (q, ) avec q ∈ F

Théorie des langages


11 / 51
N
Automates finis

Langage reconnu par un automate

Mot accepté par un automate


Un mot w est accepté par un automate si et seulement si

(q0 , w ) 7→ (q, ) avec q ∈ F

Langage accepté par un automate


Le langage accepté par un automate M, noté L(M), est défini par

L(M) = {w ∈ Σ∗ |(q0 , w ) 7→ (q, ) avec q ∈ F }

Théorie des langages


11 / 51
N
Automates finis

Langage reconnu par un automate

ATTENTION
Plutôt que langage accepté par un automate M, on parle souvent
de langage reconnu par l’automate M. Il s’agit pourtant toujours de
l’ensemble des mots acceptés par l’automate, et non pas les mots re-
connus par l’automate.

Théorie des langages


12 / 51
N
Automates finis

Automates finis

Introduction
Formalisation
Représentation et exemples
Automates complets
Langage généré par un automate
Automate fini non déterministe
Opérations sur les automates
Automates finis et langages

Théorie des langages


13 / 51
N
Automates finis

Notations

Etat initial

q0

Etat final (2 notations possible)

q q

Transition entre l’état p et q : δ(p, a) = q

p a q

Théorie des langages


14 / 51
N
Automates finis

Exemple

Automate M1
a
b

q0 q1

Théorie des langages


15 / 51
N
Automates finis

Exemple

Automate M1
a
b

q0 q1

Est-ce que M1 reconnait aaba ? accepte aaba ?

Théorie des langages


15 / 51
N
Automates finis

Exemple

Automate M1
a
b

q0 q1

Est-ce que M1 reconnait aaba ? accepte aaba ?


Est-ce que M1 reconnait abba ? accepte abba ?

Théorie des langages


15 / 51
N
Automates finis

Exemple

Automate M1
a
b

q0 q1

Est-ce que M1 reconnait aaba ? accepte aaba ?


Est-ce que M1 reconnait abba ? accepte abba ?
Est-ce que M1 reconnait baab ? accepte baab ?

Théorie des langages


15 / 51
N
Automates finis

Exemple

Automate M1
a
b

q0 q1

Est-ce que M1 reconnait aaba ? accepte aaba ?


Est-ce que M1 reconnait abba ? accepte abba ?
Est-ce que M1 reconnait baab ? accepte baab ?
L(M1 ) = {w ∈ {a, b}∗ |w ne contient pas deux b consécutifs}

Théorie des langages


15 / 51
N
Automates finis

Exemple

Automate M2

a a,b
b b

q0 q1 q2

Théorie des langages


16 / 51
N
Automates finis

Exemple

Automate M2

a a,b
b b

q0 q1 q2

Est-ce que M2 reconnait abba ? accepte abba ?

Théorie des langages


16 / 51
N
Automates finis

Exemple

Automate M2

a a,b
b b

q0 q1 q2

Est-ce que M2 reconnait abba ? accepte abba ?


Est-ce que M2 reconnait aaba ? accepte aaba ?

Théorie des langages


16 / 51
N
Automates finis

Exemple

Automate M2

a a,b
b b

q0 q1 q2

Est-ce que M2 reconnait abba ? accepte abba ?


Est-ce que M2 reconnait aaba ? accepte aaba ?
L(M2 ) = {w ∈ {a, b}∗ |w contient deux b consécutifs}

Théorie des langages


16 / 51
N
Automates finis

Automates finis

Introduction
Formalisation
Représentation et exemples
Automates complets
Langage généré par un automate
Automate fini non déterministe
Opérations sur les automates
Automates finis et langages

Théorie des langages


17 / 51
N
Automates finis

Automate complet

Automate complet
Un automate est complet si pour tout état q ∈ Q il existe une
transition pour chaque lettre de l’alphabet Σ.

∀q ∈ Q, ∀x ∈ Σ, δ(q, x) est défini

Théorie des langages


18 / 51
N
Automates finis

Exemple
Σ = {a, b}
L’automate M1 est-il complet?
a
b

q0 q1

L’automate M2 est-il complet?

a a,b
b b

q0 q1 q2

Théorie des langages


19 / 51
N
Automates finis

Etats puits et poubelles


Etat puit
Un état puits est un état q ∈ Q pour lequel toutes les transitions sont
de la forme δ(q, x) = q.

Théorie des langages


20 / 51
N
Automates finis

Etats puits et poubelles


Etat puit
Un état puits est un état q ∈ Q pour lequel toutes les transitions sont
de la forme δ(q, x) = q.
Etat puits de M2 ?

Théorie des langages


20 / 51
N
Automates finis

Etats puits et poubelles


Etat puit
Un état puits est un état q ∈ Q pour lequel toutes les transitions sont
de la forme δ(q, x) = q.
Etat puits de M2 ?

Etat poubelle
Un état poubelle est un état puits non final.

Théorie des langages


20 / 51
N
Automates finis

Etats puits et poubelles


Etat puit
Un état puits est un état q ∈ Q pour lequel toutes les transitions sont
de la forme δ(q, x) = q.
Etat puits de M2 ?

Etat poubelle
Un état poubelle est un état puits non final.
Pour Σ = {a, b}

a,b

q0

Théorie des langages


20 / 51
N
Automates finis

Automates équivalents

Automates équivalents
Deux automates M et M 0 sont équivalents si et seulement si L(M) =
L(M 0 ).

Théorie des langages


21 / 51
N
Automates finis

Automates équivalents

Automates équivalents
Deux automates M et M 0 sont équivalents si et seulement si L(M) =
L(M 0 ).

Propriété
Pour tout automate fini, il existe un automate fini complet équivalent

Théorie des langages


21 / 51
N
Automates finis

Automates équivalents

Automates équivalents
Deux automates M et M 0 sont équivalents si et seulement si L(M) =
L(M 0 ).

Propriété
Pour tout automate fini, il existe un automate fini complet équivalent
Si l’automate n’est pas complet, on le complète en ajoutant un état
poubelle

Théorie des langages


21 / 51
N
Automates finis

Exemple

L’automate M1 .
a
b

q0 q1

Théorie des langages


22 / 51
N
Automates finis

Exemple

Automate M1 .
a
b

q0 q1

Automate M1 complété

a a,b
b b

q0 q1 q2

Théorie des langages


22 / 51
N
Automates finis

Automates complets

Propriété
Pour un automate complet, la reconnaissance d’un mot ne “bloque”
jamais.

(q0 , w ) 7→ (q1 , w1 ) 7→ (q2 , w2 ) 7→ . . . 7→ (qn , )

On a deux possibilités
Soit qn ∈ F , et w est un mot accepté
Soit qn 6∈ F , et w n’est pas un mot accepté

Théorie des langages


23 / 51
N
Automates finis

Automates finis

Introduction
Formalisation
Représentation et exemples
Automates complets
Langage généré par un automate
Automate fini non déterministe
Opérations sur les automates
Automates finis et langages

Théorie des langages


24 / 51
N
Automates finis

Langage généré par un automate


Un automate peut être vu comme un mécanisme décrivant, ou
générant, un langage

Théorie des langages


25 / 51
N
Automates finis

Langage généré par un automate


Un automate peut être vu comme un mécanisme décrivant, ou
générant, un langage

Langage généré à partir d’un état par un automate


Le langage généré à partir d’un état q par un automate M, noté
L(q) est l’ensemble des mots acceptés à partir de cet état.

L(q) = Lq = {w ∈ Σ∗ |(q, w ) 7→ (q 0 , ) et q 0 ∈ F }

Théorie des langages


25 / 51
N
Automates finis

Langage généré par un automate


Un automate peut être vu comme un mécanisme décrivant, ou
générant, un langage

Langage généré à partir d’un état par un automate


Le langage généré à partir d’un état q par un automate M, noté
L(q) est l’ensemble des mots acceptés à partir de cet état.

L(q) = Lq = {w ∈ Σ∗ |(q, w ) 7→ (q 0 , ) et q 0 ∈ F }

Langage généré par un automate


Le langage généré par un automate M est défini par

L(M) = L(q0 )

Théorie des langages


25 / 51
N
Automates finis

Langage généré par un automate


Un automate peut être vu comme un mécanisme décrivant, ou
générant, un langage

Langage généré à partir d’un état par un automate


Le langage généré à partir d’un état q par un automate M, noté
L(q) est l’ensemble des mots acceptés à partir de cet état.

L(q) = Lq = {w ∈ Σ∗ |(q, w ) 7→ (q 0 , ) et q 0 ∈ F }

Langage généré par un automate


Le langage généré par un automate M est défini par

L(M) = L(q0 )

Remarque : Soit q un état poubelle. L(q) = ∅.


Théorie des langages
25 / 51
N
Automates finis

Système d’équations définissant un lan-


gage
Equation définissant un langage généré à partir d’un état
Le langage généré à partir d’un état q par un automate M est défini
par une équation de la forme :
X
L(q) = Lq = ( x.L(δ(q, x))) + d(L(q))
x∈Σ

∅ si  6∈ A
où d(A) =
 si  ∈ A

Théorie des langages


26 / 51
N
Automates finis

Système d’équations définissant un lan-


gage
Equation définissant un langage généré à partir d’un état
Le langage généré à partir d’un état q par un automate M est défini
par une équation de la forme :
X
L(q) = Lq = ( x.L(δ(q, x))) + d(L(q))
x∈Σ

∅ si  6∈ A
où d(A) =
 si  ∈ A

Exemple : Pour M1 complété



 L(q0 ) = aL(q0 ) + bL(q1 ) + 
L(q1 ) = aL(q0 ) + bL(q2 ) +  = aL(q0 ) +  car L(q2 ) = ∅
L(q2 ) = aL(q2 ) + bL(q2 ) + ∅ = ∅ car q2 est un état poubelle

Théorie des langages


26 / 51
N
Automates finis

Automates finis

Introduction
Formalisation
Représentation et exemples
Automates complets
Langage généré par un automate
Automate fini non déterministe
Opérations sur les automates
Automates finis et langages

Théorie des langages


27 / 51
N
Automates finis

Automate fini non déterministe

Automate fini non déterministe


Un automate fini non déterministe est un quintuplet M =
hQ, Σ, ∆, S, F i où
Q est un ensemble fini d’états
Σ est un ensemble fini de symboles (un alphabet)
∆ ⊆ (Q × Σ × Q) est une relation de transitions
S ⊆ Q est l’ensemble (fini) des état initiaux
F ⊆ Q est l’ensemble (fini) des états finaux

Théorie des langages


28 / 51
N
Automates finis

Automate fini non déterministe

Automate fini non déterministe


Un automate fini non déterministe est un quintuplet M =
hQ, Σ, ∆, S, F i où
Q est un ensemble fini d’états
Σ est un ensemble fini de symboles (un alphabet)
∆ ⊆ (Q × Σ × Q) est une relation de transitions
S ⊆ Q est l’ensemble (fini) des état initiaux
F ⊆ Q est l’ensemble (fini) des états finaux

Différences avec un automate fini déterministe :


Plusieurs états de départ possible
Ce n’est plus une fonction de transition, mais une relation de transition.

Théorie des langages


28 / 51
N
Automates finis

Exemple

Automate M3

q1
a,b a,b
b b

q0 q3

a a
q2

abb ∈ L(M3 )

Théorie des langages


29 / 51
N
Automates finis

Exemple

Automate M3

q1
a,b a,b
b b

q0 q3

a a
q2

abb ∈ L(M3 )

Théorie des langages


29 / 51
N
Automates finis

Automate fini non déterministe

Propriété
Pour tout automate fini non déterministe M, il existe un automate fini
déterministe M 0 équivalent.

L(M) = L(M 0 )

Théorie des langages


30 / 51
N
Automates finis

Exemple : automate M3
q1
a,b a,b
b b

q0 q3

a a
q2

Déterminisons M3


 L0 = aL0 + bL0 + aL2 + bL1
L1 = bL3


 L2 = aL3
L3 = aL3 + bL3 + 

Théorie des langages


31 / 51
N
Automates finis

Exemple : automate M3
Déterminisons M3


 L0 = aL0 + bL0 + aL2 + bL1
L1 = bL3


 L2 = aL3
L3 = aL3 + bL3 + 

On sait que L(M3 ) = L0 . On a donc

L0 = a(L0 + L2 ) + b(L0 + L1 )
L0 + L2 = a(L0 + L2 + L3 ) + b(L0 + L1 )
L0 + L1 = a(L0 + L2 ) + b(L0 + L1 + L3 )
L0 + L2 + L3 = a(L0 + L2 + L3 ) + b(L0 + L1 + L3 ) + 
L0 + L1 + L3 = a(L0 + L2 + L3 ) + b(L0 + L1 + L3 ) + 
L0 + L1 + L3 = L0 + L2 + L3

Théorie des langages


32 / 51
N
Automates finis

Exemple : automate M3


 L0 = a(L0 + L2 ) + b(L0 + L1 )
L0 + L2 = a(L0 + L2 + L3 ) + b(L0 + L1 )


 L0 + L1 = a(L0 + L2 ) + b(L0 + L2 + L3 )
L0 + L2 + L3 = a(L0 + L2 + L3 ) + b(L0 + L2 + L3 ) + 

On obtient l’automate suivant :

01
b a,b
b

0 a b 023

a a

02

Théorie des langages


33 / 51
N
Automates finis

Automates finis

Introduction
Formalisation
Représentation et exemples
Automates complets
Langage généré par un automate
Automate fini non déterministe
Opérations sur les automates
Automates finis et langages

Théorie des langages


34 / 51
N
Automates finis

Complémentation

Complémentation
Pour tout automate fini M, il existe un automate fini M 0 tel que
L(M 0 ) = L(M)

Théorie des langages


35 / 51
N
Automates finis

Complémentation

Complémentation
Pour tout automate fini M, il existe un automate fini M 0 tel que
L(M 0 ) = L(M)
Intérêt : pour tout automate complet et déterministe M, et pour tout

mot w ∈ X ∗ , il existe une dérivation (s, w ) 7→ (q, ) telle que
soit q ∈ F et w ∈ L(M)
soit q 6∈ F et w 6∈ L(M)
⇒ Permet de pouvoir reconnaitre tous les mots de X ∗ qui ne sont pas
reconnus par M.

Théorie des langages


35 / 51
N
Automates finis

Complémentation

Complémentation
Pour tout automate fini M, il existe un automate fini M 0 tel que
L(M 0 ) = L(M)
Intérêt : pour tout automate complet et déterministe M, et pour tout

mot w ∈ X ∗ , il existe une dérivation (s, w ) 7→ (q, ) telle que
soit q ∈ F et w ∈ L(M)
soit q 6∈ F et w 6∈ L(M)
⇒ Permet de pouvoir reconnaitre tous les mots de X ∗ qui ne sont pas
reconnus par M.
Méthode :
1. Déterminiser et compléter l’automate
2. Transformer tous les états finaux en états non finaux, et vice-versa

Théorie des langages


35 / 51
N
Automates finis

Exemple : Complémentation

Automate M1 complété

a a,b
b b

q0 q1 q2

Théorie des langages


36 / 51
N
Automates finis

Exemple : Complémentation

Automate M1 complété

a a,b
b b

q0 q1 q2

Automate complémentaire à M1 complété

a a,b
b b

q0 q1 q2

Théorie des langages


36 / 51
N
Automates finis

Automate avec transition instantanée

Automate avec transition instantanée


Une transition instantanée ou -transition permet de passer d’un
état à un autre sans lire de symbole sur le ruban d’entrée.

Théorie des langages


37 / 51
N
Automates finis

Automate avec transition instantanée

Automate avec transition instantanée


Une transition instantanée ou -transition permet de passer d’un
état à un autre sans lire de symbole sur le ruban d’entrée.
Une -transition permet “d’ajouter” à un état les comportements de l’état
cible (transition et éventuellement état final).

Théorie des langages


37 / 51
N
Automates finis

Exemple : transition instantanée


q4

q3

 b
q5

q0  q2

a
a

q1 Théorie des langages


38 / 51
N
Automates finis

Union de deux automates

Union
Soit deux automates finis A1 et A2 . Il existe un automate fini qui
reconnait L(A1 ) ∪ L(A2 ).

Théorie des langages


39 / 51
N
Automates finis

Union de deux automates

Union
Soit deux automates finis A1 et A2 . Il existe un automate fini qui
reconnait L(A1 ) ∪ L(A2 ).
Pour calculer l’union de deux automates, il faut calculer l’équation qui
correspond à chacun des langages.

Théorie des langages


39 / 51
N
Automates finis

Exemple : Union
M4 M5
a b
a,b
b

a 2 3
0 1
a

Théorie des langages


40 / 51
N
Automates finis

Exemple : Union
M4 M5
a b
a,b
b

a 2 3
0 1
a
 
L0 = aL1 L2 = aL2 + bL3
L(M4 ) L(M5 )
L1 = aL1 + bL1 +  L3 = aL2 + bL3 + 

Théorie des langages


40 / 51
N
Automates finis

Exemple : Union

a b
a,b
b

a 2 3
0 1
a
 
L0 = aL1 L2 = aL2 + bL3
L(M4 ) L(M5 )
L1 = aL1 + bL1 +  L3 = aL2 + bL3 + 



 L0 + L2 = a(L1 + L2 ) + bL3
L1 + L2 = a(L1 + L2 ) + b(L1 + L3 ) + 




L1 + L3 = a(L1 + L2 ) + b(L1 + L3 ) + 

L(M4 ) ∪ L(M5 ) = L0 + L2

 = L1 + L2
L3 = aL2 + bL3 + 




L2 = aL2 + bL3

Théorie des langages
40 / 51
N
Automates finis

Exemple : Union


 L0 + L2 = a(L1 + L2 ) + bL3
L1 + L2 = a(L1 + L2 ) + b(L1 + L3 ) + 

L(M4 ) ∪ L(M5 )

 L3 = aL2 + bL3 + 
L2 = aL2 + bL3

Théorie des langages


41 / 51
N
Automates finis

Exemple : Union


 L0 + L2 = a(L1 + L2 ) + bL3
L1 + L2 = a(L1 + L2 ) + b(L1 + L3 ) + 

L(M4 ) ∪ L(M5 )

 L3 = aL2 + bL3 + 
L2 = aL2 + bL3

a
0+2 1+2 a,b

b
a

b 3 2 a

Théorie des langages


41 / 51
N
Automates finis

Intersection de deux automates

Intersection
Soit deux automates finis A1 et A2 qui reconnaissent L(A1 ) et L(A2 ).
Alors, il existe un automate fini qui reconnait L(A1 ) ∩ L(A2 ).

Théorie des langages


42 / 51
N
Automates finis

Intersection de deux automates

Intersection
Soit deux automates finis A1 et A2 qui reconnaissent L(A1 ) et L(A2 ).
Alors, il existe un automate fini qui reconnait L(A1 ) ∩ L(A2 ).

L(A1 ) ∩ L(A2 ) = L(A1 ) ∪ L(A2 )

Théorie des langages


42 / 51
N
Automates finis

Produit de deux automates

Produit
Soit deux automates finis A1 et A2 qui reconnaissent L(A1 ) et L(A2 ).
Alors, il existe un automate fini qui reconnait L(A1 ).L(A2 ).

Théorie des langages


43 / 51
N
Automates finis

Exemple : Produit

a b
a,b
b

a 2 3
0 1
a
 
L0 = aL1 L2 = aL2 + bL3
L(M4 ) L(M5 )
L1 = aL1 + bL1 +  L3 = aL2 + bL3 + 

Théorie des langages


44 / 51
N
Automates finis

Exemple : Produit

a b
a,b
b

a 2 3
0 1
a
 
L0 = aL1 L2 = aL2 + bL3
L(M4 ) L(M5 )
L1 = aL1 + bL1 +  L3 = aL2 + bL3 + 



 L0 L2 = aL1 L2
L1 L2 = aL1 L2 + bL1 L2 + L2




= aL1 L2 + bL1 L2 + aL2 + bL3

L(M4 ).L(M5 ) = L0 L2

 = a(L1 L2 + L2 ) + b(L1 .L2 + L3 )
L1 L2 + L2 = a(L1 L2 + L2 + L2 ) + b(L1 L2 + L3 + L3 )




L1 L2 + L3 = a(L1 L2 + L2 ) + b(L1 L2 + L3 ) + 

Théorie des langages
44 / 51
N
Automates finis

Exemple : Produit


 L0 .L2 = aL1 .L2
L(M4 ).L(M5 ) L1 .L2 = a(L1 .L2 ) + b(L1 .L2 + L3 )
L1 L2 + L3 = a(L1 .L2 ) + b(L1 .L2 + L3 ) + 

Théorie des langages


45 / 51
N
Automates finis

Exemple : Produit


 L0 .L2 = aL1 .L2
L(M4 ).L(M5 ) L1 .L2 = a(L1 .L2 ) + b(L1 .L2 + L3 )
L1 L2 + L3 = a(L1 .L2 ) + b(L1 .L2 + L3 ) + 

a
0.2 1.2 a

b a

1.2+3 b

Théorie des langages


45 / 51
N
Automates finis

Automates finis

Introduction
Formalisation
Représentation et exemples
Automates complets
Langage généré par un automate
Automate fini non déterministe
Opérations sur les automates
Automates finis et langages

Théorie des langages


46 / 51
N
Automates finis

Transformation d’un automate fini en


grammaire

Grammaire associée à un automate fini


Pour tout automate M = hQ, Σ, ∆, q0 , F i, il existe une grammaire
linéaire à droite qui génère L(M).
G = hVG , ΣG , PG , SG i, avec
ΣG = Σ l’ensemble des symboles terminaux
VG = Q ∪ Σ l’alphabet. Il y a donc un symbole non terminal pour
chaque état de l’automate
SG = S, où S est le symbole non terminal associé à q0
PG = {A → wB|(A, w , B) ∈ ∆} ∪ {A → |A ∈ F }

Théorie des langages


47 / 51
N
Automates finis

Exemple

Automate M1 .
a
b

q0 q1

L(M1 ) : L0 = aL0 + bL1 + ; L1 = aL0 + 

Théorie des langages


48 / 51
N
Automates finis

Exemple

Automate M1 .
a
b

q0 q1

L(M1 ) : L0 = aL0 + bL1 + ; L1 = aL0 + 


GM1 = hVG , ΣG , PG , SG i, avec VG = {a, b, S, U}; ΣG = {a, b}; SG = S;


 S → aS
S → bU



PG = S → 
U → aS




U → 

Théorie des langages


48 / 51
N
Automates finis

Transformation d’une grammaire


linéaire à droite en automate

Automate associé à une grammaire linéaire à droite


Pour toute grammaire linéaire à droite G = hVG , ΣG , PG , SG i, il existe
un automate M = hQ, Σ, ∆, S, F i qui reconnaı̂t L(G ).
Q : Un état pour chaque symbole non terminal. L’état initial est
l’état correspondant à l’axiome SG
F : Les états finaux sont les états dont les non terminaux associés ont
une règle du type A → 
Il est ensuite possible de construire le système d’équation
correspondant à l’automate

Théorie des langages


49 / 51
N
Automates finis

Exemple

G = hVG , ΣG , PG , SG i, avec VG = {a, b, S, U}; ΣG = {a, b}; SG = S;




 S → bS
 S → aU


PG = S → b
U → aS




U → bU

Théorie des langages


50 / 51
N
Automates finis

Exemple

G = hVG , ΣG , PG , SG i, avec VG = {a, b, S, U}; ΣG = {a, b}; SG = S;




 S → bS
 S → aU


PG = S → b
U → aS




U → bU

Théorie des langages


50 / 51
N
Automates finis

Exemple

G = hVG , ΣG , PG , SG i, avec VG = {a, b, S, U}; ΣG = {a, b}; SG = S;




 S → bS
 S → aU


PG = S → b
U → aS




U → bU

G 0 = hVG0 , Σ0G , PG0 , SG0 i, avec VG0 = {a, b, S, U, V }; Σ0G = {a, b}; SG0 = S;


 S → bS
S → aU




S → bV

PG =

 V → 
U → aS




U → bU

Théorie des langages


50 / 51
N
Automates finis

Exemple
G 0 = hVG0 , Σ0G , PG0 , SG0 i, avec VG0 = {a, b, S, U, V }; Σ0G = {a, b}; SG0 = S;


 S → bS
S → aU




S → bV

PG =

 V → 
U → aS




U → bU

Théorie des langages


51 / 51
N
Automates finis

Exemple
G 0 = hVG0 , Σ0G , PG0 , SG0 i, avec VG0 = {a, b, S, U, V }; Σ0G = {a, b}; SG0 = S;


 S → bS
S → aU




S → bV

PG =

 V → 
U → aS




U → bU

Automate M.
b
a
b
V S U

a
b
Théorie des langages
51 / 51
N