Chapitre 3 Évaluation des expressions régulières et ...
Transcript of Chapitre 3 Évaluation des expressions régulières et ...
Chapitre 3Evaluation des expressions regulieres
et automates finis
Jean Privat
Universite du Quebec a Montreal
INF5000 — Theorie et construction des compilateursAutomne 2013
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 1 / 25
Evaluation d’une expression reguliere
Soit une expression reguliere definissant un langage
Une chaıne appartient-elle au langage ?
Rechercher les sous-chaınes appartenant au langage ?
Questions non triviales
Meme pour un ordinateur
0110010 ?a?b*c+
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 2 / 25
Evaluation d’une expression reguliere
Soit une expression reguliere definissant un langage
Une chaıne appartient-elle au langage ?
Rechercher les sous-chaınes appartenant au langage ?
Questions non triviales
Meme pour un ordinateur
0110010 ?a?b*c+
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 2 / 25
Approche naıve
Comment evaluer ?a*ba*ba*
(ab|b)*a?
Les langages sont-ils les memes ?
a+ba*|a*ba+
a+ba+|a+b|ba+
Quel est l’expression reguliere la plus rapide a evaluer ?
Qu’est-ce qui impacte les performances ?
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 3 / 25
Approche naıve
Comment evaluer ?a*ba*ba*
(ab|b)*a?
Les langages sont-ils les memes ?
a+ba*|a*ba+
a+ba+|a+b|ba+
Quel est l’expression reguliere la plus rapide a evaluer ?
Qu’est-ce qui impacte les performances ?
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 3 / 25
Approche naıve
Comment evaluer ?a*ba*ba*
(ab|b)*a?
Les langages sont-ils les memes ?
a+ba*|a*ba+
a+ba+|a+b|ba+
Quel est l’expression reguliere la plus rapide a evaluer ?
Qu’est-ce qui impacte les performances ?
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 3 / 25
Outils necessaires
Structures de donnees
Automates finis
Algorithmes
Transformation d’automates
Evaluation d’automates
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 4 / 25
Automate = Graphe
Transitions = arcs
Orientes
Etiquetes par un caractere de l’alphabet ou par ε (epsilon)
Etats = nœuds
Un etat de depart
Un ensemble d’etats d’acceptation (eventuellement vide)
Automate fini
Nombre fini d’etats (et de transitions)
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 5 / 25
Automate fini non deterministe (NFA)
Regle : pas de regle
Pas de restriction sur les etiquettes des arcs
1 3
a
2a
ε
a
b
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 6 / 25
Automate fini deterministe (DFA)
Regles
Au plus un arc sortant pour une etiquette
Pas d’etiquette ε
1 3
b
2a
c
a
b
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 7 / 25
Langages reguliers
NFA et DFA definissent un langage
L’ensemble des chemins partant d’un etat de depart vers un etatd’acceptation
NFA, DFA et expression regulieres
Reconnaissent la meme classe de langages :⇒ les langages reguliers
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 8 / 25
Evaluation d’automates
Soit un automate fini definissant un langage
Une chaıne appartient-elle au langage ?
Facile
Il suffit de trouver un chemin
Encore plus facile avec un DFA (algorithme lineaire)
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 9 / 25
Evaluation d’automates : Exercice
Soit le DFA
1 3
b
2a
c
a
b
Quelles chaınes sont reconnues parmi
aa
: 1a→ 2
a→ 3$→ OK
acabcb
: 1a→ 2
c→ 1a→ 2
b→ 2c→ 1
b→ 3$→ OK
acc
: 1a→ 2
c→ 1c→ PAS OK
abbc
: 1a→ 2
b→ 2b→ 2
c→ 1$→ PAS OK
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 10 / 25
Evaluation d’automates : Exercice
Soit le DFA
1 3
b
2a
c
a
b
Quelles chaınes sont reconnues parmi
aa : 1a→ 2
a→ 3$→ OK
acabcb : 1a→ 2
c→ 1a→ 2
b→ 2c→ 1
b→ 3$→ OK
acc : 1a→ 2
c→ 1c→ PAS OK
abbc : 1a→ 2
b→ 2b→ 2
c→ 1$→ PAS OK
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 10 / 25
Evaluation d’expression regulieres
Trois etapes
Transformation RE → NFA
Transformation NFA → DFA
Evaluation du DFA
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 11 / 25
Transformation d’expression regulieres →NFA
Atome (caractere ou ε)
a
1 2a
Concatenationab
1 2a 3b
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 12 / 25
Transformation d’expression regulieres →NFAAlternation
a|b
0
1ε
3
ε
2a
4b5
ε
ε
Etoilea*
1 2
ε
a
ε
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 13 / 25
RE → NFA : Exercice 1
Ecrire le NFA de l’expression reguliere
b*ab*ab*
Solution
1 2
ε
b
ε
3a 4
ε
b
ε5a 6
εb
ε
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 14 / 25
RE → NFA : Exercice 1
Ecrire le NFA de l’expression reguliere
b*ab*ab*
Solution
1 2
ε
b
ε
3a 4
ε
b
ε5a 6
εb
ε
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 14 / 25
RE → NFA : Exercice 2
Ecrire le NFA de l’expression reguliere
((a*|b*)c)*
Solution
1 7
ε
2ε
4
ε
ε
3
εaε
6
ε
5
εbε
ε
c
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 15 / 25
RE → NFA : Exercice 2
Ecrire le NFA de l’expression reguliere
((a*|b*)c)*
Solution
1 7
ε
2ε
4
ε
ε
3
εaε
6
ε
5
εbε
ε
c
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 15 / 25
RE → NFA : Exercice 3
Ecrire le NFA de l’expression reguliere
a(bc)?d
≡ a(bc|)d
Solution
1 2a
3ε
6
ε
4b 5c
8
ε
9d
7εε
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 16 / 25
RE → NFA : Exercice 3
Ecrire le NFA de l’expression reguliere
a(bc)?d ≡ a(bc|)d
Solution
1 2a
3ε
6
ε
4b 5c
8
ε
9d
7εε
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 16 / 25
RE → NFA : Exercice 3
Ecrire le NFA de l’expression reguliere
a(bc)?d ≡ a(bc|)d
Solution
1 2a
3ε
6
ε
4b 5c
8
ε
9d
7εε
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 16 / 25
Transformation NFA → DFA
Idee
Simuler en parallele tous les chemins⇒ un etat du DFA ≈ n etats 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 etats atteignable par 0, 1, ou plusieurstransitions ε a partir d’un etat de E .
trans(E , c)
L’ensemble des etats atteignable par une seule transition c apartir d’un etat de E .
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 18 / 25
Outils sur les NFA : Exercice
Soit le NFA
1
4
a
2ε
ε
a3a
ε
a a
Determiner F = εfermeture(E ) et T = trans(E , a) pour lesensembles 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
Outils sur les NFA : Exercice
Soit le NFA
1
4
a
2ε
ε
a3a
ε
a a
Determiner F = εfermeture(E ) et T = trans(E , a) pour lesensembles 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 : AlgorithmeDonnees : Un NFA NResultat : Un DFA D definissant le meme langage que NE = εfermeture(depart(N));ajouter E comme etat de depart de D (sans le marquer);tant que un etat E de D est non marque faire
marquer E ;pour chaque caractere c de l’alphabet faire
F = εfermeture(trans(E , c));si F n’est pas un etat de D alors
ajouter l’etat F a D (sans le marquer);si un element de F est un etat d’acceptation de N alorsF est un etat d’acceptation de D
fin
ajouter la transition Ec→ F a D;
fin
finJean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 20 / 25
NFA → DFA : Exercice 1
Transformer en DFA le NFA
1 2
ε
b
ε
3a 4
ε
b
ε5a 6
εb
ε
Solution
1,2
b
3,4a
b
5,6a
b
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 21 / 25
NFA → DFA : Exercice 1
Transformer en DFA le NFA
1 2
ε
b
ε
3a 4
ε
b
ε5a 6
εb
ε
Solution
1,2
b
3,4a
b
5,6a
b
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 21 / 25
NFA → DFA : Exercice 2
Transformer en DFA le NFA
1 7
ε
2ε
4
ε
ε
3
εaε
6
ε
5
εbε
ε
c
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 22 / 25
NFA → DFA : Exercice 2
Solution
1,2,
3,4,5,6,7
c2,3,6a
4,5,6
b
c
a
c
b
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 23 / 25
NFA → DFA : Exercice 3
Transformer en DFA le NFA
1 2a
3ε
6
ε
4b 5c
8
ε
9d
7εε
Solution
12,3,6,
7,8a 9
d
4b
5,8cd
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 24 / 25
NFA → DFA : Exercice 3
Transformer en DFA le NFA
1 2a
3ε
6
ε
4b 5c
8
ε
9d
7εε
Solution
12,3,6,
7,8a 9
d
4b
5,8cd
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 24 / 25
Autres algorithmes pratiques
Minimisation DFA
La meme chose avec moins d’etats
Theoreme : DFA minimum unique
Corollaire : Permet de determiner l’equivalence d’expressionsregulieres
DFAisation paresseuse
Construire et evaluer le DFA en meme temps
Transformation DFA → Expression reguliere
Prouve l’egalite de la classe de langages
Pas forcement utile en pratique
Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 25 / 25