• Aucun résultat trouvé

1 Pourquoi ´ etudier les automates

Ce chapitre est une tr`es succincte introduction `a la th´eorie des automates que vous aurez l’occasion de voir de fa¸con d´etaill´ee si vous choisissez un cursus d’informatique. Ce chapitre est, par nature, un peu plus “th´eorique” et un peu moins algorithmique que les pr´ec´edents.

Les automates sont des objets math´ematiques, tr`es utilis´es en informatique, qui permettent de mod´eliser un grand nombre de syst`emes (informatiques). L’´etude des automates a commenc´e vers la fin des ann´ees cinquante. Elle se base sur de nombreuses techniques (topologie, th´eorie des graphes, logique, alg`ebre, etc.). De fa¸con tr`es informelle, un automate est un ensemble “d’´etats du syst`eme”, reli´es entre eux par des “transitions” qui sont marqu´ees par des symboles. ´Etant donn´e un “mot” fourni en entr´ee, l’automate lit les symboles du mot un par un et va d’´etat en ´etat selon les transitions. Le mot lu est soit accept´e par l’automate soit rejet´e.

Avant de donner une d´efinition plus formelle des concepts d´ecrits ci-dessus, citons quelques exemples classiques d’utilisation d’automates :

ˆ V´erification d’un circuit ´electronique

ˆ Recherche d’occurrence dans un texte (moteur de recherches sur le web, etc.) ˆ V´erification de protocoles de communication

ˆ Compression de donn´ees ˆ Compilation

ˆ Biologie (g´enomique)

En dehors de ces utilisations “pratiques” des automates, notons qu’ils sont aussi utilis´es pour mod´eliser les ordinateurs et pour comprendre ce qu’un ordinateur peut faire (d´ecidabilit´e) et ce qu’il sait faire efficacement (complexit´e). C’est donc une notion fondamentale de l’informatique.

2

Rappel : alphabets, mots, langages et probl`emes

Nous reprenons ici les notations du chapitre VI. L’alphabet Σ est un ensemble de caract`eres (ou symboles). un mot est une suite finie de caract`eres. L’ensemble des mots sur Σ est not´e Σ∗. Un langage est un sous-ensemble de Σ∗, c’est-`a-dire un ensemble particulier de mots. Parmi les mots de Σ∗ on distingue le mot vide not´e ǫ. Le mot vide est l’unique mot de longueur z´ero.

3

Automates finis d´eterministes

Un automate fini d´eterministe est un quintupl´e (Q, Σ, δ, q0, F ) constitu´e des ´el´ements suivants ˆ un alphabet fini (Σ)

ˆ un ensemble fini d’´etats (Q)

ˆ une fonction de transition (δ : Q∗ Σ → Q) ˆ un ´etat de d´epart (q0 ∈ Q)

ˆ un ensemble d’´etats finaux (ou acceptant) F ⊆ Q

3.1 Fonctionnement d’un automate fini d´eterministe

L’automate prend en entr´ee un mot et l’accepte ou la rejette. On dit aussi qu’il le reconnaˆıt ou ne le reconnaˆıt pas. Le langage associ´e `a un automate est constitu´e de l’ensemble des mots qu’il reconnaˆıt. Voici comment l’automate proc`ede pour d´ecider si un mot appartient `a son langage.

ˆ Le processus commence `a l’´etat de d´epart q0

ˆ Les symboles du mot sont lus les uns apr`es les les autres. ˆ

`

A la lecture de chaque symbole, on emploie la fonction de transition δ pour se d´eplacer vers le prochain ´etat (en utilisant l’´etat actuel et le caract`ere qui vient d’ˆetre lu).

ˆ le mot est reconnu si et seulement si le dernier ´etat (i.e., l’´etat correspondant `a la lecture

du dernier caract`ere du mot) est un ´etat de F .

De fa¸con plus formelle, pour d´efinir exactement le langage reconnu par un automate, nous introduisons la fonction de transition ´etendue aux mots, ˆδ. Elle se d´efinit r´ecursivement comme suit.

ˆ A partir d’un ´etat q en lisant le mot vide ǫ on reste dans l’´etat q, i.e., ∀q ∈ Q, ˆδ(q, ǫ) = q ˆ

´

Etant donn´e un mot c se terminant par a∈ Σ (i.e., c = ca avec c∈ Σ ∪ {ǫ}), et un ´etat q de Q, ˆδ(q, c) = ˆδ(q, c′a) = δ(ˆδ(q, c′), a)

Nous pouvons maintenant d´efinir le langage L(A) accept´e par un automate fini d´eterministe A = (Q, Σ, δ, q0, F ).

L(A) ={c|ˆδ(q0, c)∈ F }

3.2 Des repr´esentation “compactes” des automates

On peut associer `a un automate une table de transition qui d´ecrit de mani`ere extensive la fonction de transition δ :

ˆ Une colonne correspond `a un caract`ere de l’alphabet.

ˆ Une ligne correspond `a un ´etat de l’automate (l’´etat initial est pr´ec´ed´e d’une fl`eche “→” ;

l’´etat final d’une ´etoile “∗”)

La valeur δ(q, a) pour q ∈ Q, a ∈ Σ correspond `a l’´etat indiqu´e `a l’intersection de la ligne q et de la colonne a. Notons qu’`a partir de cette table il est ais´e de retrouver l’ensemble des ´etats ainsi que l’alphabet et donc d’identifier exactement l’automate.

Exemple 1 Consid´erons la table de transition ci-dessous. a b → 1 1 2 ∗ 2 1 2 Il correspond `a l’automate (Q, Σ, δ, q0, F ) avec

ˆ Q ={1, 2} ˆ Σ ={a, b}

ˆ δ(1, a) = 1, δ(1, b) = 2, δ(2, a) = 1, δ(2, b) = 2 ˆ q0 = 1

ˆ F ={2}

Il est facile de voir que le langage de cet automate est constitu´e exactement des mots compos´es de a et de b qui se terminent par un b.

Pour repr´esenter de fa¸con tr`es intuitive un automate fini d´eterministe (Q, Σ, δ, q0, F ), on peut utiliser un graphe de transition constitu´e des ´el´ements suivants :

ˆ Un ensemble de sommets (chaque sommet repr´esente un ´el´ement de Q).

ˆ Un ensemble d’arcs entre les sommets valu´es par un symbole de σ (un arc entre les ´etats

q et q′ valu´e par le symbole s signifie que δ(q, s) = q′).

ˆ L’´etat initial q0 est marqu´e par une fl`eche entrante. ˆ Les ´etats finaux F sont entour´es d’une double ligne.

L’automate de l’exemple 1 est ainsi repr´esent´e sur la figure 1.

1

a 2 b

b

a

Fig. 1 – Un automate fini d´eterministe

Pour simplifier encore cette repr´esentation, un arc entre deux sommets q, q′ peut ˆetre valu´e par plusieurs symboles s1, ..., sns´epar´es par des virgules. Cette derni`ere convention signifie sim- plement que ∀i ≤ n, δ(q, si) = q′ et elle permet d’´eviter une multiplication d’arcs sur le graphe. La figure 2 illustre une telle simplification.

1 a 2 a b b 1 a 2 a, b b

Fig. 2 – Deux repr´esentations ´equivalentes du mˆeme automate fini

Exercice 1 Quel est le langage reconnu par l’automate de la figure 2 ? Solution. Tous les mots qui contiennent un “b”.

Exercice 2 ´Ecrire la table de transition de l’automate suivant. Quel est le langage reconnu ?

A 1 B 0 C 0, 1 0 1

Solution. La table de transition de l’automate est 0 1 → A B A

B B C

∗ C C C Cet automate reconnaˆıt les mots qui contiennent “01”.

δ 0 1 → ∗ q0 q2 q1 q1 q3 q0 q2 q0 q3 q3 q1 q2 Dessiner l’automate et montrer qu’il accepte “110101”.

Solution. q 0 q1 q2 q3 1 1 0 0 1 1 0 0

Exercice 4 Construire un automate fini d´eterministe qui reconnaˆıt le langage L ={x ∈ {0, 1}∗|n1(x)≡ 0 mod 4}

o`u n1(x) est le nombre d’occurrence du symbole 1 dans le mot x. Solution. A B C D 0 0 0 0 1 1 1 1

Exercice 5 Construire les automates finis d´eterministes qui reconnaissent les langages suivants L1={m ∈ (a + b)∗|chaque a de m est imm´ediatement pr´ec´ed´e et imm´ediatement suivi d’un b} L2={m ∈ (a + b)∗|m contienne `a la fois ab et ba}

L3={m ∈ (a + b)∗|m contienne exactement une occurrence de aaa}

4

Automates finis non-d´eterministes

Un automate fini non-d´eterministe est un automate tel que dans un ´etat donn´e, il peut y avoir plusieurs transitions avec le mˆeme symbole. le fonctionnement d’un tel automate n’est donc pas totalement (( d´etermin´e )), car on ne sait pas quel ´etat l’automate va choisir.

Les automates non-d´eterministes permettent de mod´eliser facilement des probl`emes com- plexes. Ils peuvent ˆetre convertis en des automates finis d´eterministe. Ces derniers peuvent ˆetre exponentiellement plus grand que les automates non d´eterministe dont ils sont issus.

Un automate fini non-d´eterministe est un quintupl´e : (Q, Σ, δ, q0, F ) ˆ un alphabet fini (Σ)

ˆ une fonction de transition δ qui associe `a tout ´etat q∈ Q et tout symbole s ∈ Σ un sous

ensemble de Q not´e δ(q, s).

ˆ un ´etat de d´epart (q0)

ˆ un ensemble d’´etats finaux (ou acceptant) F

C’est la fonction de transition δ qui diff`ere ici de celle utilis´ee par les automates finis d´eterministes. Remarquons que tout automate fini d´eterministe est aussi un automate fini non-d´eterministe.

Les repr´esentations compactes des automates finis d´eterministes s’´etendent naturellement aux automates finis non-d´eterministes. Une cellule de la table de transition contient un sous- ensemble d’´etats (´eventuellement vide).

4.1 Fonctionnement d’un automate fini non-d´eterministe

Comme pour un automate fini d´eterministe, l’automate prend en entr´ee un mot et l’accepte ou le rejette. Le langage associ´e est constitu´e de l’ensemble des mots qu’il reconnaˆıt.

Exemple 2 Voici automate qui reconnaˆıt les mots d´efinis sur l’alphabet {a, b, c} qui com- mencent par a et qui finissent par c.

q0 q1

a, b, c

q2

a c

La table associ´ee `a cet automate est alors :

a b c

→ q0 {q1} ∅ ∅ q1 {q1} {q1} {q1, q2}

∗ q2 ∅ ∅ ∅

Comme pour les automates d´eterministes, nous nous introduisons la fonction de transition ´etendue aux mots, ˆδ. Elle se d´efinit r´ecursivement comme suit.

ˆ A partir d’un ´etat q en lisant le mot vide ǫ (le mot vide ne contient aucun symbole et est

toujours not´e ǫ), on reste dans l’´etat q, i.e.,∀q ∈ Q, ˆδ(q, ǫ) = {q}

ˆ

´

Etant donn´e un mot c se terminant par a∈ Σ (i.e., c = c′a avec c∈ Σ ∪ {ǫ}), et un ´etat q de Q,

ˆ

δ(q, c) = ˆδ(q, c′a) = [ p∈ˆδ(q,c′)

δ(p, a)

Nous pouvons maintenant d´efinir le langage L(A) accept´e par un automate fini d´eterministe A = (Q, Σ, δ, q0, F ).

L(A) ={c|ˆδ(q0, c)∩ F 6= ∅}

Exercice 6 Construire l’automate fini non-d´eterministe associ´e `a la table ci-dessous.

a b → 0 {0, 1, 3} {2} 1 ∅ {3} 2 {3} ∅ ∗ 3 ∅ {1} Solution.

0 1 2 3 a a a b b a b

Exercice 7 Construire un automate fini non-d´eterministe qui reconnaˆıt les mots qui contiennent “church” ou “chomsky”. Solution. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Σ Σ Σ c h o m s k y c h u r c h

Exercice 8 Construire un automate finis non-d´eterministe qui reconnaˆıt les mots de l’alphabet {a, b} qui terminent par bab.

Solution.

0 1 2 3

a

b

b a b

Exercice 9 Construire un automate fini non-d´eterministe et un automate fini d´eterministe qui reconnaˆıt les mots sur l’alphabet{a, b, c} d´ecrits par l’expression r´eguli`ere (a+b+c)∗b(a + b + c). Exercice 10 Construire un automate fini non-d´eterministe qui reconnaˆıt les nombres dont le dernier chiffre n’apparaˆıt qu’une fois.

Exercice 11 Mod´elisation d’un jeu (d’apr`es la page de Jean-Eric Pin). Le joueur a les yeux band´es. Face `a lui, un plateau sur lequel sont dispos´es en carr´e quatre jetons, blancs d’un cˆot´e et noirs de l’autre. Le but du jeu est d’avoir les quatre jetons du cˆot´e blanc. Pour cela, le joueur peut retourner autant de jetons qu’il le souhaite, mais sans les d´eplacer. A chaque tour, le maˆıtre de jeu annonce si la configuration obtenue est gagnante ou pas, puis effectue une rotation du

plateau de z´ero, un, deux ou trois quarts de tours. La configuration de d´epart est inconnue du joueur, mais le maˆıtre de jeu annonce avant le d´ebut du jeu qu’elle n’est pas gagnante. Chaque annonce prend une seconde, et il faut 3 secondes au joueur pour retourner les jetons. Pouvez-vous aider le joueur `a gagner en moins d’une minute ?

4.2 D´eterminisation d’un automate fini non-d´eterministe

Un automate fini d´eterministe est aussi non-d´eterministe. Donc tout langage reconnu par un automate fini d´eterministe est reconnu par un automate fini non-d´eterministe. Plus surprenant, la r´eciproque est aussi vraie (Th´eor`eme de Rabin-Scott).

Consid´erons un automate fini non-d´eterministe An = (Qn, Σ, δn, q0, Fn) et construisons un automate fini d´eterministe Ad= (Qd, Σ, δd,{q0}, Fd) qui reconnaˆıt exactement le mˆeme langage.

ˆ Les alphabets de An et de Ad sont identiques.

ˆ Les ´etats de d´epart sont respectivement q0 et le singleton{q0}. ˆ Qdest constitu´e de tous les sous-ensembles de Qn.

ˆ Fd est l’ensemble des sous-ensembles de Qn qui contiennent au moins un ´el´ement de Fn. ˆ Etant donn´e un sous ensemble S de Q´ n et un symbole a ∈ Σ, on d´efinit la fonction de

transition δd(S, a) de la mani`ere suivante δd(S, a) =

[

q∈S

δn(q, a).

Nous illustrons le th´eor`eme de Rabin-Scott sur quelques exemples.

Exemple 3 reprenons l’exemple de l’exercice 8. Il s’agissait de construire un automate fini non-d´eterministe reconnaissant les mots de l’alphabet{a, b} qui terminent par bab. L’automate suivant r´epond `a la question.

0 1 2 3

a

b

b a b

Essayons maintenant de le d´eterminiser en construisant un nouvel ´etat `a partir de chaque sous ensemble d’´etat possible.

{0} {0, 1} {1, 3} {0, 1, 3} a b a b a b a b {1} {2} {3} {0, 2} {0, 3} {1, 2} {2, 3} {0, 1, 2} {1, 2, 3} {0, 2, 3}

Remarquons que les ´etats{1}, {2}, {3}, {0, 2}, {0, 3}, {1, 2}, {2, 3}, {0, 1, 2}, {1, 2, 3}, {0, 2, 3} sont inatteignables et peuvent ˆetre “retir´es” de l’automate.

En pratique, lors de la conversion, on ne cr´ee pas imm´ediatement tous les ´etats de l’automate fini d´eterministe. Les ´etats “utiles” sont cr´ees quand on en a besoin en suivant la m´ethode de construction ci-dessous :

ˆ Qdest initialis´e `a ∅ et soit E un ensemble d’´etats initialis´e `a E = {{q0}} ˆ Tant que E est non vide,

– choisir un ´el´ement S de E (S est donc un sous ensemble de Qn), – ajouter S `a Qd,

– pour tout symbole a∈ Σ, + calculer l’´etat S′ =S

q∈Sδn(q, a)

+ si S′ n’est pas d´ej`a dans Qd, l’ajouter `a E

+ ajouter un arc sur l’automate entre S et S′ et la valuer par a Exercice 12 D´eterminiser l’automate de l’exercice 7 (long).

4.3 Les ǫ transitions

Rappelons qu’ǫ repr´esente le mot vide. Une ǫ transition (not´ee ǫ sur l’arc d’un automate) permet de passer d’un ´etat `a l’autre d’un automate sans lire de symbole. Cette facilit´e permet de programmer facilement des automates complexes.

Une table de transition peut ˆetre associ´ee `a un automate contenant des ǫ transition. La table est identique `a celle utilis´ee pour un automate fini non-d´eterministe `a ceci pr`es qu’on la compl`ete d’une colonne associ´ee au caract`ere vide ǫ.

Exemple 4 Pour illustrer les ǫ transitions, construisons un automate fini non d´eterministe qui reconnaˆıt les nombres d´ecimaux. Rappelons qu’un nombre d´ecimal est un nombre r´eel qui est le quotient d’un entier relatif par une puissance de dix. Plus pr´ecis´ement, on souhaite pouvoir ´ecrire le nombre d´ecimal en commen¸cant par un “+” ou un “-’, suivi d’une suite de chiffres, d’une virgule et d’une suite de chiffres. Bien entendu, le “+” ou le “-” sont optionnels, la premi`ere chaˆıne de chiffres ne peut pas ˆetre vide et ne commence pas par “0” (sauf si le nombre d´ecimal est 0). La seconde chaˆıne ne se termine pas par “0”. Si seconde chaˆıne est vide, on omet la “,”.

A B C D E F ǫ, +, 1,· · · , 9 0,· · · , 9 , 0,· · · , 9 1, 9 0

La transition de l’´etat A `a l’´etat B est r´egie par ǫ, +,−. Ainsi, on peut passer de A `a B soit en lisant +, soit en lisant − soit enfin en ne lisant rien.

La table de transition associ´ee `a cet automate est alors :

ǫ + − , 0 1 2 · · · 9 → A {B} {B} {B} ∅ ∅ ∅ ∅ · · · ∅ B {F } {C} {C} · · · {C} C {D} {C} · · · D {D} {D, E} {D, E} · · · {D, E} ∗ E ∅ ∅ ∅ ∅ ∅ ∅ ∅ · · · ∅ ∗ F ∅ ∅ ∅ ∅ ∅ ∅ ∅ · · · ∅

Exercice 13 On cherche `a construire un automate qui reconnaˆıt les mots qui se terminent par bab ou qui commencent par aba.

ˆ On sait construire un automate qui reconnaˆıt les mots qui se terminent par bab (exercice 8) :

0 1 2 3

a

b

b a b

ˆ il est facile de construire un automate qui reconnaˆıt les mots qui commencent par aba.

4 5 6 7

a, b

a b a

ˆ Il suffit alors d’assembler ces automates avec une simple ǫ transition.

0 1 2 3 a b b a b 4 5 6 7 a, b a b a i ǫ ǫ

L’introduction des ǫ transition ne change pas la nature des langages reconnus par les auto- mates. Comme pour les automates non-d´eterministes que l’on peut toujours d´eterminiser, il est toujours possible d’´eliminer les ǫ transition et d’obtenir un automate fini d´eterministe ´equivalent. Nous n’aborderons pas ici cette ´elimination.