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+ Jean Privat (UQAM) 0110010 ? 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 b 1 Jean Privat (UQAM) a ε 2 03—Automate fini a 3 INF5000 — Automne 2013 6 / 25 Automate fini déterministe (DFA) Règles Au plus un arc sortant pour une étiquette Pas d’étiquette ε b b 1 Jean Privat (UQAM) a c 2 03—Automate fini a 3 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 b 1 a c 2 a 3 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 b 1 a c 2 a 3 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 1 a 2 Concaténation ab 1 Jean Privat (UQAM) a 2 03—Automate fini b 3 INF5000 — Automne 2013 12 / 25 Transformation d’expression régulières → NFA Alternation a|b ε 0 1 ε 3 Étoile a* a b 2 ε ε 5 4 ε 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 ε 1 b ε Jean Privat (UQAM) ε 2 a 3 b ε 03—Automate fini 4 a 5 ε b ε INF5000 — Automne 2013 6 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 ε ε 1 2 ε 4 ε a ε ε b ε 3 ε ε 6 c 7 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 ε 1 a 2 3 b c ε 5 ε 6 Jean Privat (UQAM) 4 ε 03—Automate fini ε 8 d 9 7 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 1 ε a a 2 a a ε 3 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 1 ε a a 2 a a ε 3 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 ε 1 b ε Jean Privat (UQAM) ε 2 a 3 b ε 03—Automate fini 4 a 5 ε b ε INF5000 — Automne 2013 6 21 / 25 NFA → DFA : Exercice 1 Transformer en DFA le NFA ε 1 b ε a 2 3 b a 4 5 ε ε ε b ε 6 Solution b 1,2 Jean Privat (UQAM) b b a 3,4 03—Automate fini a 5,6 INF5000 — Automne 2013 21 / 25 NFA → DFA : Exercice 2 Transformer en DFA le NFA ε ε 1 2 ε 4 ε a ε ε b ε 3 ε ε 6 c 7 5 ε Jean Privat (UQAM) 03—Automate fini INF5000 — Automne 2013 22 / 25 NFA → DFA : Exercice 2 Solution a c a 1,2, 3,4,5, 6,7 c b c Jean Privat (UQAM) 03—Automate fini 2,3,6 b 4,5,6 INF5000 — Automne 2013 23 / 25 NFA → DFA : Exercice 3 Transformer en DFA le NFA ε 1 a 2 3 b c ε 5 ε 6 Jean Privat (UQAM) 4 ε 03—Automate fini ε 8 d 9 7 INF5000 — Automne 2013 24 / 25 NFA → DFA : Exercice 3 Transformer en DFA le NFA ε a 1 2 3 b c 4 5 ε ε ε 6 d 8 ε 9 7 Solution 1 a 2,3,6, 7,8 d b 4 Jean Privat (UQAM) 03—Automate fini c d 9 5,8 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