SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
Chapitre 4
Automates finis
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
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     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                                                                 «
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     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
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     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
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       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
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   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
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

Contenu connexe

Tendances

Mathématiques - Primitives particulières
Mathématiques - Primitives particulièresMathématiques - Primitives particulières
Mathématiques - Primitives particulièresLoïc Dilly
 
Sommation séries entières
Sommation séries entièresSommation séries entières
Sommation séries entièresLoïc Dilly
 
Cours8 Introduction à la représentation d'état
Cours8 Introduction à la représentation d'étatCours8 Introduction à la représentation d'état
Cours8 Introduction à la représentation d'étatsarah Benmerzouk
 
Mathématiques - Formule d'inversion de Pascal
Mathématiques - Formule d'inversion de PascalMathématiques - Formule d'inversion de Pascal
Mathématiques - Formule d'inversion de PascalLoïc Dilly
 
Mathématiques - Formule du crible
Mathématiques - Formule du cribleMathématiques - Formule du crible
Mathématiques - Formule du cribleLoïc Dilly
 
Epreuve de mathématiques informatique (modélisation) Agro/Véto BCPST 2017
Epreuve de mathématiques informatique (modélisation) Agro/Véto BCPST 2017Epreuve de mathématiques informatique (modélisation) Agro/Véto BCPST 2017
Epreuve de mathématiques informatique (modélisation) Agro/Véto BCPST 2017Ahmed Ammar Rebai PhD
 
Sujet et Correction épreuve de mathématiques ESSEC ECE 2012
Sujet et Correction épreuve de mathématiques ESSEC ECE 2012Sujet et Correction épreuve de mathématiques ESSEC ECE 2012
Sujet et Correction épreuve de mathématiques ESSEC ECE 2012Ahmed Ammar Rebai PhD
 
Corrige1 si-1-centrale-psi-2005
Corrige1 si-1-centrale-psi-2005Corrige1 si-1-centrale-psi-2005
Corrige1 si-1-centrale-psi-2005Achraf Ourti
 
Mathématiques - Loi binomiale conditionnée
Mathématiques - Loi binomiale conditionnéeMathématiques - Loi binomiale conditionnée
Mathématiques - Loi binomiale conditionnéeLoïc Dilly
 

Tendances (11)

Complexe cour
Complexe courComplexe cour
Complexe cour
 
Mathématiques - Primitives particulières
Mathématiques - Primitives particulièresMathématiques - Primitives particulières
Mathématiques - Primitives particulières
 
Sommation séries entières
Sommation séries entièresSommation séries entières
Sommation séries entières
 
Cours8 Introduction à la représentation d'état
Cours8 Introduction à la représentation d'étatCours8 Introduction à la représentation d'état
Cours8 Introduction à la représentation d'état
 
Mathématiques - Formule d'inversion de Pascal
Mathématiques - Formule d'inversion de PascalMathématiques - Formule d'inversion de Pascal
Mathématiques - Formule d'inversion de Pascal
 
Mathématiques - Formule du crible
Mathématiques - Formule du cribleMathématiques - Formule du crible
Mathématiques - Formule du crible
 
Logique
LogiqueLogique
Logique
 
Epreuve de mathématiques informatique (modélisation) Agro/Véto BCPST 2017
Epreuve de mathématiques informatique (modélisation) Agro/Véto BCPST 2017Epreuve de mathématiques informatique (modélisation) Agro/Véto BCPST 2017
Epreuve de mathématiques informatique (modélisation) Agro/Véto BCPST 2017
 
Sujet et Correction épreuve de mathématiques ESSEC ECE 2012
Sujet et Correction épreuve de mathématiques ESSEC ECE 2012Sujet et Correction épreuve de mathématiques ESSEC ECE 2012
Sujet et Correction épreuve de mathématiques ESSEC ECE 2012
 
Corrige1 si-1-centrale-psi-2005
Corrige1 si-1-centrale-psi-2005Corrige1 si-1-centrale-psi-2005
Corrige1 si-1-centrale-psi-2005
 
Mathématiques - Loi binomiale conditionnée
Mathématiques - Loi binomiale conditionnéeMathématiques - Loi binomiale conditionnée
Mathématiques - Loi binomiale conditionnée
 

Chap04 automates finis

  • 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