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=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|δ(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) = [
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 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
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 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.