Вы находитесь на странице: 1из 64

AFD AFN Operations Lemme de pompage 1/ 36

Theorie des Langages

Episode 2 Automates nis


Thomas Pietrzak
Universite Paul Verlaine Metz
AFD AFN Operations Lemme de pompage Reconnaisseur Denition Exemple Conguration Acceptation 2/ 36
Reconnaisseur
Une tache principale dans lanalyse lexicale et syntaxique est de decider
soit pour une unite lexicale soit pour un programme si cette entree est
un mot du langage decrit par soit une expression reguli`ere r soit une
grammaire hors contexte G.
Il faut alors un reconnaisseur pour un langage L. Cest un programme qui
prend en entree un mot m et repond oui si m L et non
autrement.
Automate ni
On compile une expression reguli`ere en un reconnasseur en construisant
un diagramme de transition generalise. Le mod`ele de machine
correspondant est appele automate ni.
Les automates nis, aussi bien deterministes que non deterministes sont
capables de reconnatre precisement les langages reguliers.
AFD AFN Operations Lemme de pompage Reconnaisseur Denition Exemple Conguration Acceptation 3/ 36
Automate ni Deterministe
Un automate ni deterministe (AFD) est deni par A = (E, , , e
0
, F)
o` u
E est un ensemble ni detats
est un ensemble ni de symboles dentree
: E E est une fonction de transition
e
0
est un etat de depart
F E est lensemble des etats dacceptation
AFD AFN Operations Lemme de pompage Reconnaisseur Denition Exemple Conguration Acceptation 4/ 36
Exemple
Voici un automate pour lexpression reguli`ere (a|b)

abb
A = ({e
0
, e
1
, e
2
, e
3
}, {a, b}, , e
0
, {e
3
}) o` u est deni par :

Etat
Symbole dentree
a b
0 1 0
1 1 2
2 1 3
3 1 0
Representation schematique :
debut
\
0
a

\
1
b

a
_
\
2
b

_ `
a

\
3
`
b

_ `

Exemples de chanes reconnues : abb, aaaaabb, abbabb, abaababb


AFD AFN Operations Lemme de pompage Reconnaisseur Denition Exemple Conguration Acceptation 5/ 36
Conguration
Une conguration dun automate est une description compl`ete de la
situation de lautomate. On note (m, e) avec m le mot qui reste sur la
bande et e letat courant.
(m, e
0
) est une conguration de depart, avec m lentree.
(, e), avec e F est une conguration nale.
(au, e)
A
(u, e

) (e, a) = e

o` u a , u

et e, e

E.
Conguration suivant
Une conguration K

dun automate A est une conguration suivant de


K, note K

A
K

, sil y a une suite K = K


0
, K
1
, . . . , K
r
= K

telle que
K
i

A
K
i +1
pou chaque i {0, 1, . . . , r 2}.
AFD AFN Operations Lemme de pompage Reconnaisseur Denition Exemple Conguration Acceptation 6/ 36
Acceptation
Un automate ni lit lentree une seule fois en passant la tete de lecture
de gauche `a droite sans se retourner. Lautomate accepte un mot sil
arrive dans un etat dacceptation apr`es avoir lu le mot au total.
Denition
Le langage L est accepte par un AFD A si L est deni par
L = L(A) = {m

|(m, e
0
)

A
(, e), e F}
Exemple
A = ({e
0
, e
1
}, {a, b}, , e
0
, {e
0
})
a b
e
0
e
0
e
1
e
1
e
1
e
1
L(A) = {a
n
|n N}
AFD AFN Operations Lemme de pompage Denition Exemple Acceptation Graphe 7/ 36
Automate ni Non Deterministe
Un automate ni non deterministe (AFN) est deni par
A = (E, , , e
0
, F) o` u
E est un ensemble ni detats
est un ensemble ni de symboles dentree
(E ) E est une relation de transition
e
0
est un etat de depart
F E est lensemble des etats dacceptation
Au contraire dun AFD, une transition dun AFN (e, a) peut avoir
plusieurs valeurs : (e, a) Z.
En consequence, pour un AFN A une conguration suivant nest plus
uniquement determinee : (au, e)
A
(u, e

) e

(e, a) o` u a ,
u

et e, e

E.
AFD AFN Operations Lemme de pompage Denition Exemple Acceptation Graphe 8/ 36
Exemple
En reprenant lexpression reguli`ere (a|b)

abb
A = ({e
0
, e
1
, e
2
, e
3
}, {a, b}, , e
0
, {e
3
}) o` u est deni par :

Etat
Symbole dentree
a b
0 {0, 1} {0}
1 {2}
2 {3}
Representation schematique :
debut
\
0
a

\
1
b
\
2
b
\
3
Exemples de chanes reconnues : abb, aaaaabb, abbabb, abaababb
AFD AFN Operations Lemme de pompage Denition Exemple Acceptation Graphe 9/ 36
Acceptation
Le langage L est accepte par un AFN A si L est deni par
L = L(A) = {m

|(m, e
0
)

A
(, e), e F}
On voit facilement que par denition chaque AFD est aussi un AFN.
Dautre part, generalement un AFN nest pas toujours un AFD.
AFD AFN Operations Lemme de pompage Denition Exemple Acceptation Graphe 10/ 36
Graphe de transition
La fonction de transition dun AFD ou la relation de transition dun AFN
peuvent etre representees par un graphe oriente appele graphe de
transition.
Les noeuds du graphe sont les etats de lautomate et les arcs sont
etiquetes comme suit
il y a un arc (e, e

) etiquete a si et seulement si (e, a) = e

dans un AFD ou e

(e, a) dans un AFN.


il y a des arcs multiples (e, e) dans le graphe de transition si
e

(e, a) pour plusieurs caract`eres a .


Exemple
(e
0
, a) = e
1
(e
0
, b) = e
1
(e
1
, a) = e
2
(e
1
, b) = e
2
(e
2
, a) = e
1
(e
2
, b) = e
1
F = {e
1
}
\
0
a,b
\
1
a,b

\
2
a,b

AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 11/ 36
Construire un AFN `a partir dune expression reguli`ere
Pour toute expression reguli`ere r on peut construire un AFN qui reconnat
le meme langage. On construit lautomate par induction sur la syntaxe :




a

a

R
1
R
2

R
1



R
2

R
1
| R
2

R
1

G
G
G
G
G
G



w
w
w
w
w
w

H
H
H
H
H
H


R
2



v
v
v
v
v
v
R


R
1

_ `

,


AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 12/ 36
Exemple
Lexpression reguli`ere (a | b)

abb peut secrire sous la forme dun AFN :



a

?
?
?
?
?
?










?
?
?
?
?
?


a

b

b


b







AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 13/ 36
Theor`eme de Rabin et Scott
Pour tout AFN A il existe un AFD A

tel que L(A) = L(A

).
Demonstration
Soit A = (E, , , e
0
, F) un AFN. On construit un AFD
A

= (E

, ,

, e

0
, F

) comme suit :
E

:= P(E)
e

0
:= {e
0
}
F

:= {X E | X F = }
Pour tout X E et tout a :

(X, a) :=

xX
(x, a)
Pour demontrer que la construction est correcte il faut montrer que
L(A) = L(A

).
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 14/ 36
Algorithme
Initialisation : E

:= {{e
0
}}, T := {{e
0
}}
Tant que T =
Choisir un element S T
Pour tout symbole a
Calculer letat S

=
S
eS
(e, a)
Si S

cest pas dej`a dans E

, lajouter dans T et dans E

Ajouter un arc sur lautomate entre S et S

et le valuer par a
T := T \ S
Exemple
\
0
b

\
1
a
\
2
b
\
3
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 15/ 36
Exemple
E

= {{e
0
}} T = {{e
0
}}
S := {e
0
}
S

:= (e
0
, a) = {e
0
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
}, a) = {e
0
}
S

:= (e
0
, b) = {e
0
, e
1
}
S

nest pas encore dans E

donc on lajoute

({e
0
}, b) = {e
0
, e
1
}
On supprime {e
0
} de T
e a b
{e
0
}
\
0
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 15/ 36
Exemple
E

= {{e
0
}} T = {{e
0
}}
S := {e
0
}
S

:= (e
0
, a) = {e
0
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
}, a) = {e
0
}
S

:= (e
0
, b) = {e
0
, e
1
}
S

nest pas encore dans E

donc on lajoute

({e
0
}, b) = {e
0
, e
1
}
On supprime {e
0
} de T
e a b
{e
0
}
\
0
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 15/ 36
Exemple
E

= {{e
0
}} T = {{e
0
}}
S := {e
0
}
S

:= (e
0
, a) = {e
0
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
}, a) = {e
0
}
S

:= (e
0
, b) = {e
0
, e
1
}
S

nest pas encore dans E

donc on lajoute

({e
0
}, b) = {e
0
, e
1
}
On supprime {e
0
} de T
e a b
{e
0
}
\
0
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 15/ 36
Exemple
E

= {{e
0
}} T = {{e
0
}}
S := {e
0
}
S

:= (e
0
, a) = {e
0
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
}, a) = {e
0
}
S

:= (e
0
, b) = {e
0
, e
1
}
S

nest pas encore dans E

donc on lajoute

({e
0
}, b) = {e
0
, e
1
}
On supprime {e
0
} de T
e a b
{e
0
} {e
0
}
\
0
a

AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 15/ 36
Exemple
E

= {{e
0
}} T = {{e
0
}}
S := {e
0
}
S

:= (e
0
, a) = {e
0
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
}, a) = {e
0
}
S

:= (e
0
, b) = {e
0
, e
1
}
S

nest pas encore dans E

donc on lajoute

({e
0
}, b) = {e
0
, e
1
}
On supprime {e
0
} de T
e a b
{e
0
} {e
0
}
\
0
a

AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 15/ 36
Exemple
E = {{e
0
}, {e
0
, e
1
}} T = {{e
0
}, {e
0
, e
1
}}
S := {e
0
}
S

:= (e
0
, a) = {e
0
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
}, a) = {e
0
}
S

:= (e
0
, b) = {e
0
, e
1
}
S

nest pas encore dans E

donc on lajoute

({e
0
}, b) = {e
0
, e
1
}
On supprime {e
0
} de T
e a b
{e
0
} {e
0
}
{e
0
, e
1
}
\
0
a

` _
0, 1
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 15/ 36
Exemple
E = {{e
0
}, {e
0
, e
1
}} T = {{e
0
}, {e
0
, e
1
}}
S := {e
0
}
S

:= (e
0
, a) = {e
0
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
}, a) = {e
0
}
S

:= (e
0
, b) = {e
0
, e
1
}
S

nest pas encore dans E

donc on lajoute

({e
0
}, b) = {e
0
, e
1
}
On supprime {e
0
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
}
\
0
a

b
` _
0, 1
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 15/ 36
Exemple
E = {{e
0
}, {e
0
, e
1
}} T = {{e
0
, e
1
}}
S := {e
0
}
S

:= (e
0
, a) = {e
0
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
}, a) = {e
0
}
S

:= (e
0
, b) = {e
0
, e
1
}
S

nest pas encore dans E

donc on lajoute

({e
0
}, b) = {e
0
, e
1
}
On supprime {e
0
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
}
\
0
a

b
` _
0, 1
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 16/ 36
Exemple
E

= {{e
0
}, {e
0
, e
1
}} T = {{e
0
, e
1
}}
S := {e
0
, e
1
}
S

:= (e
0
, a) (e
1
, a) =
{e
0
, e
2
}
S

nest pas encore dans E

donc on lajoute

({e
0
, e
1
}, a) = {e
0
, e
2
}
S

:= (e
0
, b) (e
1
, b) =
{e
0
, e
1
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
1
}, b) = {e
0
, e
1
}
On supprime {e
0
, e
1
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
}
\
0
a

b
` _
0, 1
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 16/ 36
Exemple
E

= {{e
0
}, {e
0
, e
1
}} T = {{e
0
, e
1
}}
S := {e
0
, e
1
}
S

:= (e
0
, a) (e
1
, a) =
{e
0
, e
2
}
S

nest pas encore dans E

donc on lajoute

({e
0
, e
1
}, a) = {e
0
, e
2
}
S

:= (e
0
, b) (e
1
, b) =
{e
0
, e
1
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
1
}, b) = {e
0
, e
1
}
On supprime {e
0
, e
1
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
}
\
0
a

b
` _
0, 1
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 16/ 36
Exemple
E

= {{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}} T = {{e
0
, e
1
}, {e
0
, e
2
}}
S := {e
0
, e
1
}
S

:= (e
0
, a) (e
1
, a) =
{e
0
, e
2
}
S

nest pas encore dans E

donc on lajoute

({e
0
, e
1
}, a) = {e
0
, e
2
}
S

:= (e
0
, b) (e
1
, b) =
{e
0
, e
1
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
1
}, b) = {e
0
, e
1
}
On supprime {e
0
, e
1
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
}
{e
0
, e
2
}
\
0
a

b
` _
0, 1
` _
0, 2
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 16/ 36
Exemple
E

= {{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}} T = {{e
0
, e
1
}, {e
0
, e
2
}}
S := {e
0
, e
1
}
S

:= (e
0
, a) (e
1
, a) =
{e
0
, e
2
}
S

nest pas encore dans E

donc on lajoute

({e
0
, e
1
}, a) = {e
0
, e
2
}
S

:= (e
0
, b) (e
1
, b) =
{e
0
, e
1
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
1
}, b) = {e
0
, e
1
}
On supprime {e
0
, e
1
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
}
{e
0
, e
2
}
\
0
a

b
` _
0, 1
a
` _
0, 2
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 16/ 36
Exemple
E

= {{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}} T = {{e
0
, e
1
}, {e
0
, e
2
}}
S := {e
0
, e
1
}
S

:= (e
0
, a) (e
1
, a) =
{e
0
, e
2
}
S

nest pas encore dans E

donc on lajoute

({e
0
, e
1
}, a) = {e
0
, e
2
}
S

:= (e
0
, b) (e
1
, b) =
{e
0
, e
1
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
1
}, b) = {e
0
, e
1
}
On supprime {e
0
, e
1
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
}
{e
0
, e
2
}
\
0
a

b
` _
0, 1
a
` _
0, 2
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 16/ 36
Exemple
E

= {{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}} T = {{e
0
, e
1
}, {e
0
, e
2
}}
S := {e
0
, e
1
}
S

:= (e
0
, a) (e
1
, a) =
{e
0
, e
2
}
S

nest pas encore dans E

donc on lajoute

({e
0
, e
1
}, a) = {e
0
, e
2
}
S

:= (e
0
, b) (e
1
, b) =
{e
0
, e
1
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
1
}, b) = {e
0
, e
1
}
On supprime {e
0
, e
1
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
}
{e
0
, e
2
}
\
0
a

b
` _
0, 1
a
` _
0, 2
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 16/ 36
Exemple
E

= {{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}} T = {{e
0
, e
1
}, {e
0
, e
2
}}
S := {e
0
, e
1
}
S

:= (e
0
, a) (e
1
, a) =
{e
0
, e
2
}
S

nest pas encore dans E

donc on lajoute

({e
0
, e
1
}, a) = {e
0
, e
2
}
S

:= (e
0
, b) (e
1
, b) =
{e
0
, e
1
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
1
}, b) = {e
0
, e
1
}
On supprime {e
0
, e
1
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
}
\
0
a

b
` _
0, 1
a

` _
0, 2
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 16/ 36
Exemple
E

= {{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}} T = {{e
0
, e
2
}}
S := {e
0
, e
1
}
S

:= (e
0
, a) (e
1
, a) =
{e
0
, e
2
}
S

nest pas encore dans E

donc on lajoute

({e
0
, e
1
}, a) = {e
0
, e
2
}
S

:= (e
0
, b) (e
1
, b) =
{e
0
, e
1
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
1
}, b) = {e
0
, e
1
}
On supprime {e
0
, e
1
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
}
\
0
a

b
` _
0, 1
a

` _
0, 2
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 17/ 36
Exemple
E

= {{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}} T = {{e
0
, e
2
}}
S := {e
0
, e
2
}
S

:= (e
0
, a) (e
2
, a) =
{e
0
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
2
}, a) = {e
0
}
S

:= (e
0
, b) (e
2
, b) =
{e
0
, e
1
, e
3
}
S

nest pas encore dans E

donc on lajoute

({e
0
, e
2
}, b) = {e
0
, e
1
, e
3
}
On supprime {e
0
, e
2
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
}
\
0
a

b
` _
0, 1
a

` _
0, 2
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 17/ 36
Exemple
E

= {{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}} T = {{e
0
, e
2
}}
S := {e
0
, e
2
}
S

:= (e
0
, a) (e
2
, a) =
{e
0
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
2
}, a) = {e
0
}
S

:= (e
0
, b) (e
2
, b) =
{e
0
, e
1
, e
3
}
S

nest pas encore dans E

donc on lajoute

({e
0
, e
2
}, b) = {e
0
, e
1
, e
3
}
On supprime {e
0
, e
2
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
}
\
0
a

b
` _
0, 1
a

` _
0, 2
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 17/ 36
Exemple
E

= {{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}} T = {{e
0
, e
2
}}
S := {e
0
, e
2
}
S

:= (e
0
, a) (e
2
, a) =
{e
0
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
2
}, a) = {e
0
}
S

:= (e
0
, b) (e
2
, b) =
{e
0
, e
1
, e
3
}
S

nest pas encore dans E

donc on lajoute

({e
0
, e
2
}, b) = {e
0
, e
1
, e
3
}
On supprime {e
0
, e
2
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
}
\
0
a

b
` _
0, 1
a

` _
0, 2
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 17/ 36
Exemple
E

= {{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}} T = {{e
0
, e
2
}}
S := {e
0
, e
2
}
S

:= (e
0
, a) (e
2
, a) =
{e
0
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
2
}, a) = {e
0
}
S

:= (e
0
, b) (e
2
, b) =
{e
0
, e
1
, e
3
}
S

nest pas encore dans E

donc on lajoute

({e
0
, e
2
}, b) = {e
0
, e
1
, e
3
}
On supprime {e
0
, e
2
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
} {e
0
}
\
0
a

b
` _
0, 1
a

` _
0, 2
_ `
a

AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 17/ 36
Exemple
E

= {{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}} T = {{e
0
, e
2
}}
S := {e
0
, e
2
}
S

:= (e
0
, a) (e
2
, a) =
{e
0
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
2
}, a) = {e
0
}
S

:= (e
0
, b) (e
2
, b) =
{e
0
, e
1
, e
3
}
S

nest pas encore dans E

donc on lajoute

({e
0
, e
2
}, b) = {e
0
, e
1
, e
3
}
On supprime {e
0
, e
2
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
} {e
0
}
\
0
a

b
` _
0, 1
a

` _
0, 2
_ `
a

AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 17/ 36
Exemple
E

=
{{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}, {e
0
, e
1
, e
3
}}
T = {{e
0
, e
2
}, {e
0
, e
1
, e
3
}}
S := {e
0
, e
2
}
S

:= (e
0
, a) (e
2
, a) =
{e
0
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
2
}, a) = {e
0
}
S

:= (e
0
, b) (e
2
, b) =
{e
0
, e
1
, e
3
}
S

nest pas encore dans E

donc on lajoute

({e
0
, e
2
}, b) = {e
0
, e
1
, e
3
}
On supprime {e
0
, e
2
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
} {e
0
}
{e
0
, e
1
, e
3
}
\
0
a

b
` _
0, 1
a

` _
0, 2
_ `
a

\ __ ` _
0, 1, 3
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 17/ 36
Exemple
E

=
{{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}, {e
0
, e
1
, e
3
}}
T = {{e
0
, e
2
}, {e
0
, e
1
, e
3
}}
S := {e
0
, e
2
}
S

:= (e
0
, a) (e
2
, a) =
{e
0
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
2
}, a) = {e
0
}
S

:= (e
0
, b) (e
2
, b) =
{e
0
, e
1
, e
3
}
S

nest pas encore dans E

donc on lajoute

({e
0
, e
2
}, b) = {e
0
, e
1
, e
3
}
On supprime {e
0
, e
2
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
} {e
0
} {e
0
, e
1
, e
3
}
{e
0
, e
1
, e
3
}
\
0
a

b
` _
0, 1
a

` _
0, 2
_ `
a

\ __ ` _
0, 1, 3
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 17/ 36
Exemple
E

=
{{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}, {e
0
, e
1
, e
3
}}
T = {{e
0
, e
1
, e
3
}}
S := {e
0
, e
2
}
S

:= (e
0
, a) (e
2
, a) =
{e
0
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
2
}, a) = {e
0
}
S

:= (e
0
, b) (e
2
, b) =
{e
0
, e
1
, e
3
}
S

nest pas encore dans E

donc on lajoute

({e
0
, e
2
}, b) = {e
0
, e
1
, e
3
}
On supprime {e
0
, e
2
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
} {e
0
} {e
0
, e
1
, e
3
}
{e
0
, e
1
, e
3
}
\
0
a

b
` _
0, 1
a

` _
0, 2
_ `
a

\ __ ` _
0, 1, 3
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 18/ 36
Exemple
E

=
{{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}, {e
0
, e
1
, e
3
}}
T = {{e
0
, e
1
, e
3
}}
S := {e
0
, e
1
, e
3
}
S

:= (e
0
, a) (e
1
, a)
(e
3
, a) = {e
0
, e
2
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
1
, e
3
}, a) = {e
0
, e
2
}
S

:= (e
0
, b) (e
1
, b)
(e
3
, b) = {e
0
, e
1
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
2
}, b) = {e
0
, e
1
, e
3
}
On supprime {e
0
, e
2
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
} {e
0
} {e
0
, e
1
, e
3
}
{e
0
, e
1
, e
3
}
\
0
a

b
` _
0, 1
a

` _
0, 2
_ `
a

\ __ ` _
0, 1, 3
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 18/ 36
Exemple
E

=
{{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}, {e
0
, e
1
, e
3
}}
T = {{e
0
, e
1
, e
3
}}
S := {e
0
, e
1
, e
3
}
S

:= (e
0
, a) (e
1
, a)
(e
3
, a) = {e
0
, e
2
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
1
, e
3
}, a) = {e
0
, e
2
}
S

:= (e
0
, b) (e
1
, b)
(e
3
, b) = {e
0
, e
1
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
2
}, b) = {e
0
, e
1
, e
3
}
On supprime {e
0
, e
2
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
} {e
0
} {e
0
, e
1
, e
3
}
{e
0
, e
1
, e
3
}
\
0
a

b
` _
0, 1
a

` _
0, 2
_ `
a

\ __ ` _
0, 1, 3
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 18/ 36
Exemple
E

=
{{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}, {e
0
, e
1
, e
3
}}
T = {{e
0
, e
1
, e
3
}}
S := {e
0
, e
1
, e
3
}
S

:= (e
0
, a) (e
1
, a)
(e
3
, a) = {e
0
, e
2
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
1
, e
3
}, a) = {e
0
, e
2
}
S

:= (e
0
, b) (e
1
, b)
(e
3
, b) = {e
0
, e
1
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
2
}, b) = {e
0
, e
1
, e
3
}
On supprime {e
0
, e
2
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
} {e
0
} {e
0
, e
1
, e
3
}
{e
0
, e
1
, e
3
}
\
0
a

b
` _
0, 1
a

` _
0, 2
_ `
a

\ __ ` _
0, 1, 3
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 18/ 36
Exemple
E

=
{{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}, {e
0
, e
1
, e
3
}}
T = {{e
0
, e
1
, e
3
}}
S := {e
0
, e
1
, e
3
}
S

:= (e
0
, a) (e
1
, a)
(e
3
, a) = {e
0
, e
2
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
1
, e
3
}, a) = {e
0
, e
2
}
S

:= (e
0
, b) (e
1
, b)
(e
3
, b) = {e
0
, e
1
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
2
}, b) = {e
0
, e
1
, e
3
}
On supprime {e
0
, e
2
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
} {e
0
} {e
0
, e
1
, e
3
}
{e
0
, e
1
, e
3
} {e
0
, e
2
}
\
0
a

b
` _
0, 1
a

` _
0, 2
_ `
a

\ __ ` _
0, 1, 3
a

AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 18/ 36
Exemple
E

=
{{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}, {e
0
, e
1
, e
3
}}
T = {{e
0
, e
1
, e
3
}}
S := {e
0
, e
1
, e
3
}
S

:= (e
0
, a) (e
1
, a)
(e
3
, a) = {e
0
, e
2
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
1
, e
3
}, a) = {e
0
, e
2
}
S

:= (e
0
, b) (e
1
, b)
(e
3
, b) = {e
0
, e
1
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
2
}, b) = {e
0
, e
1
, e
3
}
On supprime {e
0
, e
2
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
} {e
0
} {e
0
, e
1
, e
3
}
{e
0
, e
1
, e
3
} {e
0
, e
2
}
\
0
a

b
` _
0, 1
a

` _
0, 2
_ `
a

\ __ ` _
0, 1, 3
a

AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 18/ 36
Exemple
E

=
{{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}, {e
0
, e
1
, e
3
}}
T = {{e
0
, e
1
, e
3
}}
S := {e
0
, e
1
, e
3
}
S

:= (e
0
, a) (e
1
, a)
(e
3
, a) = {e
0
, e
2
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
1
, e
3
}, a) = {e
0
, e
2
}
S

:= (e
0
, b) (e
1
, b)
(e
3
, b) = {e
0
, e
1
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
2
}, b) = {e
0
, e
1
, e
3
}
On supprime {e
0
, e
2
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
} {e
0
} {e
0
, e
1
, e
3
}
{e
0
, e
1
, e
3
} {e
0
, e
2
}
\
0
a

b
` _
0, 1
a

` _
0, 2
_ `
a

\ __ ` _
0, 1, 3
a

AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 18/ 36
Exemple
E

=
{{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}, {e
0
, e
1
, e
3
}}
T = {{e
0
, e
1
, e
3
}}
S := {e
0
, e
1
, e
3
}
S

:= (e
0
, a) (e
1
, a)
(e
3
, a) = {e
0
, e
2
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
1
, e
3
}, a) = {e
0
, e
2
}
S

:= (e
0
, b) (e
1
, b)
(e
3
, b) = {e
0
, e
1
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
2
}, b) = {e
0
, e
1
, e
3
}
On supprime {e
0
, e
2
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
} {e
0
} {e
0
, e
1
, e
3
}
{e
0
, e
1
, e
3
} {e
0
, e
2
} {e
0
, e
1
}
\
0
a

b
` _
0, 1
a

` _
0, 2
_ `
a

\ __ ` _
0, 1, 3
a

`
b

AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 18/ 36
Exemple
E

=
{{e
0
}, {e
0
, e
1
}, {e
0
, e
2
}, {e
0
, e
1
, e
3
}}
T = {}
S := {e
0
, e
1
, e
3
}
S

:= (e
0
, a) (e
1
, a)
(e
3
, a) = {e
0
, e
2
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
1
, e
3
}, a) = {e
0
, e
2
}
S

:= (e
0
, b) (e
1
, b)
(e
3
, b) = {e
0
, e
1
}
S

est dej`a dans E

donc on
ne lajoute pas

({e
0
, e
2
}, b) = {e
0
, e
1
, e
3
}
On supprime {e
0
, e
2
} de T
e a b
{e
0
} {e
0
} {e
0
, e
1
}
{e
0
, e
1
} {e
0
, e
2
} {e
0
, e
1
}
{e
0
, e
2
} {e
0
} {e
0
, e
1
, e
3
}
{e
0
, e
1
, e
3
} {e
0
, e
2
} {e
0
, e
1
}
\
0
a

b
` _
0, 1
a

` _
0, 2
_ `
a

\ __ ` _
0, 1, 3
a

`
b

AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 19/ 36
Suppression des -transitions
Si on gen`ere lAFN avec lalgorithme de la section precedente, il faut
enlever les -transitions lors de la creation dun AFD. Pour cela on denit
quelques fonctions.
Denitions
fermeture(e) : ensemble des etats de lAFN accessibles depuis
letat e de lAFN par des -transitions uniquement.
fermeture(T) : ensemble des etats de lAFN accessibles depuis
un etat e appartenant `a T par des -transitions uniquement.
Transiter (T, a) : Ensemble des etats de lAFN vers lesquels il existe
une transition sur le symbole dentree a `a partir dun etat e
appartenant `a T.
Algorithme
Il sut de remplacer dans lalgorithme precedent les

eS
(e, a) par
fermeture(Transiter (S, a)) et initialiser E

et T par fermeture(e
0
).
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 20/ 36
Exemple
Prenons lexemple precedent : (a | b)

abb et lAFN quon en a deduit :


.
2
a
.
3

=
=
=
=
=
=
.
0

.
1

=
=
=
=
=
=
.
6

.
7
a
.
8
b
.
9
b
.
10
.
4
b
.
5

AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 21/ 36
.
2
a
.
3

B
B
B
B
.
0

.
1


|
|
|
|

B
B
B
B
.
6

.
7
a
.
8
b
.
9
b
_
10
.
4
b
.
5

|
|
|
|
.
C
a

.
A
a

b

.
B
a

.
D
a
.
b
.
E
_
a

Exemple
A = fermeture(e
0
) = {0, 1, 2, 4, 7}
f (Transiter (A, a)) = f ({3, 8}) = {1, 2, 3, 4, 6, 7, 8} = B
f (Transiter (A, b)) = f ({5}) = {1, 2, 4, 5, 6, 7} = C
f (Transiter (B, a)) = f ({3, 8}) = B
f (Transiter (B, b)) = f ({5, 9}) = {1, 2, 4, 5, 6, 7, 9} = D
f (Transiter (C, a)) = f ({3, 8}) = B f (Transiter(C, b)) = f ({5}) = C
f (Transiter(D, a)) = f ({3, 8}) = B
f (Transiter (D, b)) = f ({5, 10}) = {1, 2, 4, 5, 6, 7, 10} = E
f (Transiter (E, a)) = f ({3, 8}) = B f (Transiter (E, b)) = f ({5}) = C
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 22/ 36
Description des langages reguliers
Theor`eme : Soit un alphabet et L un langage sur . Alors les
proprietes suivantes sont equivalentes :
L est un langage regulier, cest `a dire quil y a une grammaire
reguli`ere G telle que L = L(G).
Il existe une expression reguli`ere r denotant L.
Il existe un AFN A tel que L = L(A).
Il existe un AFD A

tel que L = L(A

).
Les demonstrations dequivalence sont basees sur des transformations
constructives.
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 23/ 36
Theor`eme de Myhill-Nerode
Le theor`eme de Myhill-Nerode donne une condition necessaire et
susante pour quun langage soit regulier.
Typiquement on utilise ce theor`eme pour verier si un langage est
regulier ou non.
Denition
Soit L

un langage. La relation R
L
sur

est denie par xR


L
y si
pour tout w

, soit xw L et yw L, soit xw / L et yw / L.
On peut montrer que R
L
est une relation dequivalence sur

.
Le nombre de classes dequivalences dune relation R est appelee indice
de R.
Theor`eme
Un langage L

est regulier si et seulement si lindice de R


L
est ni.
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 24/ 36
Theor`eme
Un resultat theorique important est une consequence du theor`eme
Myhill-Nerode.
Corollaire : chaque langage regulier est reconnu par un AFD `a un nombre
detats minimal, qui est unique `a un renommage pr`es des etats.
On appelle cet AFD lautomate minimal de L. Le nombre detats de
lautomate minimal est egal `a lindice de R
L
. En eet, si les classes
dequivalence de L sont connues, on peut construire lautomate minimal
de L en utilisant les classes de R
L
comme ensemble des etats.
Le meilleur algorithme connu sexecute en temps O(n log n) o` u n est le
nombre detats de lautomate A.
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 25/ 36
Pour eviter des probl`emes techniques nous supposons que dans un AFD
A = (E, , , e
0
, F) quelconque, chaque etat e a une transition pour
symbole de .
Si nest pas deni pour chaque couple (e, a) E , alors nous
pourrions introduire un nouvel etat mort E
mort
/ F avec
(e
mort
, a) = e
mort
pour chaque a et (e, a) nest pas deni
initialement.
La fonction generalisee de transition dun AFD A = (E, , , e
0
, F), notee

, est denie par



(m, e) = e

(m, e)

A
(, e

), o` u e, e

E et
m

.
Cest `a dire

(m, e) = e

si et seulement si partant de lAFD A dans


letat e et le faisant fonctionner avec le mot dentree m on termine dans
letat e

.
Letat e

est accessible depuis letat de depart e


0
.
On dit quun mot m

distingue letat e et letat e

de lAFD A si

(m, e) F

(m, e

) / F
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 26/ 36

Etape 1
Construire une partition initiale de lensemble des etats avec deux
groupes : les etats dacceptation F et les etats de non-acceptation E \ F.
Exemple
\
2
a

\
3
a

b
.

\
0
a

b
\
1
a

v
v
v
v
v
v
v
v
b

H
H
H
H
H
H
H
H
\
4
a

\
5
a

= {2, 5}, {0, 1, 3, 4}


AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 27/ 36

Etape 2
Appliquer la procedure ci-dessous an de construire une nouvelle partition

n
.
Pour chaque groupe G de faire :
Partitionner G en sous-groupes de mani`ere que deux etats e et f de
G soient dans le meme sous-groupe si et seulement si pour tout
symbole a , les etats e et f ont des transitions sur a vers des
etats du meme groupe de . Au pire un etat formera un groupe `a lui
seul.
remplacer G dans
n
par tous les sous-groupes ainsi formes.

Etape 3
Si
n
= , alors soit
f
= et continuer `a letape 4, sinon repeter letape
2 avec =
n
.
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 28/ 36
Exemple
Notre partition etait : = {2, 5}, {0, 1, 3, 4}.
Soit G
1
= {2, 5} et G
2
= {0, 1, 3, 4}.
symbole 2 5 0 1 3 4
a G
2
G
2
G
2
G
1
G
2
G
1
b G
2
G
2
G
2
G
2
G
2
G
2
Les transitions de tous les etats de G
1
vont vers les memes groupes,
donc G
1
nest pas divise en sous groupes.
Par contre dans G
2
il y a des dierences entre {0, 3} et {1, 4}. On
obtient donc une nouvelle partition :
n
= {2, 5}, {0, 3}, {1, 4}.
On recommence letape 2 sur cette partition.
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 29/ 36
Exemple
Notre nouvelle partition est :
n
= {2, 5}, {0, 3}, {1, 4}.
Soit G

1
= {2, 5}, G

2
= {0, 3} et G

3
= {1, 4}.
symbole 2 5 0 3 1 4
a G

2
G

2
G

2
G

2
G

1
G

1
b G

3
G

3
G

3
G

3
G

3
G

3
Les transitions de tous les etats de tous les groupes vont vers les
memes groupes, donc ils ne sont pas divises en sous groupes.
On peut passer `a letape 4 avec
f
= {2, 5}, {0, 3}, {1, 4}.
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 30/ 36

Etape 4
Choisir un etat dans chaque groupe de la partition
f
en tant que
representant de ce groupe. Les representants seront les etats de lAFD
reduit A

.
Soit e un etat representatif, et supposons que dans lautomate
original A il y ait une transition de e vers f sur a. Soit r le
representant du groupe de f (r peut etre egal `a f ). Alors A a une
transition de e vers r sur a.
Letat de depart de A

est le representant du groupe qui contient


letat de depart e
0
de A.
Les etats dacceptation de A

sont les representants des etats de F.


Notons que, pour tout groupe G de
f
, soit G est enti`erement
compose detats de F, soit G nen contient aucun.
AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 31/ 36
Exemple
La partition nale etait :
f
= {2, 5}, {0, 3}, {1, 4}.
Prenons 2, 0 et 1 comme representants.
2 est un etat nal.
0 est letat de depart.
On obtient lAFD minimal :
\
0
a

b
\
1
a

\
2 b

_ `
a

AFD AFN Operations Lemme de pompage ER vers AFN AFN vers AFD Minimisation dun AFD 32/ 36

Etape 5
Si A

a un etat mort, cest `a dire un etat e qui nest pas un etat


dacceptation et qui a des transitions vers lui meme sur tous les symboles
de , alors supprimer e de A

. Supprimer aussi tous les etats non


accessibles depuis letat de depart. Toutes les transitions vers e
depuisdautres etats deviennent indenis.
Validite de lalgorithme
La validite de lalgorithme nest pas evidente. La demonstration se fait
par recurrence sur le nombre detapes.
AFD AFN Operations Lemme de pompage 33/ 36
Lemme de pompage
Le lemme de pompage est un outil pour montrer quun langage nest pas
regulier. Un langage non regulier ne peut etre ni specie par une
expression reguli`ere, ni pas un AFN ou un AFD.
Lemme
Soit L

un langage regulier. Alors il existe une constante n N telle


que pour tout m L de longueur au moins n, il existe u, v, w

satisfaisant :
m = uvw
|uv| n
|v| 1
uv
i
w L pour chaque entier i 0
Utilisation
Utilise pour montrer quun langage nest pas regulier.
AFD AFN Operations Lemme de pompage 34/ 36
Demonstration
Soit L un langage regulier, A un AFD tel que L = L(A), et n le nombre
detats de A.
Prenons un mot m L tel que |m| n.
Il existe donc au moins un etat de A par lequel on passe plusieurs
fois lors de la reconnaissance de m.
Soit q le premier etat par lequel on passe pour la deuxi`eme fois.
Soit u le sous-mot tel que (u, e
0
)
A
(, q)
Soit v et w les deux sous-mots tels que (vw, q)
A
(w, q) avec
|v| 1 (possible car on passe plusieurs fois par q).
Comme q est le seul etat visite plus dune fois apr`es la
reconnaissance de uv, on en deduit que |uv| n.
On a (u, e
0
)
A
(, q) et (vw, q)
A
(w, q), donc par transitivite
on peut avoir (v
i
w, q)
A
(w, q) et (uv
i
w, q)
A
(w, q) i N,
donc uv
i
w L i N.
AFD AFN Operations Lemme de pompage 35/ 36
Lemme de pompage
On va montrer que le langage L = {0
k
1
k
|k N} nest pas regulier.
Supposons le langage regulier et aboutissons `a une contradiction. Pour
cela on va construire un mot en utilisant le Lemme et montrer quil nest
pas dans le langage.
En utilisant le fameux entier n du lemme, on utilise le mot 0
n
1
n
qui
appartient bien `a L.
Dapr`es la premi`ere propriete, uvw = 0
n
1
n
.
Dapr`es la seconde propriete |uv| n, donc uv = 0
m
, avec m n.
Dapr`es la troisi`eme propriete |v| 1. Donc v = 0
|v|
et |v| 1.
Dapr`es la quatri`eme propriete uv
2
w L.
Or uv
2
w = 0
p
0
n
avec p > q car le second v a ajoute des 0, mais pas
de 1. Et ce mot ne peut pas appartenir `a L par la denition de L.
L nest donc pas regulier.
AFD AFN Operations Lemme de pompage 36/ 36
Ensembles non reguliers
On ne peut pas decrire certains langages par des expressions reguli`eres.
On ne peut pas utiliser les expressions reguli`eres pour decrire des
constructions equilibrees ou imbriquees.
Par exemple, lensemble des chanes de parenth`eses equilibrees ne peut
pas etre decrit par des expressions reguli`eres. Dun autre cote, ce langage
peut etre specie par une grammaire hors contexte.
Des chanes repetees ne peuvent pas etre decrites par des expressions
reguli`eres. Lensemble {wcw | w (a | b)

} ne peut etre denote ni par


une expression reguli`ere, ni par une grammaire hors contexte.
On peut utiliser des expressions reguli`eres pour denoter seulement un
nombre xe ou inni de repetitions dune construction donnee. Deux
nombres arbitraires ne peuvent pas etre compares pour voir si ce sont les
memes.

Вам также может понравиться