04.automates

Telechargé par Morgan Minko
Chapitre 4 option informatique
Automates
1. Automates finis déterministes
1.1 Introduction
De manière informelle, un automate est une machine abstraite qui peut prendre un nombre fini d’états, qui
reçoit en entrée un mot écrit sur un alphabet Σ, et qui change d’état à la lecture des lettres de ce dernier.
Certains états sont désignés au préalable comme des états acceptants ; à la fin de la lecture du mot passé en
entrée l’automate aura changé d’état ; on dira que le mot est accepté si l’état final est un état acceptant, et rejeté
dans le cas contraire.
Considérons à titre d’exemple l’automate fini suivant : les états sont représentés par les nœuds du graphe et les
transitions par les arêtes. Ces dernières sont étiquetées par une lettre de l’alphabet
Σ
=
{a,b}
et représentent le
changement d’état lié à la lecture du mot en entrée.
q0q1q2
a
a
b
b
a
Létat initial (ici
q0
) est désigné par une flèche entrante ; les états acceptants (ici
q2
) sont représentés par une
flèche sortante 1.
On se convaincra aisément que pour qu’un mot soit lu et aboutisse à un état acceptant il faut et il sut qu’il
débute par un aet se termine par un b; on dira que cet automate reconnait le langage des mots de aΣb.
On peut observer qu’un mot débutant par la lettre
b
ne peut être lu par cet automate, faute d’une transition
partant de
q0
et étiquetée par
b
. On dira que le couple (
q0,b
) est un blocage de l’automate. Un automate sans
blocage est dit complet ; il est toujours possible de rendre un automate complet en ajoutant un état inutile qu’on
appelle un puit (voir figure 1).
q0q1q2
q3
a
b
a
b
b
a
a,b
Figure 1 – Un automate complet qui reconnait le langage aΣb; l’état q3est un puit.
Le second exemple que nous allons donner est un peu plus complexe. Lalphabet utilisé est l’alphabet binaire
Σ={0,1}et le mot lu par l’automate ci-dessous correspond à l’écriture binaire d’un entier n:
q0q1q2
1
0
0
1 0
1
1. Certains auteurs représentent les états acceptants avec un double cercle.
http://info-llg.fr
4.2 option informatique
Nous allons montrer que cet automate reconnait les entiers
n
qui sont divisibles par 3. Plus précisément, nous
allons montrer par récurrence sur
n
que l’état final atteint par la lecture de l’entier
n
est
q0
si
n
0
mod
3,
q1
si
n1 mod 3 et q2si n2 mod 3.
C’est vrai si n= 0 ;
si n>1, supposons le résultat acquis jusqu’au rang n1, et posons n= 2p+ravec r∈ {0,1}.
Par hypothèse de récurrence appliquée à
p
, avant la lecture de
r
l’automate se trouve dans l’état
qi
avec
pimod 3.
Si i= 0 alors nrmod 3 et si r= 0 l’automate reste à l’état q0, si r= 1 l’automate passe à l’état q1;
si
i
= 1 alors
n
2+
rmod
3 et si
r
= 0 l’automate passe à l’état
q2
, si
r
= 1 l’automate passe à l’état
q0
;
si
i
= 2 alors
n
1 +
rmod
3 et si
r
= 0 l’automate passe à l’état
q1
, si
r
= 1 l’automate reste à l’état
q2
.
Dans les trois cas le résultat est acquis au rang n.
1.2 Définition formelle d’un automate
Définition
. — Un automate fini
2
déterministe (DFA, pour deterministic finite automaton) est défini par un
quintuplet A = (Σ,Q, q0,F,δ)où :
Σest un alphabet (fini) ;
Qest un ensemble fini dont les éléments sont appelés les états de A;
q0Qest l’état initial ;
FQest l’ensemble des états acceptants (ou finaux) ;
δest une application d’une partie de Q×Σdans Q, appelée fonction de transition.
Lorsque δest définie sur Q×Σtout entier, l’automate Aest dit complet.
Le qualificatif de déterministe sera justifié lors de l’introduction des automates non-déterministes plus loin dans
ce chapitre.
Comme nous l’avons vu en introduction, il est d’usage de représenter un automate par un graphe dont les
nœuds sont les états et les arêtes les couples (qi,qj)Q2étiquetés par aΣtel que δ(qi,a) = qj.
Σ={a,b};
Q = {q0,q1,q2};
F = {q0, q1};
δa b
q0q1q0
q1q2q0
q2q2q2
q0q1q2
a
b
a
b
a,b
Figure 2 – Un automate fini déterministe complet et sa représentation graphique.
Une transition
δ
(
qi,a
) =
qj
sera représentée par
qi
a
qj
. Un chemin dans l’automate
A
est une suite finie
de transitions consécutives
q0
a1
q1
a2
→ ··· an
qn
débutant par l’état initial
q0
. Le mot
a1a2···an
est appelé
l’étiquette du chemin.
Définition
. — Un chemin est dit acceptant lorsque l’état d’arrivée de celui-ci est un état acceptant ; un mot de
Σ
est reconnu par l’automate
A
lorsqu’il est l’étiquette d’un chemin acceptant. Le langage
L
(
A
) reconnu par l’automate
Aest l’ensemble des mots reconnus par A.
Par exemple, le langage reconnu par l’automate représenté figure 2 est le langage des mots sur
{a,b}
qui ne
comportent pas deux aconsécutifs. Notons qu’il s’agit d’un langage rationnel dénoté par (b+ab)(ε+a).
En eet, Notons
Li
l’ensemble des étiquettes des chemins débutant par l’état
qi
et finissant par un état acceptant.
On dispose des relations :
L0=ε+bL0+aL1,L1=ε+bL0et L2=.
On en déduit que
L0
=
ε
+
bL0
+
a
(
ε
+
bL0
)=(
b
+
ab
)
L0
+ (
ε
+
a
) et d’après le lemme d’Arden
3
,
L0
= (
b
+
ab
)
(
ε
+
a
).
2. Plus exactement à états finis.
3. Voir l’exercice 11 du chapitre 3.
Automates 4.3
Remarque
. Le théorème de Kleene qui sera prouvé plus loin établit l’équivalence entre les expressions
rationnelles et les automates finis dans le sens où ces deux notions définissent les mêmes langages. Ce résultat
est remarquable car il relie deux notions de natures diérentes, combinatoire pour les expressions rationnelles
et opérationnelles pour les automates.
1.3 Émondage
Nous avons mis en évidence la fonction principale d’un automate : reconnaitre des mots en parcourant
un par un ses caractères. Dans le cas d’un automate complet, la complexité de l’algorithme qui en résulte
est proportionnelle à la longueur du mot puisqu’aucune transition nest bloquante. Or ceci peut s’avérer
particulièrement inecace : dans l’exemple de l’automate présenté figure 2, une fois arrivé dans l’état
q2
il est
impossible de le quitter et il nest donc pas nécessaire de poursuivre la lecture du mot (on dit que
q2
est un
puit). Puisqu’il ne s’agit pas d’un état acceptant, il peut être supprimé sans modifier le langage reconnu par
l’automate. On dira que l’automate représenté figure 3 est un automate équivalent à celui de la figure 2 car il
reconnait le même langage, et le couple (q1,a) sera appelé un blocage car δ(q1,a) nest pas défini.
Σ={a,b};
Q = {q0,q1};
F = {q0, q1};
δa b
q0q1q0
q1q0
q0q1
a
b
b
Figure 3 – Un automate incomplet équivalent à celui de la figure 2.
Létat
q2
de l’automate présenté figure 2 a pu être supprimé car il nexiste pas de chemin menant de
q2
à un état
acceptant. Plus généralement, on dit d’un état qqu’il est :
accessible lorsqu’il existe un chemin menant de l’état initial q0àq;
co-accessible lorsqu’il existe un chemin menant de qà un état acceptant.
Un état accessible et co-accessible est dit utile ; sachant que le chemin décrit par un mot reconnu ne passe que
par des états utiles, on ne change pas le langage reconnu en supprimant tous les états qui ne le sont pas ainsi
que les transitions impliquant ces états. Lautomate obtenu, qui ne possède plus que des états utiles, est dit
émondé.
q0q1q2
q3q4
a
b
a
b
a
b
a,b
a
b
q0q1q2
a
a
b
a
b
q3nest pas co-accessible
q4nest pas accessible
Figure 4 – Un automate complet et son émondage. Tous deux reconnaissent le langage dénoté par a(a+b)b.
1.4 Mise en œuvre pratique
Pour modéliser un automate en Caml il est pratique d’utiliser le type
char
pour représenter l’alphabet
Σ
, le
type
int
pour l’ensemble des états et d’utiliser un dictionnaire pour énumérer la liste des transitions possibles.
Pour simplifier, la liste des transitions possibles sera représentée par le type
(int *char) *int list
et on utilisera la
fonction assoc pour associer au couple (q,a) l’état δ(q,a)4.
4
. la fonction
assoc
est de type
’a > (’a *’b) list > ’b
; appliquée à un élément
a
et une liste
`
cette fonction renvoie la première valeur
b
telle que (a,b)`et déclenche l’exception Not_found s’il nen existe pas.
http://info-llg.fr
4.4 option informatique
Ceci conduit à définir le type :
type dfa = {Start: int ;
Accept: int list ;
Delta: ((int *char) *int) list} ;;
Par exemple, l’automate émondé représenté figure 4 sera défini par :
let a = {Start = 0; Accept = [2]; Delta = [ (0, ‘a‘), 1; (1, ‘a‘), 1; (1, ‘b‘), 2;
(2, ‘a‘), 1; (2, ‘b‘), 2 ]} ;;
La fonction suivante détermine l’état final de l’automate après parcours du chemin étiqueté par un mot passé
en paramètre (et déclenche l’exception Not_found en cas de blocage) :
let chemin a m =
let rec aux q = function
| k when k = string_length m > q
| k > aux (assoc (q, m.[k]) a.Delta) (k+1)
in aux a.Start 0 ;;
Enfin, la fonction qui suit détermine si un mot est reconnu ou pas :
let reconnu a m =
try mem (chemin a m) a.Accept
with Not_found > false ;;
2. Automates non-déterministes
Dans cette section nous allons généraliser la notion d’automate fini en utilisant plusieurs états initiaux et en
autorisant deux transitions sortantes d’un même état
q
à porter la même étiquette. Nous constaterons que cette
généralisation naugmente pas l’expressivité du modèle : les langages reconnus sont les mêmes que pour les
automates déterministes ; cependant le nombre d’états d’un automate non-déterministe peut être notablement
inférieur à l’automate déterministe équivalent.
2.1 Définition
Définition
. — Un automate fini non-déterministe (NFA, nondeterministic finite automaton) est défini par un
quintuplet A = (Σ,Q,I,F,δ)où :
Σest un alphabet (fini) ;
Qest un ensemble fini dont les éléments sont appelés les états de A;
IQest l’ensemble des états initiaux ;
FQest l’ensemble des états acceptants (ou finaux) ;
δest une application d’une partie de Q×Σdans P(Q), appelée fonction de transition.
On notera que la notion de blocage na plus vraiment de sens puisque δ(q,a) peut prendre la valeur .
Une transition est un triplet (
qi,a,qj
) tel que
qjδ
(
qi,a
) ; celle-ci est représentée par
qi
a
qj
. Un chemin est une
suite finie de transitions consécutives q0
a1
q1
a2
→ ··· an
qn.
Définition
. — Un mot de
Σ
est reconnu par l’automate
A
s’il étiquette un chemin menant d’un état initial à un
état acceptant. Le langage des mots reconnus par l’automate Aest noté L(A).
Autrement dit, pour qu’un mot
m
soit reconnu il sut qu’il existe au moins un chemin étiqueté par
m
menant
d’un état initial à un état acceptant, ce qui nécessite de tester tous les chemins partant d’un état initial et
étiquetés par mavant de pouvoir armer que ce dernier nest pas reconnaissable.
Automates 4.5
q0q1q2
a
a,b
b
Figure 5 – Un automate non-déterministe qui reconnait le langage dénoté par a(a+b)b.
2.2 Déterminisation
La propriété essentielle que nous allons établir est que tout automate non-déterministe est équivalent (dans
le sens où il reconnait le même langage) à un automate déterministe. La preuve que nous allons établir est
couramment appelée construction par sous-ensembles.
Considérons donc un automate non-déterministe A = (Σ,Q,I,F,δ) et posons :
A0= (Σ,P(Q),I,F0,δ0) avec F0=nPP(Q)
PF,oet (P, a)P(Q) ×Σ,δ0(P,a) = [
qP
δ(q, a).
Si
A
est un automate non-déterministe à
n
états, l’automate
A0
est un automate déterministe à 2
n
états. Pour
bien comprendre cette construction, calculons
A0
lorsque
A
est l’automate représenté figure 5.
A0
possède 2
3
= 8
états :
,
{q0}
,
{q1}
,
{q2}
,
{q0,q1}
,
{q1,q2}
,
{q0,q2}
,
{q0,q1,q2}
; son état initial est
{q0}
et ses états acceptants tous
ceux qui contiennent q2, à savoir {q2},{q1,q2},{q0,q1,q2}. Enfin, le tableau des transitions de A0est le suivant :
δ0a b
∅ ∅
{q0} {q1} ∅
{q1} {q1} {q1,q2}
{q2} ∅
δ0a b
{q0,q1} {q1} {q1,q2}
{q1,q2} {q1} {q1,q2}
{q0,q2} {q1} ∅
{q0,q1,q2} {q1} {q1,q2}
Pour éviter d’avoir à représenter un automate trop volumineux on ne représente que les états accessibles :
pour ce faire on commence par remplir le tableau des transitions avec l’état initial et on najoute que les états
qui apparaissent comme résultats des transitions précédentes. On ne représente pas non plus l’état
qui ne
peut être co-accessible (en revanche d’autres états non co-accessibles peuvent subsister). Dans le cas qui nous
intéresse cela conduit au tableau simplifié suivant :
δ0a b
{q0} {q1} −
{q1} {q1} {q1,q2}
{q1,q2} {q1} {q1,q2}
En posant q0
0={q0},q0
1={q1}et q0
2={q1,q2}l’automate déterminisé (et partiellement émondé) est donc :
q0
0q0
1q0
2
a
a
b
a
b
Théorème. — Les automates Aet A0reconnaissent le même langage.
Preuve.
On montre par récurrence sur
|u|
que pour tout mot
uΣ
, il existe dans
A
un chemin étiqueté par
u
menant à un état
q
si et seulement s’il existe dans
A0
un chemin étiqueté par
u
menant à un état
P
contenant
q
.
Dans
A
tout chemin étiqueté par
ε
mène à un élément de
I
; dans
A0
tout chemin étiqueté par
ε
mène à
l’état I. Le résultat énoncé est donc vrai pour le mot ε.
Si
u,ε
, supposons le résultat acquis pour tout mot de longueur strictement inférieure, et posons
u=a1a2···an.
Considérons un chemin
q0
a1
q1
a2
→ ··· an
qn
dans
A
. Par hypothèse de récurrence il existe dans
A0
un
chemin
Ia1
P1
a2
→ ··· an1
Pn1
tel que
qn1Pn1
. Or
qnδ
(
qn1,an
) donc
qnδ0
(
Pn1,an
). En posant
Pn=δ0(Pn1, an) on établit un chemin I a1
P1
a2
→ ··· an
Pntel que qnPn.
http://info-llg.fr
1 / 17 100%

04.automates

Telechargé par Morgan Minko
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !