IFT313 Introduction aux langages formels

Slides:



Advertisements
Présentations similaires
Algorithmes et structures de données avancés
Advertisements

Les Structures de contrôles itératives
Chap 1 Grammaires et dérivations.
Introduction : Compilation et Traduction
Automate asynchrone.
Expressions rationnelles
Chapitre 1 Automates finis
IFT 702 – Planification en Intelligence Artificielle Planification avec des processus de décision de Markov Froduald Kabanza Département d’informatique.
IFT313 Introduction aux langages formels
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
IFT 615 – Intelligence artificielle Recherche heuristique locale
IFT313 Introduction aux langages formels
IFT 615 – Intelligence Artificielle Introduction
Introduction à l'informatique linguistique
IFT313 – Introduction aux langages formels Eric Beaudry Département dinformatique Université de Sherbrooke Laboratoire 4 – JFlex Été 2010.
IFT313 Introduction aux langages formels
Circuits équivalents de Thévenin et de Norton
IFT 702 – Planification en intelligence artificielle Extraction automatique d’heuristiques à partir d’un modèle Froduald Kabanza Département d’informatique.
IFT313 Introduction aux langages formels
IFT 615 – Intelligence artificielle Agents intelligents
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
Analyse lexicale Généralités Expressions rationnelles Automates finis
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
IFT451 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
IFT313 Introduction aux langages formels
IFT 615 – Intelligence Artificielle Satisfaction de contraintes
I.A. Session 2009/2010 E.P.S.I. Bordeaux – C.S.I.I – 2 ème Année – Cours n°3.
Froduald Kabanza Département d’informatique Université de Sherbrooke
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels
Structures de données IFT-2000
IFT 615 – Intelligence Artificielle Satisfaction de contraintes
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Révision de mi-session.
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke JavaCC.
IFT313 Révision finale Département d’informatique
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Grammaires attribuées.
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Analyseurs récursifs LL (1)
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Automates à pile LR Notion de poignée.
IFT 702 – Planification en intelligence artificielle Transformations Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift702.
Froduald Kabanza Département d’informatique Université de Sherbrooke
IFT313Froduald Kabanza1 IFT 313 Lab 1 1Écrivez une expression régulière pour chacun des langues suivants: a)Des mots sur lalphabet {a,b,c} telle que toute.
Expressions régulières et hash tables
Semaine #1 INF135 par Frédérick Henri.
IFT Complexité et NP-complétude
1 CSI3525: Concepts des Languages de Programmation Notes # 3: Description Syntaxique des Languages.
Chapitre 7: Le théorème de Kleene
Hiver 2003SEG2501 analyse lexicale1 Notes supplémentaires au sujet de lanalyse lexicale Exemples Dérivation dun NFA qui accepte le même langage (algorithme:
Chapitre 3 Syntaxe et sémantique.
IFT313 – Introduction aux langages formels Éric Beaudry Exercices Expressions régulières, ADF et AFN Été 2010.
Séance d’introduction
Rappel Modèle analyse-synthèse de la compilation
Indécidabilité.
Analyse des Algorithmes
IFT Complexité et NP-complétude Chapitre 0 Rappels.
Paradigmes des Langages de Programmation
Les machines de Turing Lionel Blavy Sébastien Giraud Fabien Tricoire
IFT 702 – Planification en intelligence artificielle Planification par recherche dans un espace de plans Froduald Kabanza Département d’informatique Université.
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
Recherche par automates finis
Les transducteurs En anglais transducers.
Abdelkader Heni FUNDP Syntaxe et sémantique Abdelkader Heni FUNDP

Chap 1 Grammaires et dérivations.
Algorithme de DIJKSTRA
IFT313 IFT313 Introduction aux langages formels Froduald Kabanza Département d’informatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
Transcription de la présentation:

IFT313 Introduction aux langages formels Froduald Kabanza Département d’informatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313 Minimisation d’un AFD

Objectifs Savoir minimiser la taille (nombre d’états) d’un AFD. IFT313 © Froduald Kabanza

Références [1] Sudkamp, T. A.. Languages and Machines. Third Edition Edition. Addison-Wesley, 2005. Section 5.7. [4] Aho, A., Lam, M., Sethi R., Ullman J. Compilers: Principles, Techniques, and Tools, 2nd Edition. Addison Wesley, 2007. Sections 3.9.6 IFT313 © Froduald Kabanza

Rappels Un langage régulier définit un ensemble fini ou infini des chaînes de symboles (caractères). Pour un langage régulier r, il existe un AFD M tel que r = L(M). C’est avec l’AFD que l’on reconnaît les tokens décrits par des expressions régulières. IFT313 © Froduald Kabanza

Pourquoi minimiser un AFD? L’AFD obtenu par la méthode vue dans la leçon précédente peut ne pas être optimal. Deux AFD sont équivalents si et seulement si elles acceptent le même langage. Pour chaque AFD, il existe un AFD équivalent avec le plus petit nombre d’états: Sa table de transitions prend moins d’espace en mémoire L’objectif de la minimisation d’un AFD est d’avoir une plus petite table de transitions, c-à-d., d’avoir un analyseur lexical qui prend peu d’espace en mémoire puisque le pilote d’un analyseur lexical n’est rien d’autre que l’AFD. IFT313 © Froduald Kabanza

Exemple : Deux AFD équivalents 2 3 a a 2 3 b a 1 b 1 a a a b 4 5 6 b 4 b 7 a 8 b Expression régulière : b?(ab)+ Expressions régulières : a(ba)*b | ba(ba)*b a(ba)*b | (ba)+b (ab)+ | b (ab)+ b?(ab)+ a(ba)*b | ba(ba)*b a(ba)*b | (ba)+b (ab)+ | b (ab)+ b?(ab)+ IFT313 © Froduald Kabanza

Exemple : Deux AFD équivalents 2 3 a a b 2 3 a 1 b a 1 a b 4 5 6 a a b b 4 5 6 a a b b 7 8 b Les états {7,8} sont inaccessibles; On peut les enlever. IFT313 © Froduald Kabanza

Exemple : Deux AFD équivalents 2,5 3,6 2 3 a b a b 1 a 1 b a 4 a b 4 5 6 a b 2 3 a b 1 a Les états {2,5} sont équivalents; Ils peuvent être fusionnés. Idem pour les états {3,6} b 4 IFT313 © Froduald Kabanza

Étapes pour minimiser un AFD Enlever les états inaccessibles Regrouper les états équivalents IFT313 © Froduald Kabanza

Étapes pour minimiser un AFD Enlever les états inaccessibles Regrouper les états équivalents IFT313 © Froduald Kabanza

Algorithme pour enlever les états inaccessibles Entrée : automate M=(S, A, s0, T, F) Sortie : automate M’=(S’, A, s0, T’, F’) RetirerÉtatsInaccessibles() open = {s0} tant que open n’est pas vide { prendre un état s  open open.remove(s) S’.add(s) si s  F alors F’.add(s) pour tout a  A { s’ = T(s, a) T’(s, a) = s’ si s’  S’ alors open.add(s’) } retourner M’=(S’, A, s0, T’, F’) Idée: parcourir le graphe de l’automate par une exploration exhaustive, à partir de l’état initial, en reconstruisant le nouvel automate. IFT313 © Froduald Kabanza

Étapes pour minimiser un AFD Enlever les états inaccessibles Regrouper les états équivalents IFT313 © Froduald Kabanza

Équivalence des états Les états si et sj sont équivalents a,b sm b si a,b a sk a a,b sj sn b Les états si et sj sont équivalents Les états sm et sn sont équivalents IFT313 © Froduald Kabanza

Équivalence des états Deux états dans d’un AFD M sont équivalents (indistinguable) si et seulement si pour chaque mot u, lorsque une exécution de M sur l’entrée u commence dans l’un ou l’autre des ces états, soit M accepte le mot dans les deux cas, soit il rejette le mot dans les deux cas. Formellement, étant donné un AFD M=(S,A,T,s0,F) et un mot u, notons 𝑇 (s,u) l’état dans lequel termine l’exécution de M sur u à partir de l’état s. C.-à.-d.: 𝑇 (s,u)= T(T(s0, u1), …, un)), avec u=u1u2…un Deux états si et sj sont équivalents (indistinguables) ssi pour chaque mot u, 𝑇 (si ,u) ϵ F ssi 𝑇 (sj,u) ϵ F C.-à.-d: à partir des deux états, l’AFD accepte exactement les mêmes mots. IFT313 © Froduald Kabanza

Propriétés Pour tout AFD M, on peut montrer que : Le nombre d’états dans un AFD minimal équivalent est le même que le nombre de classe d’équivalence de M [Myhill, 1957]. Les transitions entre les états équivalents respectent les transitions dans M Pour minimiser un AFD, il suffit donc de trouver ses classes d’équivalences. Il existe plusieurs algorithmes. Un des plus efficace est celui de [Hopcraft, 1971]: O(n log n). Mais il est compliqué. Ici on en voie un plus simple, mais moins efficace : O(n2). Myhill, J. Finite automata and the representation of events. WADD TR-57-624, Wright Patterson AFB, Ohio, 1957. Hopcroft, J. (1971) An N Log N Algorithm for Minimizing States in a Finite Automaton. Stanford University. L’algorithme que l’on voit ici est bien plus simple que celui décrit dans le manuel du cours (livre de référence). IFT313 © Froduald Kabanza

Déterminer les classes d’équivalence d’un AFD Nous avons vu que deux états dans d’un AFN M sont équivalents (indistinguable) si et seulement si l’exécution de M à partir des deux états accepte exactement les mêmes mots. À l’inverse, deux états sont non équivalents (distinguables) s’il existe un mot u, tel que l’exécution de M sur u est rejeté à partir d’un des états (c.à-d., termine dans un état non accepteur ) et est accepté à partir de l’autre (c.à-d., termine dans un état accepteur). On peut montrer que si tous les états d’un AFD M sont atteignables, alors M est minimal si et seulement si tous les paires d’états dans M sont distinguable. On peut montrer que si tous les états d’un AFD M sont atteignables, alors M est minimal si et seulement si tous les paires d’états dans M sont distinguable. Preuve : (=>). L’implication dans ce sens est facile à prouver. En effet, si M avait des états non distinguables, alors ils pourraient être combinés (c.-à-d., l’un d’entre eux pourrait être éliminé) sans changer le langage accepté. Donc M ne serait pas minimal. (<=): La preuve dans l’autre sens est plus intéressante. Voir http://www.informatik.uni-bremen.de/agbs/lehre/ss05/pi2/hintergrund/minimize_dfa.pdf. IFT313 © Froduald Kabanza

Déterminer les classes d’équivalence d’un AFD L’algorithme pour déterminer les classes d’équivalence d’un AFD Commence d’abord par déterminer les paires d’états distinguables de l’AFD Les classes d’équivalence de l’AFD sont ensuite obtenus facilement. IFT313 © Froduald Kabanza

Paire d’états distinguables Étant donné un AFD M=(S,A,T,s0,F) et un mot u, notons encore 𝑇 (s,u) l’état dans lequel termine l’exécution de M sur u à partir de s. Deux états si et sj sont distinguables si et seulement si il existe un mot u, tel que 𝑇 (si ,u) est dans F et 𝑇 (sj,u) 𝑛 ′ 𝑒𝑠𝑡 𝑝𝑎𝑠 𝑑𝑎𝑛𝑠 F ou tel que 𝑇 (si ,u) n’est pas est dans F et 𝑇 (sj,u) 𝑒𝑠𝑡 𝑑𝑎𝑛𝑠 F De façon inductive, deux états si et sj sont distinguables ssi si est dans F et sj n’est pas dans F ou vice versa, ou Il existe a dans A tel que T(si, a) et T(sj, a) sont distinguable. On peut calculer les états distinguables simplement en appliquant cette définition inductive. IFT313 © Froduald Kabanza

Algorithme Minimiser AFD Entrée : Un AFD M=(S,A,T,s0,F) Sortie : Un AFD minimal Méthode : Enlever les états inaccessibles // Marquer les paires d’états {(si,sj) Marquer les paires (si , sj ) tel que si est dans F et sj n’est pas dans F Répéter Pour toute paire non marquée (si , sj ) Pour chaque symbole a de A si la paire (T(si ,a) , T(sj,,a)) est marquée alors marquer la paire (si , sj ) Jusqu’à ce qu’aucune nouvelle paire n’est marquée // À cet étape, les paires d’états non marquées sont équivalents Combiner les états équivalents Cet algorithme commence par marquer les paires d’états distinguables. Ensuite, on fusionne les paires d’états non distinguables. Pour marquer les paires, créer un tableau triangulaire (i.e, utiliser seulement le haut ou le bas du tableau étant donnée la symétrie des paires d’états). L’état 0 est unique et est distinguable de tous les aurt IFT313 © Froduald Kabanza

Exemple Initialement: marquer les paires (état-final, état-non-final). Ici, les états 3 et 6 sont finaux et sont donc chacun distinguable de tous les autres états. Les transitions vers 0 ne sont pas dessinées! 1 2 3 x 4 5 6 1 2 3 a b 4 5 6 b IFT313 © Froduald Kabanza

Exemple Paire (1, 2) T(1, b) = 4 T(2, b) = 3 La paire (4,3) est marquée, alors (1,2) doit l’être aussi. 1 2 x 3 4 5 6 a 2 3 C’est à dire, (4,3) sont distinguables, alors (1,2) doit l’être aussi. a b 1 a a b 4 5 6 b IFT313 © Froduald Kabanza

Exemple Paire (1,5) T(1, b) = 4 T(5, b) = 6 La paire (4,6) est marquée, donc (1,5) doit l’être aussi. 1 2 x 3 4 5 6 1 2 3 a b 4 5 6 IFT313 © Froduald Kabanza

Exemple Paire (4,5) T(4, b) = 0 T(5, b) = 6 La paire (0,6) est marquée. Donc (4,5) doit être marqué. 1 2 x 3 4 5 6 1 2 3 a b 4 5 6 Se rappeler qu’à l’initialisation on marque toutes les paires (si,sj) tel que si est accepteur et sj est non accepteur ou vice-versa. En particulier, toute paire (0, si) tel que si est accepteur est marqué puisque 0 n’est jamais accepteur. Ici 6 est accepteur, donc (0,6) est marqué à l’initialisation. IFT313 © Froduald Kabanza

Exemple Paire (2,4) T(2, b) = 3 T(4, b) = 0 La paire (3,0) est marquée. Donc (2,4) doit être marquée. 1 2 x 3 4 5 6 1 2 3 a b 4 5 6 IFT313 © Froduald Kabanza

Exemple Ainsi de suite … Éventuellement, on arrive à une situation où aucune paire ne peut plus être marquée. À ce moment là, les paires restantes sont indistinguables. C’est le cas des paires (2,5) et (3,6). 1 2 x 3 4 5 6 1 2 3 a b 4 5 6 IFT313 © Froduald Kabanza

Combiner les états équivalents À la fin du marquage des états distinguables, chaque paire d’états non marquée est indistinguable. On obtient les classes d’équivalence comme suit: Pour chaque état s, la classe de s (notée [s]) est l’ensemble des états s’, tel que la paire (s,s’) n’est pas marquée. Les classes d’équivalences sont les états de l’autonomate minimisé. L’état initiale [s0] est la classe de s0. L’états finaux sont les classes [s] contenant un état final de l’automate d’origine. La fonction de transition est définie comme suit: T([s],a)=[T(s,a)] IFT313 © Froduald Kabanza

Classes d’équivalence Automate minimal 1 2 3 a b 4 5 6 1 2 x 3 4 5 6 {1} {4} b {2,5} a {3,6} Classes d’équivalence = { {1}, {2,5}, {3,6}, {4} {0} } IFT313 © Froduald Kabanza

Résumé Pour minimiser un AFD, il faut d’abord enlever les états inaccessibles. Ensuite, appliquer la définition inductive d’une paire d’états distinguables pour marquer toutes les paires indistinguables: si et sj sont distinguables ssi si est dans F et sj n’est pas dans F ou vice versa, ou Il existe a dans A tel que T(si, a) et T(sj, a) sont distinguable À la fin du marquage, les paires d’états non marquées sont indistinguables. L’AFD minimal correspond aux classes d’équivalence définies par les paires indistinguables: La classe d’un état s, [s], est l’ensemble des états s’, tel que la paire (s,s’) est indistinguable de s. IFT313 © Froduald Kabanza

Vous devriez être capable de … Programmer un outil de génération d’analyseurs lexicaux Un tel générateur reçoit en entrée des expressions régulières (décrivant des token) Il retourne un programme (Java, C++, etc.) capable de reconnaître les token Résumé de l’approche : Convertir les expressions en un AFN Convertir l’AFN en AFD Minimiser l’AFD Le programme retourné est le simulateur de l’AFD (en mode reconnaissance de token) Il est possible de combiner les étapes 1 et 2. La technique utilisée pour convertir un AFN en AFD reviendra plus tard lorsque nous verrons l’analyse syntaxique LR. IFT313 © Froduald Kabanza

Prochaine leçon JFLEX : un outil de génération des analyseurs lexicaux. IFT313 © Froduald Kabanza