Chapitre 4Automates finis
2     Automates finis              I G´n´ralit´s                 e e     e              I.1 Notion d’automate finiD´finition ...
Propri´t´s de fermeture des langages reconnaissables                                                              ee      ...
4     Automates finis              II Propri´t´s de fermeture des langages recon-                       ee              nai...
Propri´t´s de fermeture des langages reconnaissables                                                                  ee  ...
6     Automates finis                                                                       a                         i1   ...
Automates d´terministes                                                                                            e      ...
8     Automates finis                                                      A                                               ...
Automates d´terministes                                                                                                   ...
10       Automates finis                   Si u = x0 x1 . . . xn−1 = ε, alors :                 • A′ reconnaˆ u si et seule...
Exercices   11IV R´sum´    e   e      Nous avons mis en ´vidence dans ce chapitre 4 types d’automates finis :              ...
12   Automates finis                                                  b         3                                          ...
Exercices     138/ Soit A un automate d´terministe reconnaissant un langage L. D´crire un automate                        ...
Prochain SlideShare
Chargement dans…5
×

Chap04 automates finis

870 vues

Publié le

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
870
Sur SlideShare
0
Issues des intégrations
0
Intégrations
6
Actions
Partages
0
Téléchargements
14
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Chap04 automates finis

  1. 1. Chapitre 4Automates finis
  2. 2. 2 Automates finis I G´n´ralit´s e e e I.1 Notion d’automate finiD´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. 3. Propri´t´s de fermeture des langages reconnaissables ee 3 I.3 Calculs dans un automateD´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. 4 Automates finis II Propri´t´s de fermeture des langages recon- ee naissables II.1 R´union de langages reconnaissables eTh´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 finisTh´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 standardD´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. 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 eTh´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. 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) eTh´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. 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 eD´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 AFDCTh´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. 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 eTh´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. 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. 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 eTh´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. 11. Exercices 11IV 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 afois prouv´ par des th´or`mes d’´quivalence. Il est fondamental de constater que toutes e e e eles d´monstrations donn´es sont constructives, et permettent de fabriquer effectivement e eles automates dont on parle. On ne saurait trop insister sur le fait que, dans un coursd’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 ecommencer : • 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 elangages 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 eEn fait, Rec(A∗ ) est stable par bien d’autres op´rations importantes, mais on ne peut pas, eavec une heure de cours par semaine, passer cent heures sur les automates (n’est-ce pas ?).Exercices1/ 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. 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. 13. Exercices 138/ 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

×