03 Automates Finis Cours THL
03 Automates Finis Cours THL
03 Automates Finis Cours THL
Automates finis
Elise Bonzon
http://web.mi.parisdescartes.fr/vbonzon/
[email protected]
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
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
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
Introduction
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
Dérivation
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 )
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.
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
Notations
Etat initial
q0
q q
p a q
Exemple
Automate M1
a
b
q0 q1
Exemple
Automate M1
a
b
q0 q1
Exemple
Automate M1
a
b
q0 q1
Exemple
Automate M1
a
b
q0 q1
Exemple
Automate M1
a
b
q0 q1
Exemple
Automate M2
a a,b
b b
q0 q1 q2
Exemple
Automate M2
a a,b
b b
q0 q1 q2
Exemple
Automate M2
a a,b
b b
q0 q1 q2
Exemple
Automate M2
a a,b
b b
q0 q1 q2
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
Automate complet
Automate complet
Un automate est complet si pour tout état q ∈ Q il existe une
transition pour chaque lettre de l’alphabet Σ.
Exemple
Σ = {a, b}
L’automate M1 est-il complet?
a
b
q0 q1
a a,b
b b
q0 q1 q2
Etat poubelle
Un état poubelle est un état puits non final.
Etat poubelle
Un état poubelle est un état puits non final.
Pour Σ = {a, b}
a,b
q0
Automates équivalents
Automates équivalents
Deux automates M et M 0 sont équivalents si et seulement si L(M) =
L(M 0 ).
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
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
Exemple
L’automate M1 .
a
b
q0 q1
Exemple
Automate M1 .
a
b
q0 q1
Automate M1 complété
a a,b
b b
q0 q1 q2
Automates complets
Propriété
Pour un automate complet, la reconnaissance d’un mot ne “bloque”
jamais.
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é
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
L(M) = L(q0 )
L(M) = L(q0 )
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
Exemple
Automate M3
q1
a,b a,b
b b
q0 q3
a a
q2
abb ∈ L(M3 )
Exemple
Automate M3
q1
a,b a,b
b b
q0 q3
a a
q2
abb ∈ L(M3 )
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 )
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 +
Exemple : automate M3
Déterminisons M3
L0 = aL0 + bL0 + aL2 + bL1
L1 = bL3
L2 = aL3
L3 = aL3 + bL3 +
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
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
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
Complémentation
Complémentation
Pour tout automate fini M, il existe un automate fini M 0 tel que
L(M 0 ) = L(M)
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.
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
Exemple : Complémentation
Automate M1 complété
a a,b
b b
q0 q1 q2
Exemple : Complémentation
Automate M1 complété
a a,b
b b
q0 q1 q2
a a,b
b b
q0 q1 q2
q3
b
q5
q0 q2
a
a
Union
Soit deux automates finis A1 et A2 . Il existe un automate fini qui
reconnait L(A1 ) ∪ L(A2 ).
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.
Exemple : Union
M4 M5
a b
a,b
b
a 2 3
0 1
a
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 +
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
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
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 ).
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 ).
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 ).
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 +
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 ) +
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
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
Exemple
Automate M1 .
a
b
q0 q1
Exemple
Automate M1 .
a
b
q0 q1
Exemple
Exemple
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
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
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