La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.

Présentations similaires


Présentation au sujet: "IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313."— Transcription de la présentation:

1 IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313 Minimisation dun AFD

2 IFT313© Froduald Kabanza2 Objectifs Savoir minimiser la taille (nombre détats) dun AFD.

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

4 IFT313© Froduald Kabanza4 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). Cest avec lAFD que lon reconnaît les tokens décrits par des expressions régulières.

5 IFT313© Froduald Kabanza5 Pourquoi minimiser un AFD? LAFD 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 despace en mémoire

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

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

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

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

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

11 IFT313© Froduald Kabanza11 Algorithme pour enlever les états inaccessibles Entrée : automate M=(S, A, s 0, T, F) Sortie : automate M=(S, A, s 0, T, F) RetirerÉtatsInaccessibles() open = {s0} tant que open nest 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, s 0, T, F)

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

13 IFT313© Froduald Kabanza13 Équivalence des états Les états s i et s j sont équivalents Les états s m et s n sont équivalents sisi smsm a sksk sjsj snsn a,b b a b

14 IFT313© Froduald Kabanza14 Équivalence des états

15 IFT313© Froduald Kabanza15 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(n 2 ).

16 IFT313© Froduald Kabanza16 Déterminer les classes déquivalence dun AFD Nous avons vu que deux états dans dun AFN M sont équivalents (indistinguable) si et seulement si lexécution de M à partir des deux états accepte exactement les mêmes mots. À linverse, deux états sont non équivalents (distinguables) sil existe un mot u, tel que lexécution de M sur u est rejeté à partir dun des états (c.à-d., termine dans un état non accepteur ) et est accepté à partir de lautre (c.à-d., termine dans un état accepteur). On peut montrer que si tous les états dun AFD M sont atteignables, alors M est minimal si et seulement si tous les paires détats dans M sont distinguable.

17 IFT313© Froduald Kabanza17 Déterminer les classes déquivalence dun AFD Lalgorithme pour déterminer les classes déquivalence dun AFD –Commence dabord par déterminer les paires détats distinguables de lAFD –Les classes déquivalence de lAFD sont ensuite obtenus facilement.

18 IFT313© Froduald Kabanza18 Paire détats distinguables

19 IFT313© Froduald Kabanza19 Algorithme Minimiser AFD Entrée : Un AFD M=(S,A,T,s 0,F) Sortie : Un AFD minimal Méthode : Enlever les états inaccessibles // Marquer les paires détats {(s i,s j ) Marquer les paires (s i, s j ) tel que s i est dans F et s j nest pas dans F Répéter Pour toute paire non marquée (s i, s j ) Pour chaque symbole a de A si la paire (T(s i,a), T(s j,,a)) est marquée alors marquer la paire (s i, s j ) Jusquà ce quaucune nouvelle paire nest marquée // À cet étape, les paires détats non marquées sont équivalents Combiner les états équivalents

20 IFT313© Froduald Kabanza20 Exemple a a b 4 b 5 a 6 a 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 3xx 4x 5x 6xxxx 0x b

21 IFT313© Froduald Kabanza21 Exemple a a b 4 b 5 a 6 a 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. b 1 2x 3xx 4x 5x 6xxxx 0x

22 IFT313© Froduald Kabanza22 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 a a b 4 b 5 a 6 a b 1 2x 3xx 4x 5xx 6xxxx 0x

23 IFT313© Froduald Kabanza23 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é a a b 4 b 5 a 6 a b 1 2x 3xx 4x 5xxx 6xxxx 0x

24 IFT313© Froduald Kabanza24 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 a a b 4 b 5 a 6 a b 1 2x 3xx 4xx 5xxx 6xxxx 0x

25 IFT313© Froduald Kabanza25 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. Cest le cas des paires (2,5) et (3,6) a a b 4 b 5 a 6 a b 1 2x 3xx 4xxx 5xxx 6xxxx 0xxxxxx

26 IFT313© Froduald Kabanza26 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 lensemble des états s, tel que la paire (s,s) nest pas marquée. Les classes déquivalences sont les états de lautonomate minimisé. Létat initiale [s0] est la classe de s0. Létats finaux sont les classes [s] contenant un état final de lautomate dorigine. La fonction de transition est définie comme suit: T([s],a)=[T(s,a)]

27 IFT313© Froduald Kabanza27 Automate minimal Classes déquivalence = { {1}, {2,5}, {3,6}, {4} {0} } a a b 4 b 5 a 6 a b {1} {4} b {2,5} a a {3,6} b a 1 2x 3xx 4xxx 5xxx 6xxxx 0xxxxxx

28 IFT313© Froduald Kabanza28 Résumé Pour minimiser un AFD, il faut dabord enlever les états inaccessibles. Ensuite, appliquer la définition inductive dune paire détats distinguables pour marquer toutes les paires indistinguables: –s i et s j sont distinguables ssi s i est dans F et s j nest pas dans F ou vice versa, ou Il existe a dans A tel que T(s i, a) et T(s j, a) sont distinguable À la fin du marquage, les paires détats non marquées sont indistinguables. LAFD minimal correspond aux classes déquivalence définies par les paires indistinguables: –La classe dun état s, [s], est lensemble des états s, tel que la paire (s,s) est indistinguable de s.

29 IFT313© Froduald Kabanza29 Vous devriez être capable de … Programmer un outil de génération danalyseurs 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 lapproche : 1.Convertir les expressions en un AFN 2.Convertir lAFN en AFD 3.Minimiser lAFD 4.Le programme retourné est le simulateur de lAFD (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 lanalyse syntaxique LR.

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


Télécharger ppt "IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313."

Présentations similaires


Annonces Google