Automates et Expressions Régulières
Automates et Expressions Régulières
Ø Concepts de base
Langages
Ø Déterminisation d’automate (NFAàDFA)
Ø Transformation d’une Expression régulière en automate
Ø Transformation DFA en Expression régulière
Ø Minimisation d’une Expression régulière
Ø Minimisation d’un automate
Alphabet
vUn Alphabet est un ensemble fini de symboles indivisibles (lettres,
séparateurs, chiffres,…).
Concepts de base
d‘un langage.
vPar exemple, le vocabulaire des chiffres est : å = {0,1,2,3,4,5,6,7,8,9}.
Langage
Opérations sur les langages : Soit L1 et L2 deux
langages sur å* :
Les Expressions
v Union : L1 ∪ L2 {a | a Î L1 ou a Î L2}
v Intersection : L1 ∩ L2 {a | a Î L1 et a Î L2} Régulières
v Différence : L1/L2 {a | a Î L1 et a Ï L2}
v Complément : L2 {a Î L1| a Ï L2}
v Concaténation : L1L2 {ab| a Î L1 et b Î L2}
Définition Besoins d’ER
vLes Expressions Régulières (ER) sont des motifs destinés à décrire des L’utilisation des ER peuvent comprendre :
chaînes ou des sections complètes de texte.
ü La recherche d’éléments dans un texte (ou un flux de
données) : Il s’agit de reconnaître des éléments
vLes motifs sont construits selon une syntaxe simple qui permet de particuliers.
décrire de manière abstraite les caractéristiques d’une chaîne de
caractères. ü L’extraction d’information : Il s’agit d’isoler des parties
d’une chaîne de caractères.
ü La validation de données : Il s’agit de vérifier la validité
vLa syntaxe d’une expression régulière comporte des règles et des d’une information.
symboles spéciaux appelés méta-caractères.
ü La substitution et le reformatage : il s’agit de
reconnaître un texte pour le réécrire en un autre.
vLe mot Régulière doit être compris dans le sens qui obéit aux règles.
Exemple Exemple
Exemple d’une ER de validation des variables en C : Exemple d’une ER de validation des variables en C :
Soit : L(L+S+C)*
Ø L un ensemble fini de lettres,
Ø S un ensemble fini de séparateurs (ensemble valide du
langage), Ø Le + représente la sélection (disjonction), elle peut se noter |,
ou…
Ø C l’ensemble fini des entiers de 0 à 9.
Ø Alors l’expression régulière des variables valides en langage Ø Le * signifie 0 ou plusieurs occurrences de la sous-expression.
C qui vérifie qu’une Ø La juxtaposition des symboles du vocabulaire, ici la
variable commence par une Lettre
Ø
juxtaposition de L et () représente leur concaténation.
Ø puis peut comporter des Lettres, des séparateurs ou des chiffres
Ø Les parenthèses, ( et ) représentent les groupements des sous-
L(L+S+C)* expressions.
Exemple ER - Langage
Exemple de construction (mot d’un langage) : v Un Langage rationnel est un langage reconnue par une
expression régulière (expression rationnelle).
vL’ER a+b dénote le langage {a, b} pour un alphabet S constitué v Un langage L Í å* est rationnel s'il existe une ER telle que
des caractères a et b.
L = L(ER).
vL’ER (a+b)(a+b) dénote le langage {aa, ab, ba, bb}, soit le langage
de toutes les chaînes de longueur 2 sur l’alphabet S. v A et B, deux ER, sont équivalentes si leurs deux langages
vL’ER a* dénote le langage des chaînes de 0,1 ou plusieurs a, soit rationnels sont équivalents : L(A) = L(B).
{e,a ,aa ,aaa ,…}.
v Pour montrer que deux langages rationnels sont
équivalents il faut prouver que L1 Í L2 et que L2 Í L1
Remarque : Il est à noter que e représente l’élément vide.
ER - Langage ER
Soit S un alphabet. Une expression régulière ER sur S est vCommutativité de l’union (mais pas
de la concaténation)
vAutres propriétés
v w0 = e
une formule qui définit un langage L(ER) sur S, de la manière v a b <> b a v w* = È{i=0..¥} wi = w0 | È{i=1..¥} wi = e | È{i=1..¥} wi = e | w+
suivante : v a|b=b|a v |w1.w2| = |w1| + |w2|
vassociativité a | Æ = Æ | a = a (élément neutre par rapport à
vSi e est une ER qui définit le langage L(e) ou {e}
v
Exemple NFA
avec ε-transitions Exercices
0,1, …, 9 0,1, …, 9
vAvec l’alphabet {0,1}
e ,+,- . 0,1, …, 9 e
s0 s1 s2 s3 s5 1. Construire un DFA qui accepte les mots de
0,1, …, 9 s4 . taille 2
2. Construire un DFA qui ne contient pas le mot
e
δ S +,- . 0,1,… ,9 0011
Æ Æ
s0 {s1} {s1}
3. Construire un NFA qui accepte les mots qui se
Æ Æ
s1 {s2} {s1, s4}
terminent avec 1
s2 Æ Æ Æ {s3}
Æ Æ
4. Construire un NFA qui accepte les mots qui
s3 {s5} {s3}
Æ Æ Æ
contiennent 01
s4 {s3}
s5 Æ Æ Æ Æ
Solution Solution
1. L’alphabet ∑={0,1}. Langage L={00,01,11,10} 3. Les mots qui se terminent par 1
0,1
0,1 0,1 1
s0 s1 s2 s0 s12
2. Commence par construire DFA qui accepte les mots qui contiennent 0011. Puis 4. Les mots qui contiennent 01.
inverser les états.
1 0,1 0,1 0,1
0
0 0 1 1 0 1
s0 s1 s2 s3 s0 s1 s
S23
1 0
Déterminisation de
NFA
S1
Déterminisation d’NFA NFA (sans e-transitions )à DFA
ØDeux cas possible v Soit AN = <SN, SN, dN, sN0, FN > un automate non-
déterministe sans e-transitions (NFA), il existe un automate
déterministe (DFA) AD = <SD, SD, dD, sD0, FD > tel que L(AN ) =
Ø1er cas : l’automate non-déterministe est sans L(AD)
e-transition ü SD Í Ã(SN)
ü tous les éléments de Ã(SN) ne seront accessibles depuis l’état
initial de SD
Ø2ème cas : l’automate non-déterministe ü SD = SN
contient des e-transitions ü dD(sD Î SD, a Î SD) = Ès Î s dN(sN, a)
N D
ü sD0 = {sN0}
ü FD = {s Î SD | (s Ç FN) ¹ Æ}
ØL’alphabet : Σ = {0,1} δ 0 1 1
0
δ 0 1 SD0={S0} {S0 , S1} {S0} s0 {S0 , S1} {S0 , S2}
ØL’état initial est {S0} S0 {S0 , S1} {S0} {S0 , S1} {S0 , S1} {S0 , S2}
ØLes transitions sont : {S0 , S1} {S0 , S1} {S0 , S2} FD={S0 , S2} {S0 , S1} {S0}
{S0 , S2} {S0 , S1} {S0} 0
s’’’Î e-fermeture(s’’)
s’ Î e-fermeture(s) a s’’ e*
s e*
s0
e ,+,-
s1
. s2
0,1, …, 9
s3
e
s5 s0
e ,+,-
s1
. s2
0,1, …, 9
s3
e
s5
0,1, …, 9 s4 . 0,1, …, 9 s4 .
On doit effectuer un post-processing : calcul de la fermeture après les calculs des images δD SE e-fermeture +,- e-fermeture . e- 0,1,…,9 e-fermeture
δD SE e-fermeture +,- e-fermeture . e-fermeture 0,1,…,9 e-fermeture fermeture
{S0} SD0={S0, S1} {S1} {S1} {S2} {S2} {S1, S4} {S1, S4} {S0} SD0={S0, S1} {S1} {S1} {S2} {S2} {S1, S4} {S1, S4}
{S1} {S1} Æ Æ {S2} {S2} {S1, S4} {S1, S4} {S1} {S1} Æ Æ {S2} {S2} {S1, S4} {S1, S4}
{S2} {S2} Æ Æ Æ Æ {S3} {S3,S5} {S2} {S2} Æ Æ Æ Æ {S3} {S3,S5}
{S3} FD0={S3,S5} Æ Æ Æ Æ {S3} {S3,S5} {S3} FD0={S3,S5} Æ Æ Æ Æ {S3} {S3,S5}
{S4} {S4} Æ Æ {S3} {S3,S5} Æ Æ {S4} {S4} Æ Æ {S3} {S3,S5} Æ Æ
{S5} {S5} Æ Æ Æ Æ Æ Æ {S5} {S5} Æ Æ Æ Æ Æ Æ
On remarque qu’il y a des état fermetures accessibles dont on n’a pas calculé les images {S1, S4} Æ Æ {S2,S3} {S2, S3,S5} {S1, S4} {S1, S4}
Solution ==> on réinjecte ces nouvelles états {S1, S4} dans le calcul
s0
e ,+,-
s1
. s2
0,1, …, 9
s3
e
s5 s0
e ,+,-
s1
. s2
0,1, …, 9
s3
e
s5
0,1, …, 9 s4 . 0,1, …, 9 s4 .
δD SE e-fermeture +,- e-fermeture . e-fermeture 0,1,…,9 e-fermeture
On élimine les états inaccessibles à partir de e-fermeture
{S0} SD0={S0, S1} {S1} {S1} {S2} {S2} {S1, S4} {S1, S4}
δD SE e-fermeture +,- e-fermeture . e-fermeture 0,1,…,9 e-fermeture
{S1} {S1} Æ Æ {S2} {S2} {S1, S4} {S1, S4}
{S0} SD0={S0, S1} {S1} {S1} {S2} {S2} {S1, S4} {S1, S4}
{S2} {S2} Æ Æ Æ Æ {S3} {S3,S5}
{S1} {S1} Æ Æ {S2} {S2} {S1, S4} {S1, S4}
{S3} FD0={S3,S5} Æ Æ Æ Æ {S3} {S3,S5}
{S2} {S2} Æ Æ Æ Æ {S3} {S3,S5}
{S4} {S4} Æ Æ {S3} {S3,S5} Æ Æ
{S3} FD0={S3,S5} Æ Æ Æ Æ {S3} {S3,S5}
{S5} {S5} Æ Æ Æ Æ Æ Æ
{S1, S4} Æ Æ {S2,S3} {S2, S3,S5} {S1, S4} {S1, S4}
{S1, S4} Æ Æ {S2,S3} {S2, S3,S5} {S1, S4} {S1, S4}
FD0={S2, S3,S5} Æ Æ Æ Æ {S3} {S3,S5}
FD0={S2, S3,S5} Æ Æ Æ Æ {S3} {S3,S5}
NFA (avec e-transitions )à DFA NFA (avec e-transitions )à DFA
Exemple Exemple
0,1, …, 9 0,1, …, 9 0,1, …, 9 0,1, …, 9
s0
e ,+,-
s1
. s2
0,1, …, 9
s3
e
s5 s0
e ,+,-
s1
. s2
0,1, …, 9
s3
e
s5
0,1, …, 9 s4 . 0,1, …, 9 s4 .
ü Style plus compact de
représentation du résultat : Au lieu
δD SE e-fermeture +,- e-fermeture . e-fermeture 0,1,…,9 e-fermeture δD SE e-fermeture +,- . 0,1,…,9 de faire en une ligne e-f (d(e-f(s), l))
et d’injecter ce résultat final dans
{S0} SD0={S0, S1} {S1} {S1} {S2} {S2} {S1, S4} {S1, S4} {S0} SD0={S0, S1} {S1} {S2} {S1, S4} une nouvelle ligne
{S1} {S1} Æ Æ {S2} {S2} {S1, S4} {S1, S4} {S1} {S1} Æ {S2} {S1, S4}
ü On fait sur la première ligne d(e-
{S2} {S2} Æ Æ Æ Æ {S3} {S3,S5} {S2} {S2} Æ Æ {S3, S5} f(s), l)=s*, puis après injection de
s* dans la deuxième ligne on
{S3} FD1={S3,S5} Æ Æ Æ Æ {S3} {S3,S5} {S1, S4} {S1, S4} Æ {S2,S3, S5} {S1, S4} calcule d(e-f(s*), l)=s*
{S1, S4} Æ Æ {S2,S3} {S2, S3,S5} {S1, S4} {S1, S4} {S3, S5} FD1={S3, S5} Æ Æ {S3, S5}
ü e-f : epsilon-fermeture
FD2={S2, S3, S5} Æ Æ Æ Æ {S3} {S3,S5} {S2, S3} FD2={S2, S3, S5} Æ Æ {S3, S5}
e e
. 0,1, …, 9 s0 s1 s2
DFA AD .
+,- {S1} 0,1, …, 9
{S2} {S3 , S5}
{S0, S1}
0,1, …, 9
. 0,1, …, 9
0,1, …, 9 {S1, S4} {S2, S3 , S5}
0,1, …, 9
L(AE) = L(AD) = langage des nombres réels
NFA (avec e-transitions )à DFA
Solution
0 1 0,1
e e
s0 s1 s2
δD S e-fermeture 0 1 ER à NFA
Algorithme de Thompson
{S0} {S0, S1 , S2} {S0, S1 , S2} {S1 , S2}
1 0
s0 s1 s2 s1 s2 s2
e
NFA a*
ERà NFA
Algorithme de Thompson
Solution
a e
e
e e e e b
e b e
(a+b)* b
S2
DFAàER
équations linéaires
vSoitA = <S, S, d, s0, F > un automate fini.
vSE(A) est le système d’équations de A
Equations linéaires a b
b X1 = aX1 + bX2 + e
1 2 X2 = bX2 + (a + c) X3
c a,c X3 = cX1
3
DFAàER DFAàER
équations linéaires équations linéaires
v Théorème : v Etape 0 a b
Soit A un automate et (Ls ÎS) la plus petite solution associée à Xs
v
dans SE(A), alors L(A) = Ls0 v X1 = aX1 + bX2 + e b
1 2
v X2 = bX2 + (a + c) X3
v Lemme v X3 = cX1
c a,c
3
v Soient A, B Í S* des langages.
v Le langage A*B est une solution de l’équation v Etape 1
v X = AX + B (équation du point fixe X = f(X))
v X1 = aX1 + bX2 + e
v Lemme d’Arden v X2 = bX2 + (a + c) cX1 (X3 remplacée par sa valeur)
v Si e Ï A alors A*B est la solution unique de X = AX + B v X3 = cX1
a b
DFAàER b DFAàER
équations linéaires 1 2
équations linéaires
v Etape 1
c a,c v Etape 3
3
v X1 = aX1 + bX2 + e v X1 = aX1 + b b*(a + c)cX1 + e (X2 remplacée par sa valeur)
v X2 = b*(a + c)cX1
v X2 = bX2 + (a + c) cX1 (X3 remplacée par sa valeur)
v X3 = cX1
v X3 = cX1
v Etape 4
v Etape 2
v X1 = (a + b b*(a + c) c)X1 + e (factorisation car distributivité)
v X1 = aX1 + bX2 + e
v X2 = b*(a + c)cX1
v X2 = b*(a + c)cX1 (Résolution de X2 par Application du lemme où
A = b et B = (a + c)cX1) v X3 = cX1
v X3 = cX1
v L(A) = X1 (du fait que X1 est associé à l’état initial de l’automate)
v Etape 3
v X1 = aX1 + b b*(a + c)cX1 + e (X2 remplacée par sa valeur) v L(A) = (a + b b*(a + c) c)*. e Lemme d’Adren:
v X2 = b*(a + c)cX1 Eq: X = AX + B à Solution A*B
v = (a + b b*(a + c) c)*
v X3 = cX1
v = (a + b+(a + c) c)*
DFAàER
équations linéaires
Exercice
Trouvez l’ER de l’automate suivant:
a DFAà ER
1 2
Base de graphe
a b a
b
3 4 a,b
b
DFAà ER DFAà ER
Base de graphe Base de graphe
vR0i,j={a Î S | d(i, a) = j} È {e si i = j}
vSoit A = <S, S, d, s0, F > un automate déterministe
v" kÎ {1,..,n}, Rki,j = Rk-1i,j + Rk-1i,k .(Rk-1k,k)*. Rk-1k,j
vSoit {1, 2, …, n} une image de S dans IN*
(Rk-1k,k)*
vOn définit Rki,j comme l’expression régulière
décrivant le langage des mots w reconnus par un k
Rk-1k,j
chemin de l’état i à l’état j dans A ne contenant pas Rk-1i,k
vk = 0
Trouvez l’ER reconnu par l’automate suivant: v R01,1 = 1 + e Î S | d(i, a) = j} È {e si i = j}
vR0i,j={a
v R01,2 = 0 v" kÎ {1,..,n}, Rki,j = Rk-1i,j + Rk-1i,k .(Rk-1k,k)*. Rk-1k,j
v R02,1 = Æ
1 0,1 vk
v R02,2 = 0+1+e
= 1, R1i,j = R0i,j + R0i,1 .(R01,1)*. R01,j
0 v R11,1 = (1 + e) + (1 + e).(1 + e)*.(1 + e) = (1 + e).(e +(1 + e)+) =(1 + e).(1 + e)* = (1 + e)+
1 2 v R11,2 = 0 + (1 + e).(1 + e)*.0 = 0 + (1 + e)+.0 = (1 + e)*.0
v R12,1 = Æ + Æ .(1 + e)*.(1 + e) = Æ
v R12,2 = (0 + 1 + e) + Æ .(1 + e)*.0 = (0 + 1 + e)
vk = 2,
v R21,2 = R11,2 + R11,2 (R12,2)* R12,2
Ø Cela revient à calculer R|S|S0,F =R21,2 v = ((1 + e)*0) + ((1 + e)*0) (0 + 1 + e)*(0 + 1 + e)
v = ((1 + e)*0) (e + ((0 + 1 + e)*(0 + 1 + e)))
v = ((1 + e)*0) (0 + 1 + e)*
v = (1*0) (0 + 1)*
v R21,2 = 1* 0 (0 + 1)*
ERàDFA
Algorithme de Glushkov
S3
ERàDFA ERàDFA
Algorithme de Glushkov Algorithme de Glushkov
Entrée : Soit E une expression régulière
vL'algorithme construit un automate acceptant
v
v On transforme E en E’ en indiçant toute lettre de 1 .. n (indice = état potentiel)
l'ensemble des mots décrit par une expression v On ajoute l’état 0 au début de E’
expression rationnelle E sont les suivantes. v On place une transition de i vers j étiquetée par la lettre lj (d(i,lj)¬j)
v ssi la lettre lj peut suivre la lettre li dans un mot du langage L(E’)
vTransformer l'expression E en une nouvelle expression E' v déterminisation systématique : si j¹k et d(i, l) = {j,k}, alors l’état composite {j,k} regroupera les états atomiques j et k
où chaque lettre apparaît au plus une fois dans E'. v L’état i (i > 0) est final
vConstruire un automate A' acceptant l'ensemble des v
v ssi li peut être la dernière lettre d’un mot du langage L(E’)
L’état 0 est final
mots décrit par E' v ssi e est dans le langage L(E’)
v Sortie : A = < S, S, d, s0, F >
ERàDFA ERàDFA
Algorithme de Glushkov Algorithme de Glushkov
Exemple Exercice
Entrée : Soit E = (a+e) (ba)* (b+e) une expression régulière
vCalculer les automates des ER
v
v E’ ¬ E Indicée
v E’ ¬ (a1+e) (b2a3)* (b4+e)
v
v
E’ ¬ 0E’
E’ ¬ 0(a1+e) (b2a3)* (b4+e)
1. (a+b)*a
v Premières lettres possibles et transitions initiales
v d(0, a) ¬ 1; d(0, b) ¬ {2,4} (* Déterminisation systématique par regroupement des états)
v
d(1, b) ¬ {2,4} (*)
d({2,4}, a) ¬ 3 (*)
a 2.
0 1
v d(3, b) ¬ {2,4} (*)
ERàDFA
Algorithme de Glushkov
Solution - 1
vCommence par numéroté les symboles
Ø0(a1+b2)*a3
δ a b
Minimisation de ER
a a 0
2
{1 , 3}
{1 , 3}
{2}
{2}
Résiduel à gauche
a
0 1,3
1
{1 , 3} {1 , 3} {2}
b
b 2
b
Minimisation de ER Minimisation de ER
Résiduel à gauche Résiduel à gauche
vSoit L un langage surun alphabet S, on appelle L
résiduel à gauche (suffixe) de L par rapport à un Les résiduels, ce
mot u ÎS * l’ensemble des mots vÎS * tels que uv sont tous les V qui
Î L (on note u-1L) restent à droite
vu-1L = {v ÎS *, uv Î L}
U V
vPropriétés:
vL’ensemble des résiduels à gauche (suffixes) de L v{ε}-1L = L
est l’union pour tout uÎS * des u-1L v∅-1L= ∅
vR(L) = Èu ÎS * u-1L
v({u v})-1L= {v}-1 ({u}-1L)
Minimisation de ER
Minimisation de ER Résiduel à gauche
Résiduel à gauche Exemple
vSoit A= <S, S, d, s0, F> un automate, on appelle le langage associé à un vSoit E = 1* 0 ( 0 + 1)
état sÎ S (et on note Ls(A)) le langage reconnu par l’automate dont s est vCalculant R(L(E))
l’état initial et F l’ensemble des états finaux Ls(A)={w ÎS * / d*(s,w) Î F} v 0-1 (L) = (0 + 1) suffixe de L pour 0
(ensemble des suffixes de L reconnus à partir de l’état s) v 1-1 (L) = 1* 0 (0 + 1) = (L) suffixe de L pour 1 (point fixe)
Minimisation de ER Minimisation de ER
Résiduel à gauche Résiduel à gauche
Solution -1- Exercice -2-
vSoit E=(0+1)*01(0+1)* 0 1 vCalculer les automates minimal ER
v0-1 (L) = L+1(0+1)*
v1-1 (L) = L
L 0-1 (L) L 1. (a+b)*a
0-1 (L) 0-1 (L) Σ*
v0-1 (0-1 (L) ) = 0-1 (L) Σ* Σ* Σ*
v1-1 (0-1 (L) ) = Σ* v Comparer les deux automates (Glushkov et
RàG)
v0-1 (Σ* ) = Σ*
v1-1 (Σ* ) = Σ* 1 0 0,1
0 1
L 0-1 (L) s
Σ*2
Minimisation de ER
Résiduel à gauche
Solution -2-
vSoit E=(a+b)*a
va-1 (L) = L+ e
vb-1 (L) = L
Glushkov
va-1 (a-1 (L) ) = L+ e = a-1 (L)
vb-1 (a-1 (L) ) = L a a
RàG a 0
a 1,3
1
b
a b
L a-1 (L)
b
S4
2
b
b
0
vNB. Pour vérifier qu’un automate est minimal, il faut au moins deux
itérations »0 et »1. Si »1 = »0, l’automate est minimal
0 1
Minimisation d’un DFA Minimisation d’un DFA A
B
B
G
F
C
Par séparation des états Par séparation des états C A C
Exemple Exemple D C G
E H F
0 Equivalent: {A,B,D,E,F,G,H} {C} F C G
Transition
G G E
0 1 1 Equivalent: {A,E,G} {B,H}, {D,F} {C}
H G C
A B F
0 Equivalent: {A,B,D,E,F,G,H} {C} 2 Equivalent: {A, E} {B,H} {C} {D,F} {G}
B G C
C A C
1 Equivalent: {A,E,G} {B,H}, {D,F} {C}
D C G
3 Equivalent: {A, E} {B,H} {C} {D,F} {G}
Amin
2 Equivalent: {A, E} {B,H} {C} {D,F} {G} 0
E H F 1
3 Equivalent: {A, E} {B,H} {C} {D,F} {G}
F C G
1
G G E 0
A
B,H C
H G C
0 0
A,E 0
1 1
G D,F
1
Minimisation d’un DFA Minimisation d’un DFA
Par séparation des états Par séparation des états
Propriété Propriété
v Pour tout chemin. dans vL’algorithmede minimisation s’arrête
l’automate A, il existe un chemin
dans l’automate Amin, où [sn] est un état final de Amin. car le nombre d’itérations est fini
Par conséquent, tout mot a1a2 . . . an accepté par A est vNombre d’itérations de l’algorithme
aussi accepté par Amin
vAu minimum : 2
vRéciproquement, à tout chemin vAu Maximum : |S|
correspond un chemin où s’i
appartient à [si]. Donc, tout mot a1a2 . . . An accepté par
Amin est aussi accepté par A.
A B C D E F A B C D E F
DFA minimisé
Combiner les états non cochés 0,1
0 1 B D
1 0 1 Fusion de A et C 0 1
A
A,C 0 1
1 C E
1
1 1 E
S5