2. 2 Automates finis
I G´n´ralit´s
e e e
I.1 Notion d’automate fini
D´finition 1
e [Automate fini] Un automate fini (non d´terministe) est un 5-uplet
e
A =< Q, A, E, I, T >
o`
u
• Q est un ensemble fini : l’ensemble des ´tats.
e
• A est un alphabet.
• I est une partie de Q : l’ensemble des ´tats initiaux.
e
• T est une partie de Q : l’ensemble des ´tats terminaux (ou finals).
e
• E ⊂ Q × A × Q est l’ensemble des transitions.
a
Lorsque (p, a, q) est une transition de l’automate A, on notera p−→q. On dira que a est
l’´tiquette de cette transition. L’´tat p est l’origine de la transition ; l’´tat q est l’extr´mit´
e e e e e
de cette mˆme transition.
e
I.2 Repr´sentation par un graphe ´tiquet´
e e e
On repr´sente un automate fini par un graphe. Les sommets du graphe sont les ´tats
e e
de l’automate (les ´l´ments de Q). Lorsque le triplet (q, x, q ′ ) appartient ` E, on trace entre
ee a
q et q ′ une arˆte ´tiquet´e par x. On distingue sur le graphe, d’une fa¸on ou d’une autre,
e e e c
les ´tats de d´part et les ´tats accepteurs. Nous adopterons la convention suivante : lorsque
e e e
q est un ´tat de d´part, on fait pointer une fl`che vers le sommet ´tiquet´ par q. Lorsque q
e e e e e
est un ´tat accepteur, on fait partir une fl`che de q vers l’ext´rieur du graphe.
e e e
On a pour l’automate de la figure 1 : A = {a, b}, Q = {1, 2}, I = {1}, T = {1, 2}.
a b
b
1 2
Fig. 1 – Un premier automate
Pour l’automate de la figure 2 , A = {a, b}, Q = {1, 2, 3, 4, 5}, I = {1, 4}, T = {3, 5}. Nous
appellerons A0 cet automate et nous l’utiliserons dans la discussion qui va suivre.
b
a a
1 2 3
a
a
4 5
b
Fig. 2 – Un deuxi`me automate
e
3. Propri´t´s de fermeture des langages reconnaissables
ee 3
I.3 Calculs dans un automate
D´finition 2
e [calcul dans un automate] Soit A = Q, A, E, I, T un automate fini. Soient p et q deux
ai
´tats de A. On appelle calcul dans A toute suite de transitions de la forme qi −→qi+1 ,
e
i = 0 . . . n − 1, l’extr´mit´ de chaque transition ´tant l’origine de la suivante. On note plus
e e e
simplement un tel calcul
a0 a1 a2 an−1
c := q0 −→q1 −→q2 −→ . . . −→qn
L’´tat q0 est l’origine du calcul c, et l’´tat qn est son extr´mit´.
e e e e
On convient ´galement que le calcul vide ε est un calcul d’origine q et d’extr´mit´ q, ceci
e e e
pour tout ´tat q de l’automate.
e
Dans l’automate de la figure 2 , c := ((1, b, 1), (1, a, 2), (2, a, 3)) est un calcul dont l’origine
est l’´tat 1 et l’extr´mit´ est l’´tat 3.
e e e e
D´finition 3
e ´
[Etiquette d’un calcul] Soit c un calcul dans l’automate A. Avec les notations de la
d´finition pr´c´dente, on appelle ´tiquette de c le mot de A∗
e e e e
a0 a1 ...an−1
On note alors
a0 ...an−1
c := q0 −→ qn
L’´tiquette de c est not´e |c| = a0 . . . an−1 .
e e
e
b a a
Dans l’automate de la figure 2 , l’´tiquette du calcul 1−→1−→2−→3 est le mot |c| = baa.
D´finition 4
e [Calcul r´ussi] On dit qu’un calcul dans l’automate A est r´ussi lorsque son origine est un
e e
´tat initial de A, et son extr´mit´ est un ´tat final.
e e e e
D´finition 5
e Langage reconnu. On dit qu’un mot u ∈ A∗ est reconnu (ou accept´) par l’automate A
e
lorsqu’il est l’´tiquette d’un calcul r´ussi dans A. On appelle langage reconnu par l’automate
e e
A l’ensemble des mots reconnus par cet automate :
u
L(A) = {u ∈ A∗ , ∃p ∈ I, ∃q ∈ T, p−→q}.
On dira qu’un langage est reconnaissable lorsqu’il existe un automate fini qui le reconnaˆ
ıt.
On notera Rec(A∗ ) l’ensemble des langages sur l’alphabet A reconnaissables.
L’automate de la figure 2 reconnaˆ les mots aa, baa, bbaa, . . ., a, aba, . . . et plus g´n´rale-
ıt e e
ment les mots du langage (a + b)∗ aa + a(ba)∗ .
On appelle identificateur tout mot sur l’alphabet ASCII commen¸ant par une lettre et
c
´
finissant par une suite de chiffres ou de lettres. Ecrire un automate reconnaissant les iden-
tificateurs.
´
Soit l’alphabet X = {0, 1}. Ecrire un automate reconnaissant le langage des mots binaires
qui sont l’´criture en base 2 d’un multiple de 3.
e
´
On se place sur l’alphabet X = {+, −, 0, 1, ..., 9}. Ecrire un automate reconnaissant les
entiers relatifs ´crits en base 10.
e
Montrer qu’un automate reconnaˆ le mot vide si et seulement si il poss`de un ´tat qui est
ıt e e
` la fois initial et final.
a
4. 4 Automates finis
II Propri´t´s de fermeture des langages recon-
ee
naissables
II.1 R´union de langages reconnaissables
e
Th´or`me 1
e e Rec(A∗ ) est stable par r´union finie.
e
« Il suffit bien sˆr de montrer que la r´union de deux langages reconnaissables est encore
u e
reconnaissable. Soient L1 un langage reconnu par l’automate A1 = Q1 , A, E1 , I1 , T1 et
L2 un langage reconnu par l’automate A2 = Q2 , A, E2 , I2 , T2 . Quitte ` renommer les
a
´tats, on peut supposer que Q1 ∩ Q2 = ∅. Soit l’automate
e
A = Q1 ∪ Q2 , A, E1 ∪ E2 , I1 ∪ I2 , T1 ∪ T2
Alors, A reconnaˆ le langage L1 ∪ L2 .
ıt
«
Nous venons de voir ici la premi`re propri´t´ de stabilit´ des langages reconnaissables
e ee e
par un automate fini. La suite du chapitre permettra de montrer que Rec(A∗ ) est en fait
stable par un tr`s grand nombre d’op´rations sur les langages.
e e
II.2 Langages finis
Th´or`me 2
e e Tout langage fini est reconnaissable.
« Soit u = a0 a1 . . . an−1 ∈ A∗ . L’automate de la figure 3 reconnaˆ le langage ` un seul mot
ıt a
L = {u}. Un langage n’ayant qu’un seul mot est donc reconnaissable. Toute union finie de
langages reconnaissables ´tant encore reconnaissable, un langage fini est donc reconnaissable.
e
«
q0 q1 ... qn
a0 a1 an−1
Fig. 3 – Langage ayant un seul mot
Traiter les cas oubli´s dans la d´monstration ci-dessus : le cas o` le mot u est vide, et le cas
e e u
o` le langage fini est le langage L = ∅.
u
Avant de poursuivre, il nous faut introduire une sous-famille de la famille des auto-
mates : celle des automates standard.
II.3 Automates standard
D´finition 6
e Un automate fini A = Q, A, E, I, T est dit standard lorsque :
• I est un singleton (unique ´tat initial).
e
• L’unique ´tat initial de A n’est l’extr´mit´ d’aucune transition de A.
e e e
Th´or`me 3
e e Si un langage est reconnaissable, il est reconnaisable par un automate standard.
« Soit L un langage, reconnu par l’automate A = Q, A, E, I, T .
Soit A′ = Q ∪ {⌈}, A, E ′ , {⌈}, T ′ o` d est un ´tat n’appartenant pas ` Q, et
u e a
• •T ′ = T si ε ∈ L et T ′ = T ∪ {d} si ε ∈ L.
• •E ′ = E ∪ {(d, x, q ′ ), ∃q ∈ I, (q, x, q ′ ) ∈ E}.
Alors, l’automate A′ reconnaˆ L.
ıt «
5. Propri´t´s de fermeture des langages reconnaissables
ee 5
En gros, on peut dire que le standardis´ d’un automate est obtenu en ¡¡ d´doublant ¿¿ les
e e
transitions issues de ses ´tats initiaux.
e
L’automate de la figure 4 reconnaˆ L = ((b∗ (a2 )∗ )∗ aba)∗ abb(a + b)∗ . Il est ´quivalent `
ıt e a
l’automate standard de la figure 5.
b a, b
a b b
1 2 3 4
a
a
Fig. 4 – Automate non standard
a a, b
b
b a b b
Ω 1 2 3 4
a
a
Fig. 5 – Automate standardis´
e
II.4 Concat´nation de langages reconnaissables
e
Th´or`me 4
e e Soient L1 et L2 deux langages reconnaissables. Alors, le langage L1 .L2 est reconnaissable.
« Soit Ai = Qi , A, Ei , Ii , Ti (i = 1, 2) un automate reconnaissant Li , o` A1 est un auto-
u
mate fini quelconque et A2 est un automate standard. On pose de plus = I2 = {j}. On
d´finit
e
• Q = (Q1 ∪ Q2 ) {d2 }.
• I = I1 .
• T = T2 si j ∈ T2 et T = T1 ∪ T2 {j} si j ∈ T2 .
• E = E1 ∪ E2 ∪ E3 o` E2 = {(q, x, q ′ ) ∈ E2 , q = j} et E3 = {(q, x, q ′ ), q ∈ T1 , (j, x, q ′ ) ∈
′
u ′
E2 }.
Alors, l’automate A = Q, A, E, I, T reconnaˆ L1 .L2 .
ıt «
On peut tr`s bien laisser l’´tat j lorsque l’on concat`ne les deux automates. Cela dit, aucun
e e e
calcul issu d’un ´tat de initial ne pourra y parvenir : cet ´tat est inaccessible.
e e
Nous nous contentons d’indiquer le proc´d´ de fabrication de l’automate A par deux
e e
sch´mas. La d´monstration rigoureuse est laiss´e en exercice.
e e e
Le cas o` j ∈ T2 est r´sum´ dans la figure 6 (avant concat´nation) et la figure 7 (apr`s
u e e e e
concat´nation). Lorsque j ∈ T2 , il faut conserver aux ´tats finals de A1 leur statut accepteur.
e e
i1 a
A1 j A2
b
i2
Fig. 6 – Automates ` “multiplier”
a
6. 6 Automates finis
a
i1
a
A1 A2
b
b
i2
Fig. 7 – Automate reconnaissant le langage produit
Soit L = a b . On construit les deux automates A1 et A2 reconnaissant respectivement
∗ ∗
L1 = a∗ et L2 = b∗ (figure 8). L’automate A2 est standardis´ sur la figure 9 (introduction
e
de l’´tat 3). L’automate A reconnaissant la concat´nation des deux langages est alors donn´
e e e
figure 10 (disparition de l’´tat 3).
e
a b
1 2
Fig. 8 – Automates reconnaissant a∗ et b∗
b
3 2
b
Fig. 9 – Automate standardis´
e
a b
3 2
b
Fig. 10 – Le produit a∗ b∗
II.5 Stabilit´ des langages reconnaissables par fermeture
e
de Kleene (´toile)
e
Th´or`me 5
e e Soit L un langage reconnaissable. Alors, L∗ est reconnaissable.
« Nous nous contentons d’indiquer le principe de construction, tr`s proche de ce qui a ´t´ vu
e ee
lors de la concat´nation. On se donne un automate standard A = Q, A, E, I = {d}, T
e
qui reconnaˆ le langage L. On fabrique ensuite l’automate A = Q {d}, A, E ′ , I, T ∪ I
ıt
o` E ′ = E ∪ {(q, x, q ′ ), q ∈ T, (d, x, q ′ ) ∈ E} (voir figure 11).
u «
a a
a
i A i A′
a b
b b
b
´
Fig. 11 – “Etoile” d’un automate
Prenons pour exemple le langage L = bab. Un automate reconnaissant L est donn´ par la
e
figure 12 (cet automate est d´j` standard). Un automate reconnaissant L∗ , fabriqu´ selon
ea e
la construction du th´or`me, est donn´ ` la figure 13.
e e ea
7. Automates d´terministes
e 7
b a b
1 2 3 4
Fig. 12 – Le langage bab
b a b
1 2 3 4
b
Fig. 13 – Le langage (bab)∗
III Automates d´terministes
e
III.1 Inconv´nients des automates non d´terministes
e e
Le principal inconv´nient d’un automate fini quelconque est son non d´terminisme :
e e
l’acceptation ou le refus d’un mot par l’automate ne peut pas ˆtre trait´e de fa¸on efficace.
e e c
En effet, il faut effectuer tous les calculs possibles des ´tats initiaux vers les ´tats finals,
e e
et regarder si l’un de cescalculs a pour ´tiquette le mot qui nous int´resse. D’un point de
e e
vue algorithmique, cette situation est inacceptable, surtout lorsque l’on sait qu’en pratique,
certains automates peuvent avoir des milliers, voire des millions d’´tats. On rem´die ` cette
e e a
situation en introduisant les automates d´terministes, pour lesquels il n’y a qu’une seule
e
fa¸on d’effectuer un calcul donn´.
c e
D´finition 7
e [Automate fini d´terministe]
e Soit A = Q, A, E, I, T un automate fini. On dit que A
est d´terministe lorsque :
e
• Il y a un unique ´tat initial.
e
• Pour tout ´tat q ∈ Q et toute lettre x ∈ A, il existe au plus un ´tat q ′ ∈ Q tel que
e e
x
q −→q ′ .
E peut donc ˆtre vu comme le graphe d’une fonction δ : Q × A → Q, que l’on appelle
e
la fonction de transition de l’automate.
Si, mieux que cela, δ est une application, alors l’automate est qualifi´ d’automate fini
e
d´terministe complet (AFDC).
e
´
III.2 Equivalence entre AFD et AFDC
Th´or`me 6
e e Tout AFD est ´quivalent a un AFDC.
e `
En clair, ´tant donn´ un automate d´terministe A, il existe un automate d´terministe
e e e e
complet A′ qui reconnaˆ le mˆme langage que A.
ıt e
« L’id´e est simple. On rajoute ` l’automate A un ´tat ω vers lequel on fait pointer toutes
e a e
les transitions manquantes. On rajoute ´galement les transitions (ω, x, ω) pour toutes les
e
lettres x de l’alphabet (figure 14). L’´tat ω est appel´ un ´tat-puits. Une fois que l’on y est
e e e
entr´, on ne peut plus en ressortir. Dans le cas pr´sent´ ici, l’´tat-puits n’est pas un ´tat
e e e e e
final (il peut exister dans certains automates des ´tats-puits finals).
e «
8. 8 Automates finis
A
ω
Fig. 14 – Automate complet
L’automate de la figure 15, construit sur l’alphabet {a, b}, est un AFDC. L’´tat 3 est un
e
´tat puits. L’automate reconnaˆ le langage L = a∗ b2 a∗ .
e ıt
a 3 a, b
a
b
1 2 b
b
4 a
Fig. 15 – Un exemple d’AFDC
Si, en revanche, l’´tat 3 ´tait un ´tat accepteur, alors l’automate reconnaˆ
e e e ıtrait le langage
L = (a∗ baA∗ ) ∪ (a∗ b2 a∗ bA∗ )
III.3 Prolongement de la fonction de transition
La fonction de transition δ est a priori d´finie sur une Q × A. On peut la prolonger `
e a
Q × A∗ de la fa¸on suivante. On pose
c
• •∀q ∈ Q, δ(q, ε) = q.
• •∀q ∈ Q, ∀u ∈ A∗ , ∀x ∈ A, δ(q, xu) = δ(δ(q, x), u).
Il est alors facile de v´rifier que
e
∀q ∈ Q, ∀u, v ∈ A∗ , δ(q, uv) = δ(δ(q, u), v)
Prouver la propri´t´ ci-dessus. On pourra faire une r´currence sur la longueur des mots.
ee e
Th´or`me 7
e e Soit A un automate d´terministe d’´tat de d´part d, et de fonction de transition δ. L’automa-
e e e
te A reconnaˆ le mot u si et seulement si δ(d, u) est un ´tat final de A.
ıt e
« Il suffit de faire une r´currence sur la longueur de u.
e «
III.4 D´terminisation d’un automate fini
e
Nous allons montrer que tout automate est ´quivalent ` un automate d´terministe, et
e a e
que cette ´quivalence est effective : il existe un algorithme permettant de calculer l’automate
e
“d´terminis´” ` partir de l’automate donn´ au d´part.
e e a e e
Th´or`me 8
e e Soit L un langage. Alors, L est reconnaissable si et seulement si il est reconnaissable par
un automate d´terministe.
e
9. Automates d´terministes
e 9
« Id´e de la d´monstration : Soit L le langage reconnu par l’automate (non d´terministe a
e e e
priori) A = Q, A, E, I, T . On pose
• •Q′ = P(Q) (l’ensemble des parties de Q).
• •I ′ = {I}.
• •T ′ = {P ∈ Q′ , P ∩ T = ∅}.
• •δ ′ : Q′ × A → Q′ ; (P, x) → {q ′ ∈ Q, ∃q ∈ P, (q, x, q ′ ) ∈ E}. On note E ′ le graphe de
l’application δ ′ .
Nous allons, apr`s examen d’un exemple, que le langage L est reconnu par l’automate
e
d´terministe A′ = Q′ A, E ′ , I ′ , T ′ .
e «
On prend A = {a, b}. On consid`re l’automate A de la figure 16. Cet automate reconnaˆ
e ıt
le langage L = A∗ abaA∗ .
a, b a, b
a b a
1 2 3 4
Fig. 16 – Mots contenant le facteur aba
L’automate A′ est donn´ ` la figure 17.
ea
a
a
b
a b a b
1 1, 2 1, 3 1, 2, 4 1, 3, 4
a
b
b a b
1, 4
Fig. 17 – Automate d´terminis´
e e
On constate qu’il y a trois ´tats accepteurs, et que ceux-ci forment un puits. On peut
e
donc simplifier en l’automate ´quivalent de la figure 18.
e
a, b
a, b
a b a
I II III IV
b
Fig. 18 – Automate simplifi´
e
´
Ecrire un automate reconnaissant L = (a + b)∗ (babb)(a + b)∗ . Le d´terminiser.
e
« D´monstration du th´or`me : Soit u ∈ A∗ . On cherche une condition portant sur A′ pour
e e e
que u soit reconnu par A.
Si u = ε, alors A reconnaˆ u si et seulement si I ∩ T = ∅ ou encore si et seulement si
ıt
I ∈ T ′ , c’est ` dire {I} ∩ T ′ = ∅. Mais cela signifie que A′ reconnaˆ u.
a ıt
10. 10 Automates finis
Si u = x0 x1 . . . xn−1 = ε, alors :
• A′ reconnaˆ u si et seulement si δ ′ (I, u) ∈ T ′ , c’est ` dire s’il existe P0 , P1 , ..., Pn ∈ Q′
ıt a
v´rifiant P0 = I, Pn ∈ T ′ , et δ ′ (P0 , x0 ) = P1 , δ ′ (P1 , x1 ) = P2 , ..., δ ′ (Pn−1 , xn−1 ) = Pn .
e
• A reconnaˆ u si et seulement si il existe q0 , ..., qn ∈ Q, il existe q0 ∈ I, qn ∈ T tels que
ıt
∀i ∈ {0, ..., n − 1}, (qi , xi , qi+1 ) ∈ E.
Il faut voir que ces deux conditions sont ´quivalentes.
e
• •1 ⇒ 2 : On suppose que A reconnaˆ le mot u. Avec les notations ci-dessus, on pose
ıt
P0 = I. On a alors q0 ∈ P0 . Donc, q1 ∈ P1 = δ ′ (P0 , x0 ). On obtient par r´currence que
e
pour k = 1..n − 1, qk ∈ Pk = δ ′ (Pk−1 , xk−1 ). De l`, qn ∈ Pn , donc Pn rencontre T et
a
finalement Pn ∈ T ′ . Ainsi, A′ reconnaˆ le mot u.
ıt
• •2 ⇒ 1 : On suppose que A′ reconnaˆ le mot u. On a Pn ∈ T ′ , donc Pn ∩ T = ∅.
ıt
Soit qn ∈ Pn ∩ T . On a δ ′ (Pn−1 , xn−1 ) = Pn , donc il existe qn−1 ∈ Pn−1 tel que
(qn−1 , xn−1 , qn ) ∈ δ. On trouve ainsi par r´currence q0 ∈ P0 , q1 ∈ P1 , ... qn ∈ Pn ∩ T
e
tels que pour tout i, (qi , xi , qi+1 ) ∈ E. On en d´duit que A reconnaˆ u.
e ıt
Finalement, les automates A et A′ reconnaissent les mˆmes mots, et sont donc ´quiva-
e e
lents. «
Le “d´terminis´” d’un automate fini poss´dant n ´tats est donc un automate fini d´terministe
e e e e e
et complet poss´dant 2n ´tats. On a l` une explosion combinatoire qui peut conduire ` des
e e a a
situations tr`s d´sagr´ables (par exemple, un automate ` 100 ´tats se d´terminisant en un
e e e a e e
auomate ` 1267650600228229401496703205376 ´tats). Dans la pratique, on se contente des
a e
´tats qui sont accessibles ` partir de l’´tat initial : on fabrique le d´terminis´ de proche en
e a e e e
proche ` partir de l’´tat I, en rajoutant des transitions et de nouveaux ´tats jusqu’` ce que
a e e a
l’on ne retombe que sur des ´tats d´j` vus. Cette m´thode est appel´e d´terminisation par
e ea e e e
la m´thode des sous-ensembles.
e
Il faut toutefois savoir que, bien que dans beaucoup d’exercices le d´terminis´ soit
e e
“petit”, il existe des exemples d’automates ` n ´tats dont le d´terminis´ par la m´thode
a e e e e
des sous-ensembles poss`de 2n ´tats. Il existe mˆme des automates ` n ´tats tels que tout
e e e a e
automate d´terministe ´quivalent poss`de au moins 2n ´tats.
e e e e
III.5 Stabilit´ des langages reconnaissables par passage au
e
compl´mentaire
e
Th´or`me 9
e e Soit L un langage reconnu par un automate d´terministe. Alors, le langage A∗ L est
e
reconnaissable.
« On peut supposer que le langage L est reconnu par un AFDC A = Q, A, E, I = {⌈}, T .
On consid`re A′ = Q, A, E, I, Q T , c’est ` dire que les ´tats finals de A deviennent
e a e
non finals dans A′ et vice versa. Alors, l’automate A′ reconnaˆ le langage A∗ L. En effet,
ıt
soit u ∈ A∗ . Alors A ne reconnaˆ pas u si et seulement si δ(d, u) ∈ T , c’est ` dire si et
ıt a
seulement si A′ reconnaˆ u.
ıt
«
III.6 Stabilit´ des langages reconnaissables par intersec-
e
tion et diff´rence
e
Si L1 et L2 sont deux langages reconnaissables, alors L1 ∩L2 = A∗ ((A∗ L1 )∪(A∗ L2 )).
Ainsi, Rec(A∗ ) est aussi stable par intersection. Enfin, L1 L2 = L1 ∩ (A∗ L2 )) et Rec(A∗ )
est donc stable par diff´rence.
e
11. Exercices 11
IV R´sum´
e e
Nous avons mis en ´vidence dans ce chapitre 4 types d’automates finis :
e
• Les automates non d´terministes qui sont en fait le type le plus g´n´ral d’automate.
e e e
• Les automates standard.
• Les automates d´terministes.
e
• Les automates d´terministes complets.
e
Tous ces types d’automates reconnaissent les mˆmes langages, ce qui a ´t´ ` chaque
e ee a
fois prouv´ par des th´or`mes d’´quivalence. Il est fondamental de constater que toutes
e e e e
les d´monstrations donn´es sont constructives, et permettent de fabriquer effectivement
e e
les automates dont on parle. On ne saurait trop insister sur le fait que, dans un cours
d’informatique, une d´monstration se doit d’ˆtre constructive !
e e
Enfin, l’ensemble Rec(A∗ ) s’av`re avoir de remarquables propri´t´s de stabilit´. Pour
e ee e
commencer :
• Rec(A∗ ) contient les langages finis.
• Rec(A∗ ) est stable par r´union, produit et ´toile.
e e
Le plus petit ensemble de langages v´rifiant ces propri´t´s ´tant l’ensemble Rat(A∗ ) des
e ee e
langages rationnels sur l’alphabet A, on en d´duit :
e
Rat(A∗ ) ⊂ Rec(A∗ )
Nous verrons au chapitre suivant que l’inclusion r´ciproque est ´galement vraie.
e e
Enfin, Rec(A∗ ) est ´galement stable par intersection, compl´mentation et diff´rence.
e e e
En fait, Rec(A∗ ) est stable par bien d’autres op´rations importantes, mais on ne peut pas,
e
avec une heure de cours par semaine, passer cent heures sur les automates (n’est-ce pas ?).
Exercices
1/ Construire des automates reconnaissant les langages suivants sur l’alphabet {a, b} :
(a) Les mots poss´dant au moins trois a.
e
(b) Les mots comportant un nombre pair de a.
(c) Les mots f tels que |f |a ≡ |f |b (mod 2) (o` |f |x est le nombre d’occurences de la
u
lettre x dans le mot f ).
2/ D´terminer le langage reconnu par les automates ci-dessous (donner la r´ponse en lan-
e e
gage courant, en s’inspirant des questions de l’exercice pr´c´dent). On ne demande pas
e e
de preuve.
a
a b
1 2 3
a b
a b a
1 2 3 4
b
a
a a
a
1 2 3 4
b b
b
12. 12 Automates finis
b 3
1 a a
a b
b 2
3/ Construire des automates standard reconnaissant les langages suivants sur l’alphabet
{a, b} :
(a) (a + b)∗
(b) (a∗ b)∗
(c) (a∗ b + bb∗ a)∗
´
4/ Evaluer le nombre d’automates sur l’alphabet {a, b} poss´dant 3 ´tats.
e e
5/
´
(a) Ecrire un automate ` 4 ´tats et 5 transitions reconnaissants les mots sur l’alphabet
a e
{0, 1} qui sont des repr´sentations des multiples de 8 en base 2.
e
(b) D´terminiser cet automate.
e
6/ Soient A = X, Q, D, A, δ et A′ = X, Q′ , D′ , A′ , δ ′ deux automates finis. On
appelle produit de A et A′ l’automate fini A × A′ = X, Q × Q′ , D × D′ , A × A′ , ∆
o` ((p, p′ ), a, (q, q ′ )) ∈ ∆ si et seulement si (p, a, q) ∈ δ et (p′ , a, q ′ ) ∈ δ ′ .
u
(a) Fabriquer deux automates A et A′ ` 3 ´tats reconnaissant respectivement les lan-
a e
gages L = (a + b)∗ ab(a + b)∗ et L = (a + b)∗ ba(a + b)∗ . Dessiner l’automate
A × A′ .
(b) Montrer que, de fa¸on g´n´rale, le langage reconnu par l’automate produit A × A′
c e e
est l’intersection des langages reconnus par A et A′ .
(c) Comment modifier la d´finition de l’automate produit (ce ne sera donc plus l’auto-
e
mate produit !) pour que celui-ci reconnaisse la r´union des langages reconnus par
e
A et A′
7/ D´terminiser les 4 automates ci-dessous :
e
a
a a a
1 2 3 4
b b
b
a
a b
1 2 3 4
a a
b b b
a a
a+b a
1 2 1 2
a b aa
b a a b
3 3
a
13. Exercices 13
8/ Soit A un automate d´terministe reconnaissant un langage L. D´crire un automate
e e
reconnaissant le langage des mots de L “lus de droite ` gauche”. Appliquer ` l’automate
a a
vu en cours reconnaissant les multiples de 3 en base 2. Que constate-t-on ?
9/ On prend ici un alphabet X = {a} avec une seule lettre.
(a) D´terminer tous les automates d´terministes sur l’alphabet X.
e e
(b) En d´duire la propri´t´ suivante : Un langage L sur {a} est rationnel si et seulement
e ee
si il peut s’´crire L = F ∪ G o` F est un langage fini et G est soit vide, soit d´fini
e u e
par deux entiers r et p ≥ 1 et k entiers 0 ≤ i1 i2 . . . ik ≤ p − 1 tels que
G = {an , n ≥ r et ∃j ∈ {1, . . . , k}, n ≡ ij (mod p)}
10/ On consid`re l’automate A = X, Q, D, A, δ o` X = {a, b},Q = {p, q},D = A =
e u
{p},δ = {(p, a, p), (p, b, q), (q, a, p)}.
(a) Dessiner l’automate A. Quel est le langage reconnu par A ?
(b) Pour tout entier n, on note f (n) le nombre de mots de longueur n reconnus par
A. Exprimer f (n + 2) en fonction de f (n + 1) et f (n). Calculer f (0) et f (1) et en
d´duire f (n) pour tout entier n.
e