Académique Documents
Professionnel Documents
Culture Documents
automates
Chapitre 2 : Les expressions
régulières et les automates
finis
Niveau : L2CS
Enseignants :
Fatma Hermès, Bakhta Haouari et Foued Oueslati
2
Partie 1 :
5
Les expressions régulières
Opérateurs
Par analogie avec les expressions arithmétiques, en
interprétant :
L’union :‘|’ est équivalent au ‘+’
La concaténation (ou le produit) :‘.’ par ‘’
La fermeture de Kleene (ou itérative) : ‘*’ par une mise à la
puissance
Formellement et par ordre décroissant de priorités nous avons :
1. La priorité la plus élevée « Priorité 1 » : les parenthèses ()
6
Les expressions régulières
Opérateurs
Le symbole de l’union ‘|’ est
commutatif : a|b = b|a
7
Les expressions régulières
Opérateurs
La concaténation est :
non commutatif : a.b b.a
o a.(b|c) = a.b|a.c
o (b|c).a = b.a|c.a
Exemples :
ab* correspond à a.(b*).
a.b|c correspond à (a.b)|c.
ab*|c correspond à (a.(b*))|c.
8
Les expressions régulières
Règles
Soit un alphabet , les règles définissant les expressions régulières
sur sont comme suit :
est une expression régulière qui dénote {} l’ensemble
constitué de la chaîne (ou mot) vide.
Si a est un symbole de , alors a est une expression régulière qui
dénote {a}, l’ensemble constitué de la chaîne (ou mot) a.
Si r et s sont des ER dénotant les langages L(r) et L(s), alors :
(r)|(s) est une expression régulière dénotant L(r) L(s).
(r)(s) est une expression régulière dénotant L(r)L(s).
(r)* est une expression régulière dénotant (L(r))*
(r) est une expression régulière dénotant L(r)
Si deux ER r et s dénotent le même langage, elles sont
équivalentes et note r = s. Par exemple (a|b)= (b|a).
9
Les expressions régulières
Exemples
Soit l’alphabet = {a, b} :
L’expression (a |b) dénote l’ensemble {a, b}.
10
Les expressions régulières
Syntaxe–Sémantique
Dans une Expression régulière (ER) on distingue :
La syntaxe (ou le motif)
La sémantique (le langage correspondant)
De la syntaxe (ou d’un motif ) vers une sémantique (ou un
langage) : La fonction [[.]] associe à chaque motif un langage.
[[ ]]
[[]] {}
[[c]] {c}
[[p1 | p2]] [[p1]] ⋃ [[p2]]
[[p1.p2]] [[p1]].[[p2]]
[[p*]] [[p]]*
11
Les expressions régulières
Les définitions régulières
Les définitions régulières permettent de donner des noms à des
Expressions Régulières définies sur un alphabet à partir de
symboles de base et de les utiliser comme s’ils étaient des
symboles de .
d1 r1
d2 r2
…
dn rn
12
Les expressions régulières
Les définitions régulières
Notations abrégées
L’opérateur unaire postfixe ‘+’ signifie « au moins une instance »
r* = r+ |
r+ = rr*
L’opérateur unaire postfixe ‘?’ signifie « zéro ou une instance »
(r? = r | )
Classe de caractères : la notation [abc] où a, b et c sont des
symboles d’alphabets signifie a | b | c.
Une classe de caractères [a – z] dénote l’expression régulière
a | b | …| z.
Exemple : Identificateurs : [A – Za – z] [A – Za – z0 – 9]*
13
Les langages réguliers
Définition
Un langage L est dit régulier si il existe une expression régulière
qui le génère.
Autrement dit, un langage L est dit régulier s’il existe un motif p
tel que [[p]] = L.
Une expression régulière r dénote un langage régulier L(r).
Exemples de langages réguliers :
{ab, b, aba} = [[ab | b | aba]].
{ w1, w2, · · · , wn} = [[w1 |w2| · · · |wn]].
Ecriture décimale des entiers :
[[0 | (1|2|3|4|5|6|7|8|9) (0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9)*]]
Mots constitués de 0 et de 1 alternés:
Commence par 0, finit par 1 : L(0.(0|1)*.1) = [[0.(0|1)*.1]]
Commence par 0, finit par 0 : L(0(0|1)*. 0)=[[0(0|1)*. 0]]
14
Les langages réguliers
Règles
Tout langage fini est régulier : un langage fini est un langage
composé par un nombre fini d’éléments (ou mots).
Exemples :
L=
L={ab, b, aba} = L(r ) avec r = ab|b|aba
{ w1, w2, · · · , wn}
Si l’on définit le français comme les mots d’un dictionnaire
de référence (celui de l’Académie), le français est un
langage régulier.
Pour tout a (a un symbole d’un alphabet ) , {a} est un
langage régulier.
15
Les langages réguliers
Règles
est un langage régulier ;
{} est un langage régulier ;
Si L1 et L2 sont réguliers, alors L1 . L2 = {w1w2 | w1 L1
et w2 L2} est régulier.
Si L est régulier, alors :
L* = {} {w1w2w3 · · ·wn | wi L} est régulier ;
Si L1 et L2 sont réguliers, alors L1 L2 est régulier.
Si L est un langage régulier, Lc = ∑* \ L est un langage
régulier
16
Partie 2
18
Les automates à états finis (AF)
Définition
Un AF est composé d’un ensemble fini d’états
(représentés graphiquement par des cercles), d’une
fonction de transition décrivant l’action qui permet de
passer d’un état à l’autre (ce sont les flèches), d’un ou
plusieurs états initiaux (désignés par des flèche
rentrantes),d’un ou plusieurs états finaux (désignées par
un double cercle).
Un AF est donc un graph orienté où les nœuds
correspondent aux états et les arcs aux flèches.
19
Les automates à états finis
Définition
Les automates finis reconnaissent seulement les langages
réguliers.
Un automate fini A est défini par son quintuplet E, , ,
e0, F
E : est un ensemble fini d’états.
: est un ensemble fini de symboles (l’alphabet des symboles
d’entrée).
: E E, une fonction de transition faisant correspondre
des couples état-symbole à des ensembles d’états.
Un état e0 E : est l’état initial de l’automate.
Un ensemble d’états F (F E) connus comme états
d’acceptation ou états finaux.
20
Les automates à états finis
Définition
Un AF est donc un graphe orienté qui peut être décrit de la
façon suivante :
Chaque état est représenté par un sommet du graphe.
On crée un arc (q, q’) étiqueté a si q’=(q, a) où a est un
symbole de l’alphabet
l’état initial est différencié par une flèche rentrante et les
états finaux sont désignés par un double cercle.
21
Les automates à états finis
Représentation
L’automate correspondant à une ER peut être
représenté par :
Une Représentation graphique : un graphe orienté étiqueté
: les nœuds sont des états, les arcs représentent la fonction
de transition
Une Table de transitions : Chaque ligne i représente le
ième Etat de sortie et chaque colonne j représente un
symbole de l’alphabet. Le résultat est dans la case (i,j) est
l’ensemble des états d’arrivée.
Exemple : Considérons le langage dénoté par l’ER (a
| b)*abb (chaînes de a et de b se terminant par abb).
22
Les automates à états finis
Représentation : Exemple
ER : (a | b)*abb (chaînes de a et de b qui se terminant
par abb).
a
A:
begin a b b
0 1 2 3
begin a b b
Exemple : A : 0 1 2 3
b
Le mot abbbabb est accepté par l’automate A : (0,a)=0; (0,b)=0 ;
(0,b)=0; (0,b)=0; (0,a)=1; (1,b)=2; (2,b)=3;
Le mot babbabb est accepté.
Le mot ababab n’est pas accepté.
24
Automate fini déterministe et automate
fini non déterministes
Un automate à états finis peut être déterministe ou
non déterministe.
Dans un Automate Fini Non déterministe (AFN) : on
peut trouver plus d’une transition sortant d’un état sur
le même symbole d’entrée.
L’automate A est non déterministe. En effet on a deux
choix pour le symbole d’entrée a à l’état 0 : (0,a)=0 ou
(0,a)=1 ce qui entraine une ambigüité.
25
Automates finis déterministes
Un automate fini déterministe (AFD) est un cas particulier de
l’AFN dans lequel
Aucun état n’a de -transition (transition sur l’entrée ).
Pour chaque état e et chaque symbole d’entrée a, il y a au plus
un arc étiqueté a qui quitte e
Un automate fini déterministe est dit complet si, e E, il y a
exactement une transition pour chaque symbole possible de
l’alphabet .
Notons que :
Tout AFD non complet peut être transformé en AFD complet par
l’ajout d’un état que nous qualifions de « mort » ou « poubelle »
ed vers lequel arrivent des transitions que nous ajoutons de telle
sorte que de chaque état de l’automate parte exactement une
transitions sur chaque symbole de l’alphabet.
26
Automates finis déterministes :
Notons que :
A’ (E,,,e0,F) :
Les automates finis déterministes b
conduisent à des validateurs plus rapides.
L’implémentation d’un automate fini e1
déterministe est plus volumineuse que a a
celle d’un automate fini non déterministe. b
e0 e2
Exemple :
0,F)
A’ est défini par son quintuplet (E,,,e b b
A1: a A2: a
a a
0 1 0 1
b
28
Opérations sur les automates
Considérons les deux automates finis (déterministes) A1 et A2 et les deux
langages L1 et L2 suivants :
A1: a A2: b
b a
1 2 3 4
29
Réunion d’automates
Soient L1 et L2 deux langages réguliers
L1 L2 est un langage régulier :
Construisons A = E, , , e0, F / L (A) = L1 L2
b a a
3 4
b
a
3 4
AFN
b
31
Construction d’un AFD à partir d’un AFN
Cas particulier (sans -transitions)
On veut construire à partir d’un AFN sans transitions AN, un
nouveau automate AD qui lui est équivalent mais non ambigüe.
Pour cela, il suffit de fusionner quelques états afin d’avoir un
seul choix et ainsi enlever l’ambigüité .
L’état initial pour AD est le même que celui pour AN
Les états finaux sont tout groupe d’états contenant un ancien
état final.
32
Construction d’un AFD à partir d’un AFN
Cas particulier : sans -transitions
Exemple : Soit l’automate AN représenté par la table de transition suivante :
a b a,b
AN: a
q0 q0/q1 q1 a,b
q0 q1
q1 q1 q1
Note : Les états finaux sont B et C car dans B on a q1 l’état final de l’ancien
automate et de même pour C.
33
Construction d’un AFD à partir d’un AFN
Cas général (avec -transitions)
Entrée : un AFN AN
Sortie : un AFD AD
Algorithme :
Construire une table de transition Dtran pour AD.
Chaque état de l’AFD est un ensemble d’états de l’AFN AN.
Construire Dtran de manière que AD simule en parallèle tous les
déplacements possibles que N
peut effectuer sur une chaîne d’entrée donnée.
e représente un état de l’AFN AN et T un ensemble d’états de l’AFN AN. On
utilise les opérations suivantes pour garder une trace des ensembles
d’états de l’AFN.
-fermeture de (e) : ensemble des états de l’AFN AN accessibles depuis
l’état e par des -transitions uniquement.
-fermeture de (T) : ensemble des états de l’AFN AN accessibles depuis un
état e T par des -transitions uniquement.
(T, a) : ensemble des états de l’AFN AN vers lesquels il existe une
transition sur le symbole d’entrée a à partie d’un état e T.
34
Construction d’un AFD à partir d’un AFN :
Algorithme
E0D = -fermeture (e0) /* L’unique état de Dstates au
départ */
TANT QUE un état non marqué dans Dstates
FAIRE
Marquer T;
POUR tout symbole d’entrée a FAIRE
U -fermeture ( (T, a));
SI U Dstates ALORS
Ajouter U à Dstates comme nœud non marqué;
FIN SI
Dtran [T, a] U;
FIN POUR FIN TANT QUE
35
Construction d’un AFD à partir d’un AFN
Exemple
Exemple : Les automates A et A’ sont équivalents ils
reconnaissent le langage L( r ) avec r = (a|b)*abb
a
A: begin a b b
0 1 2 3
A’ :
a
2 3
begin a b b
0 1 6 7 8 9 10
b
4 5
36
Construction d’un AFD à partir d’un AFN
Exemple
AN :
a
2 3
begin a b b
0 1 6 7 8 9 10
b
4 5
37
Construction d’un AFD à partir d’un AFN
Exemple
E0D = {0, 1, 2, 4, 7} = A
a
2 3
begin a b b
0 1 6 7 8 9 10
b
4 5
(E0D, a) = {3,8 }
38
Construction d’un AFD à partir d’un AFN
Exemple
E0D = {0, 1, 2, 4, 7} = A
a
2 3
begin a b b
0 1 6 7 8 9 10
b
4 5
39
Construction d’un AFD à partir d’un AFN
Exemple
E0D = {0, 1, 2, 4, 7} = A
E1D = {1, 2, 3, 4, 6, 7, 8} = B
a
2 3
begin a b b
0 1 6 7 8 9 1
0
b
4 5
(E0D, b) = {5}
40
Construction d’un AFD à partir d’un AFN
Exemple
E0D = {0, 1, 2, 4, 7} = A
E1D = {1, 2, 3, 4, 6, 7, 8} = B
a
2 3
begin a b b
0 1 6 7 8 9 10
b
4 5
42
Construction d’un AFD à partir d’un AFN
Exemple
A = {0, 1, 2, 4, 7} = -fermeture (0) -fermeture ( (C, a)) = B
(A, a)= {3, 8} (C, b)= {5} = C
7, 8} = B D= {1, 2, 4, 5, 6, 7,9}
(C, a) = {3, 8}
43
On obtient 5 ensembles d’états Dstates = {A,B,C,D,E}:
A = {0, 1, 2, 4, 7}
B = {1, 2, 3, 4, 6, 7, 8}
C = {1, 2, 4, 5, 6, 7}
D = {1, 2, 4, 5, 6, 7, 9}.
E = {1, 2, 4, 5, 6, 7, 10}
a a
4 a
1
6
a 2 b
7
1 3 5 5
8 1 1
2 6 6
0 2
b 2
4 a 7 7
4 4 4
7 9 10
b 1 5
2 6
b
b
44
Construction d’un AFD à partir d’un AFN
Exemple
L’état A est l’état de départ et
L’état E est l’unique état d’acceptation.
b
C
b b
begin a b b
A B D E
a
a
a
45
Construction d’un AFD à partir d’un AFN
Exemple
Table de transition de AD Dtran
a b
A B C
B B D
C B C
D B E
E B C
46
Minimisation d’un AFD
Ily a une infinité d’automates pour un langage donné.
Questions :
Y a-t-il un automate canonique ?
Y a-t-il unicité d’un automate minimal en nombre d’états ?
Y a-t-il un lien structurel entre deux automates qui reconnaissent le
même langage ?
Un résultat théorique important : chaque ensemble régulier est
reconnu par un AFD à un nombre d’états minimum qui es t unique (à
un renommage des états près).
Soit un AFD M dont l’ensemble des états est E et l’alphabet d’entrée
est . Nous supposons que M est complet, si tel n’était pas le cas, il
faut le rendre complet.
On dit que la chaîne w distingue l’état ei de l’état ej si, partant de l’AFD
M dans l’état ei et le faisant fonctionner avec w, on termine dans un
état d’acceptation, mais partant de l’état ej et le faisant fonctionner
avec w on aboutit à un état de non- acceptation (ou vice versa).
47
Algorithme de Minimisation d’un AFD
L’algorithme fonctionne en déterminant tous les groupes d’états qui
peuvent être distingués par une chaîne d’entrée.
Chaque groupe d’états qui ne peuvent être distingués est alors fusionné
en un état unique.
Initialement la partition consiste en deux groupes: les états d’acceptation
et les états de non acceptation.
L’étape fondamentale consiste à prendre un groupe d’états A = {e1, e2,
…, ek}, et un symbole a, et à étudier les transitions des états {e1, e2, …,
ek} sur a.
Si ces transitions conduisent à des états qui tombent dans au moins
deux groupes différents de la partition courante, alors on doit diviser
A de manière que les transitions depuis chaque sous ensemble de A
soient tous confinés à un seul groupe de la partition courante.
On répète le processus de division des groupes de la partition courante
jusqu’à ce que plus aucun groupe n’ait besoin d’être divisé.
48
Algorithme de Minimisation d’un AFD
Exemple
C
b b
beg A a b D b E
B
in
a
a
a
49
Algorithme de Minimisation d’un AFD
La partition initiale P consiste en deux groupes :
E, l’état d’acceptation.
A, B, C et D, les états de non acceptation.
Construction de Pn :
Considérons E constitué d’un seul état et ne peut être découpé, on l’ajoute à Pn.
Considérons le groupe constitué de A, B, C et D.
Sur le symbole a, chacun de ces états a une transition vers B, ce qui ne les
distingue pas.
Sur le symbole b, A, B et C ont des transitions vers le groupe (AB C D) tandis que
D a une ransitions vers E.
Dans Pn, le groupe (AB C D) doit être découpé en (AB C) et (D). Pn = (AB C) (D)
(E).
Dans la phase suivante nous n’avons aucun découpage de (A B C) sur le symbole a
par contre il doit être découpé en (A C) et (B) sur le symbole b. Pn = (A C) (B) (D)
(E).
Dans la passe suivante on ne peut plus découper aucun groupe ni sur a ni sur b.
50
Algorithme de Minimisation d’un AFD
Exercice
Minimisation de l’automate suivant :
0 a 1 b
2
a a
b a b
b 4 b 5 a 6
3
b
a
51
Algorithme de Minimisation d’un AFD
Exercice : solution
Partition initiale P0 : G1 regroupe les états non finaux et G2 regroupe les
états finaux
= = > G1= {0,1,3,4,5,6} et G2={2}
G2 contient un seul état = = > On ne peut plus le dissocier
Pour G1 : selon a les états 0,1,2,5 et 6 ont des transition qui arrivent à des
états dans G1, sauf l’état 4 qui arrive dans G2.
D’où, dans la partition suivante P1 on a trois groupe : G1′= {0,1,3, 5,6} ,
G2′={2} et G3′={4}
Pareil, on ne peut pas dissocier G2’={2} et G3’={4}. On va donc essayer de
dissocier G1’= {0,1,3, 5,6}. Selon b on a :
À partir des états 0 et 3 on à une transition vers l’état 4 de G3’.
À partir des états 1 et 6 on à une transition vers l’état 2 de G2’.
À partir de l’état 5 on à une transition vers l’état 3de G1’.
52
Algorithme de Minimisation d’un AFD
Exercice : solution
Ainsi on a une nouvelle partition P2 qui est finale : G1″= {5} , G2″={2} ,
G3″={4}, G4″= {0, 3} , G5″= {1, 6}
= = > On ne peut plus dissocier ni selon a ni selon b.
Automate minimal = => a
1, 6 b
2 b
a
a b
0, 3
a b
b
b
4 5 a
53