Chapitre 3 Évaluation des expressions régulières et ...

Post on 20-Jun-2022

7 views 0 download

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

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

ε

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

ε

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

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

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

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

ε

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

ε

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

ε

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

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

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