• Aucun résultat trouvé

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 (Σ)

ˆ un ensemble fini d’´etats (Q)

ˆ une fonction de transition δ qui associe `a tout ´etatq ∈Q et tout symbole s∈Σ un sous ensemble deQ 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 paraet 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’´etatq,i.e.,∀q∈Q,δ(q, ǫ) =ˆ {q}

ˆ

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

δ(q, c) = ˆˆ δ(q, ca) = [

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|δ(qˆ 0, 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´eterministeAd= (Qd,Σ, δd,{q0}, Fd) qui reconnaˆıt exactement le mˆeme langage.

ˆ Les alphabets deAn et de Ad sont identiques.

ˆ Les ´etats de d´epart sont respectivementq0 et le singleton{q0}.

ˆ Qdest constitu´e de tous les sous-ensembles de Qn.

ˆ Fd est l’ensemble des sous-ensembles deQn qui contiennent au moins un ´el´ement de Fn.

ˆ Etant donn´e un sous ensemble´ S de Qn et un symbole a ∈ Σ, on d´efinit la fonction de transitionδd(S, a) de la mani`ere suivante

δd(S, a) = [

qS

δ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 a b

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 soitE un ensemble d’´etats initialis´e `a E={{q0}}

ˆ Tant queE est non vide,

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

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

qSδ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 etS et la valuer para 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 deA `aB 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 babou qui commencent par aba.

ˆ On sait construire un automate qui reconnaˆıt les mots qui se terminent parbab(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 paraba.

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.