Sie sind auf Seite 1von 36

Chapitre 3

Évaluation des expressions régulières


et automates finis

Jean Privat
Université du Québec à Montréal

INF5000 — Théorie et construction des compilateurs


Automne 2013

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 1 / 25


Évaluation d’une expression régulière
Soit une expression régulière définissant un langage
Une chaı̂ne appartient-elle au langage ?
Rechercher les sous-chaı̂nes appartenant au langage ?

Questions non triviales

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 2 / 25


Évaluation d’une expression régulière
Soit une expression régulière définissant un langage
Une chaı̂ne appartient-elle au langage ?
Rechercher les sous-chaı̂nes appartenant au langage ?

Questions non triviales


Même pour un ordinateur

a?b*c+ 0110010 ?

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 2 / 25


Approche naı̈ve

Comment évaluer ?
a*ba*ba*
(ab|b)*a?

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 3 / 25


Approche naı̈ve

Comment évaluer ?
a*ba*ba*
(ab|b)*a?

Les langages sont-ils les mêmes ?


a+ba*|a*ba+
a+ba+|a+b|ba+

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 3 / 25


Approche naı̈ve

Comment évaluer ?
a*ba*ba*
(ab|b)*a?

Les langages sont-ils les mêmes ?


a+ba*|a*ba+
a+ba+|a+b|ba+

Quel est l’expression régulière la plus rapide à évaluer ?


Qu’est-ce qui impacte les performances ?

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 3 / 25


Outils nécessaires

Structures de données
Automates finis

Algorithmes
Transformation d’automates
Évaluation d’automates

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 4 / 25


Automate = Graphe

Transitions = arcs
Orientés
Étiquetés par un caractère de l’alphabet ou par ε (epsilon)

États = nœuds
Un état de départ
Un ensemble d’états d’acceptation (éventuellement vide)

Automate fini
Nombre fini d’états (et de transitions)

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 5 / 25


Automate fini non déterministe (NFA)

Règle : pas de règle


Pas de restriction sur les étiquettes des arcs

a a
1 2 3
ε

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 6 / 25


Automate fini déterministe (DFA)

Règles
Au plus un arc sortant pour une étiquette
Pas d’étiquette ε

a a
1 2 3
c

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 7 / 25


Langages réguliers

NFA et DFA définissent un langage


L’ensemble des chemins partant d’un état de départ vers un état
d’acceptation

NFA, DFA et expression régulières


Reconnaissent la même classe de langages :
⇒ les langages réguliers

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 8 / 25


Évaluation d’automates

Soit un automate fini définissant un langage


Une chaı̂ne appartient-elle au langage ?

Facile
Il suffit de trouver un chemin
Encore plus facile avec un DFA (algorithme linéaire)

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 9 / 25


Évaluation d’automates : Exercice
Soit le DFA
b

a a
1 2 3
c

Quelles chaı̂nes sont reconnues parmi


aa
acabcb
acc
abbc

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 10 / 25


Évaluation d’automates : Exercice
Soit le DFA
b

a a
1 2 3
c

Quelles chaı̂nes sont reconnues parmi


a a $
aa : 1 → 2 → 3 → OK
a c a b c b $
acabcb : 1 → 2 → 1 → 2 → 2 → 1 → 3 → OK
a c c
acc : 1 → 2 → 1 → PAS OK
a b b c $
abbc : 1 → 2 → 2 → 2 → 1 → PAS OK

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 10 / 25


Évaluation d’expression régulières

Trois étapes
Transformation RE → NFA
Transformation NFA → DFA
Évaluation du DFA

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 11 / 25


Transformation d’expression régulières →
NFA

Atome (caractère ou ε)
a
a
1 2

Concaténation
ab
a b
1 2 3

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 12 / 25


Transformation d’expression régulières →
NFA
Alternation
a|b
a
ε 1 2 ε
0 ε ε 5
b
3 4

Étoile
a*
ε
1 a 2
ε
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 13 / 25
RE → NFA : Exercice 1

Écrire le NFA de l’expression régulière


b*ab*ab*

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 14 / 25


RE → NFA : Exercice 1

Écrire le NFA de l’expression régulière


b*ab*ab*

Solution
ε ε ε
b a b a b
1 2 3 4 5 6
ε ε
ε

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 14 / 25


RE → NFA : Exercice 2

Écrire le NFA de l’expression régulière


((a*|b*)c)*

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 15 / 25


RE → NFA : Exercice 2

Écrire le NFA de l’expression régulière


((a*|b*)c)*

Solution
ε
ε
2 a 3
ε ε ε
c
1 6 7
ε ε ε

4 b 5
ε
ε

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 15 / 25


RE → NFA : Exercice 3

Écrire le NFA de l’expression régulière


a(bc)?d

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 16 / 25


RE → NFA : Exercice 3

Écrire le NFA de l’expression régulière


a(bc)?d ≡ a(bc|)d

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 16 / 25


RE → NFA : Exercice 3

Écrire le NFA de l’expression régulière


a(bc)?d ≡ a(bc|)d

Solution
b c
3 4 5
ε ε
a d
1 2 ε 8 9
ε
ε
6 7

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 16 / 25


Transformation NFA → DFA

Idée
Simuler en parallèle tous les chemins
⇒ un état du DFA ≈ n états du NFA.

Risque
Au pire, DFA exponentiellement plus grand que NFA
Mais suffisamment rare en pratique

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 17 / 25


Outils sur les NFA

εfermeture(E )
L’ensemble des états atteignable par 0, 1, ou plusieurs
transitions ε à partir d’un état de E .

trans(E , c)
L’ensemble des états atteignable par une seule transition c à
partir d’un état de E .

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 18 / 25


Outils sur les NFA : Exercice
Soit le NFA

4 a
ε a
a
ε a
1 2 3
a ε

Déterminer F = εfermeture(E ) et T = trans(E , a) pour les


ensembles E suivants
E = {1}
E = {1, 2}
E = {3}
E = {4}

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 19 / 25


Outils sur les NFA : Exercice
Soit le NFA

4 a
ε a
a
ε a
1 2 3
a ε

Déterminer F = εfermeture(E ) et T = trans(E , a) pour les


ensembles E suivants
E = {1} : F = {1, 2, 3} ; T = {4}
E = {1, 2} : F = {1, 2, 3} ; T = {1, 3, 4}
E = {3} : F = {3} ; T = {3, 4}
E = {4} : F = {2, 3, 4} ; T = ∅

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 19 / 25


NFA → DFA : Algorithme
Données : Un NFA N
Résultat : Un DFA D définissant le même langage que N
E = εfermeture(depart(N));
ajouter E comme état de départ de D (sans le marquer);
tant que un état E de D est non marqué faire
marquer E ;
pour chaque caractère c de l’alphabet faire
F = εfermeture(trans(E , c));
si F n’est pas un état de D alors
ajouter l’état F à D (sans le marquer);
si un élément de F est un état d’acceptation de N alors
F est un état d’acceptation de D
fin
c
ajouter la transition E → F à D;
fin
fin
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 20 / 25
NFA → DFA : Exercice 1

Transformer en DFA le NFA


ε ε ε
b a b a b
1 2 3 4 5 6
ε ε
ε

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 21 / 25


NFA → DFA : Exercice 1

Transformer en DFA le NFA


ε ε ε
b a b a b
1 2 3 4 5 6
ε ε
ε

Solution
b b b

a a
1,2 3,4 5,6

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 21 / 25


NFA → DFA : Exercice 2

Transformer en DFA le NFA


ε
ε
2 a 3
ε ε ε
c
1 6 7
ε ε ε

4 b 5
ε
ε

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 22 / 25


NFA → DFA : Exercice 2

Solution
a

c
a 2,3,6

1,2, c
3,4,5, b
6,7 b
c 4,5,6

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 23 / 25


NFA → DFA : Exercice 3
Transformer en DFA le NFA
b c
3 4 5
ε ε
a d
1 2 ε 8 9
ε
ε
6 7

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 24 / 25


NFA → DFA : Exercice 3
Transformer en DFA le NFA
b c
3 4 5
ε ε
a d
1 2 ε 8 9
ε
ε
6 7

Solution
d
a 2,3,6,
1 b d 9
7,8
c
4 5,8

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 24 / 25


Autres algorithmes pratiques
Minimisation DFA
La même chose avec moins d’états
Théorème : DFA minimum unique
Corollaire : Permet de déterminer l’équivalence d’expressions
régulières

DFAisation paresseuse
Construire et évaluer le DFA en même temps

Transformation DFA → Expression régulière


Prouve l’égalité de la classe de langages
Pas forcément utile en pratique

Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 25 / 25

Das könnte Ihnen auch gefallen