Vous êtes sur la page 1sur 53

Cours : Théorie des langages et

automates
Chapitre 2 : Les expressions
régulières et les automates
finis
Niveau : L2CS
Enseignants :
Fatma Hermès, Bakhta Haouari et Foued Oueslati

Année universitaire : 2020-2021


Plan
 Partie 1 : Les expressions régulières
 Opérateurs, syntaxe et sémantique
 Les définitions régulières
 Les langages réguliers
 Partie 2 : Les automates à états finis
 Les automates finis non déterministes : AFN
 Les automates finis déterministes : AFD
 Opérations sur les automates à états finis
 Passage d’un AFN à un AFD
 Minimisation d’un AFD

2
Partie 1 :

Les expressions régulières


•Opérateurs, syntaxe et sémantique
•Les définitions régulières
•Les langages réguliers
Introduction
 Dans une expression arithmétique :
 Opérateurs : *,+,-,/ et les parenthèses ()
 Termes : nombres entiers et réels
Exemple : ((a+b)*c/5)/2*k
 Dans une expression logique :
 Opérateurs : ET, OU, NON et les parenthèses ()
 Termes : booléens
Exemple : (a ET b) OU (NON a et c)
 En théorie des langages : On a une Expression Régulière (ER)
 Opérateurs : la Concaténation (ou le Produit) : ‘.’ , l’Union :
‘|’, la Puissance : ‘*’ et les parenthèses : ()
 Termes : Symboles d’un alphabet, Mots et langages
4
Les expressions régulières
Introduction
Notons que :
 L’ensemble représente le langage vide.
= = > ={} :Il ne contient aucun mot.
 Le mot vide  représente le langage {}
= = > Il contient seulement le mot vide.
 Un caractère c de  représente le langage {c}
= = > Il contient seulement le mot composé par le symbole c.
 L’alternative p1 | p2 représente l’union des langages représentés par
p1 et p2.
 La concaténationp1.p2 représente la concaténation des langages
représentés par p1 et p2.
 La répétition p* représente l’itération du langage représenté par p.

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

2. Ensuite « Priorité 2 » : la fermeture itérative ‘*’

3. Puis « Priorité 3 » : la concténation ‘.’

4. Et enfin, la priorité la moins élevée « Priorité 4 » : l’union


‘|’

6
Les expressions régulières
Opérateurs
 Le symbole de l’union ‘|’ est
 commutatif : a|b = b|a

 associatif : (a|b)|c = a|(b|c)

 Le symbole de la concaténation ‘.’ peut être omis.


 Le mot vide  est l’élément neutre de la concaténation : .a=a et
a. =a
 Ainsi on a : (r| )*=r*
 D’autre part : (r*) *=r**= r* (On dit que la fermeture itérative (ou
de Kleene) ‘*’ est idempotent).

7
Les expressions régulières
Opérateurs
 La concaténation est :
 non commutatif : a.b  b.a

 associatif : (a.b).c = a.(b.c)

 distributive par rapport à l’union ‘|’ :

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}.

 L’expression (a |b)(a |b) dénote l’ensemble {aa, ab, ba, bb}.

= = > Ce même ensemble peut être dénoté par l’ER aa | ab | ba | bb.


 L’expression a* dénote l’ensemble de toutes les chaînes constituées d’un

nombre quelconque (éventuellement nul) de a. L(a*) = {, a, aa, aaa, …}.


 L’expression régulière (a|b)* dénote l’ensemble de toutes les chaînes

constituées d’un nombre quelconque (éventuellement nul) de a ou de b.


= = > Ce même ensemble peut être dénoté par l’ER (a*b*)*.
 L’expression a | a*b contenant la chaîne a ou toutes les chaînes constituées

d’un ensemble quelconque (éventuellement vide) de a suivi d’un 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

 di est un nom distinct et chaque ri est une ER sur les symboles


de  {d1, d2, …, di-1}.

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

Les automates à états finis


Les automates finis non déterministes : AFN
Les automates finis déterministes : AFD
Opérations sur les automates à états finis
Passage d’un AFN à un AFD
Minimisation d’un AFD
Automate à états finis (AF)
Introduction
 Pour valider un langage, on peut écrire un programme qui prend
une chaîne x en entrée et retourne « oui » si c’est une phrase du
langage et « non » sinon.
 Ainsi, les langages sont reconnus par des machines formelles
appelées: automates ou systèmes reconnaisseurs ou encore
validateur d’un langage qui étant donnée un mot sont capable de
dire si ce mot appartient ou pas à un langage.
 Un automate à états finis (AF) est un modèle d’un système et de
son évolution, c’est-à-dire une description formelle du système et
de la manière dont il se comporte.

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

Représentation graphique A E, , , e0, F  :


E={0,1,2,3},
={a,b},
Symbole d’entrée e0 =0,
 F={3})
a b
0 {0, 1} {0} (0,a)=0 ou (0,a)=1
1 – {2} (1,b)=2
2 – {3}
(2,b)=3

Représentation sous forme d’une table de transition


23
Langage accepté par un AF
 Un automate prend en entrée un mot w et l’accepte ou le rejette.
 On part de l’état e0.

 On lit les caractères du mot w un à un en suivant la transition


correspondante (s’il n’y en a pas, la validation échoue).
 Lorsque tous les caractères sont lus, on accepte si l’on est sur un
état final, on rejette sinon.
a

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

 L’état e0 est initial (e0,a)=e1 ; e3


b a
 Les état e3 et e4 sont finaux : (e0,b)=e2 ;
(e1,a)=e2 ; a
 Le mot abbbab est accepté : .
(e1,b)=e1 ;
 Le mot babba est accepté. (e2,a)=e4 ; e4
 Le mot ababab n’est pas accepté (e2,b)=e3 ;
 L’AFD suivant est complet (e3,a)=e3 ; E={e0 ; e1 ; e2 ; e3 ; e4}
(e3,b)=e0 ; ={a,b}
(e4,b)=e0 ; F={e3 ; e4 }
27
Équivalence d’automates
 Définition : deux automates sont équivalents s'ils reconnaissent le
même langage.
 Exemple : A1 et A2 reconnaissent le même langage dont l’expression
régulière est a+= a.a* =a*.a.

A1: a A2: a
a a
0 1 0 1

 Est-ce que A3 et A4 sont équivalents ?


A3: a,b a A4: b 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

A1 =  E1, 1 , 1 , e01, F1  A2 =  E2, 2 , 2 , e02, F2 


 E1 = {1,2} E2 = {3,4}
 1 ={a,b}  2 ={a,b}
 1 (1,a) = 1 et 1 (1,b) = 2  2 (3,a) = 4 et 1 (3,b)= 3
 e01 = 1  e02 = 3
 F1 ={2}  F2 ={4}
L1=a*b L2= b*a

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

 E=E1 E2 {e0} avec e0 soit un nouvel état soit e0=e01=e02

  = 1  2 (e0;a;e)/(e01;a;e)  1 / (e02;a;e)  2)

 F=F1 F2si e01  F1 ou e02  F2 .


a
 F=F1 F2 {e0} si e01  F1 ou e02  F2 .  b
1 2
b
a e0
a 1
b
2  a
3 4
e0 b
b a
3 4
AFN avec  transition
a b

AFN sans  transition


30
Concaténation d’automates
 L1 et L2 deux langages réguliers, L1.L2 est un langage régulier :
 Construisons A =  E, , , e, F  / L (A) = L1.L2
 E = E1 E2

 = 1 2 {(ep , a, eq ) / ep F1 et (e02 , a, e02 ) 2 }


 e0 = e01
 F=F1 F2 si e02 F2
a
 F = F2 sinon
b
1 2
a
AFD
b
1 2 

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

 Dans une première étape, on va fusionner {q0,q1} afin d’enlever l’ambigüité et


on construit au fur et à mesure la nouvelle table de transition de AD.
Etat/ a B
a b
Alphabet
{q0} /A {q0,q1} /B {q1} /C A B C
{q0,q1} /B {q0,q1} /B {q1} /C B B C
{q1} /C {q1} /C {q1} /C C C C

 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

E0D = -fermeture (0) = { 0,1,2,4,7 }

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

-fermeture ( (E0D, a) = {3, 8}) = {3, 8, 6, 1, 2, 4, 7}


-fermeture ( ((E0D= A), a)) = B = {1, 2, 3, 4, 6, 7, 8} = Dtran[A, a]

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

-fermeture ( (E0D, b) = {5}) = {5, 6, 7, 1, 2, 4 }


-fermeture ( ((E0D= A), b)) = C = {1, 2, 4, 5, 6, 7} = Dtran[A, b]
41
Construction d’un AFD à partir d’un AFN
Exemple
 L’état de départ de l’AFD est la -fermeture (0) qui est A = {0, 1,
2, 4, 7}
 -fermeture ( (A, a)) l’ensemble des états de l’AFN qui ont des
transitions sur a depuis des éléments de A. Seuls les états 2 et
7 ont de telles transitions, vers 3 et 8.
 -fermeture ( ({0, 1, 2, 4, 7}, a)) = -fermeture ({3, 8}) = {1, 2, 3,
4, 6, 7, 8} = B. B = Dtran[A, a]
 Parmi les états de A seul l’état 4 a une transition sur b vers 5.
 -fermeture ( ({0, 1, 2, 4, 7}, b)) = -fermeture ({5}) = {1, 2, 4, 5,
6, 7} = C. C = Dtran[A, b]
 On continue le processus avec les ensembles B et C et ainsi de
suite, on atteint le point où tous les ensembles qui sont des
états de l’AFD sont marqués.

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

 -fermeture ( (A, a)) = {1, 2, 3, 4, 6,  -fermeture ( (C, b)) = C

7, 8} = B  D= {1, 2, 4, 5, 6, 7,9}

  (A, b)= {5}   (D, a)= {3, 8}

 -fermeture ( (B, b)) = {1, 2, 4, 5, 6,  -fermeture ( (C, a)) = B

7,9} = D   (D, b)= {5,10}

 B = {1, 2, 3, 4, 6, 7, 8}  -fermeture ( (D, b)) = {1, 2, 4, 5,

  (B, a)= {3, 8} 6, 7,10} = E


 -fermeture ( (B, a)) = B  E= {1, 2, 4, 5, 6, 7,10}

  (B, b)= {5, 9}   (E, a)= {3, 8}

 -fermeture ( (B, b)) = {1, 2, 4, 5, 6,  -fermeture ( (E, a)) = B

7,9} = D   (E, b)= {5}

 C = {1, 2, 4, 5, 6, 7}  -fermeture ( (E, b)) = C

  (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.

 Pf = (AC) (B) (D) (E).

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

Vous aimerez peut-être aussi