AFD AFN Opértions Lemme de pompge 1/ 36 Théorie des Lngges Épisode 2 Automtes finis Thoms Pietrzk Université Pul Verline Metz
AFD AFN Opértions Lemme de pompge Reconnisseur Définition Configurtion Accepttion 2/ 36 Reconnisseur Une tâche principle dns l nlyse lexicle et syntxique est de décider soit pour une unité lexicle soit pour un progrmme si cette entrée est «un mot du lngge» décrit pr soit une expression régulière r soit une grmmire hors contexte G. Il fut lors un reconnisseur pour un lngge L. C est un progrmme qui prend en entrée un mot m et répond «oui» si m L et «non» utrement. Automte fini On compile une expression régulière en un reconnîsseur en construisnt un digrmme de trnsition générlisé. Le modèle de mchine correspondnt est ppelé utomte fini. Les utomtes finis, ussi ien déterministes que non déterministes sont cples de reconnître précisément les lngges réguliers.
AFD AFN Opértions Lemme de pompge Reconnisseur Définition Configurtion Accepttion 3/ 36 Automte fini Déterministe Un utomte fini déterministe (AFD) est défini pr A = (E, Σ, δ, e 0, F ) où E est un ensemle fini d étts Σ est un ensemle fini de symoles d entrée δ : E Σ E est une fonction de trnsition e 0 est un étt de déprt F E est l ensemle des étts d ccepttion
AFD AFN Opértions Lemme de pompge Reconnisseur Définition Configurtion Accepttion 4/ 36 Voici un utomte pour l expression régulière ( ) A = ({e 0, e 1, e 2, e 3 }, {, }, δ, e 0, {e 3 }) où δ est défini pr : Symole d entrée Étt 0 1 0 1 1 2 2 1 3 3 1 0 Représenttion schémtique : déut 0 1 2 3 s de chînes reconnues :,,,
AFD AFN Opértions Lemme de pompge Reconnisseur Définition Configurtion Accepttion 5/ 36 Configurtion Une configurtion d un utomte est une description complète de l sitution de l utomte. On note (m, e) vec m le mot qui reste sur l nde et e l étt cournt. (m, e 0 ) est une configurtion de déprt, vec m l entrée. (ɛ, e), vec e F est une configurtion finle. (u, e) A (u, e ) δ(e, ) = e où Σ, u Σ et e, e E. Configurtion suivnt Une configurtion K d un utomte A est une configurtion suivnt de K, noté K A K, s il y une suite K = K 0, K 1,..., K r = K telle que K i A K i+1 pou chque i {0, 1,..., r 2}.
AFD AFN Opértions Lemme de pompge Reconnisseur Définition Configurtion Accepttion 6/ 36 Accepttion Un utomte fini lit l entrée une seule fois en pssnt l tête de lecture de guche à droite sns se retourner. L utomte ccepte un mot s il rrive dns un étt d ccepttion près voir lu le mot u totl. Définition Le lngge L est ccepté pr un AFD A si L est défini pr L = L(A) = {m Σ (m, e 0 ) A (ɛ, e), e F } A = ({e 0, e 1 }, {, }, δ, e 0, {e 0 }) L(A) = { n n N} δ e 0 e 0 e 1 e 1 e 1 e 1
AFD AFN Opértions Lemme de pompge Définition Accepttion Grphe 7/ 36 Automte fini Non Déterministe Un utomte fini non déterministe (AFN) est défini pr A = (E, Σ, δ, e 0, F ) où E est un ensemle fini d étts Σ est un ensemle fini de symoles d entrée δ (E Σ) E est une reltion de trnsition e 0 est un étt de déprt F E est l ensemle des étts d ccepttion Au contrire d un AFD, une trnsition d un AFN δ(e, ) peut voir plusieurs vleurs : δ(e, ) Z. En conséquence, pour un AFN A une configurtion suivnt n est plus uniquement déterminée : (u, e) A (u, e ) e δ(e, ) où Σ, u Σ et e, e E.
AFD AFN Opértions Lemme de pompge Définition Accepttion Grphe 8/ 36 En reprennt l expression régulière ( ) A = ({e 0, e 1, e 2, e 3 }, {, }, δ, e 0, {e 3 }) où δ est défini pr : Symole d entrée Étt 0 {0, 1} {0} 1 {2} 2 {3} Représenttion schémtique : déut 0 1 2 3 s de chînes reconnues :,,,
AFD AFN Opértions Lemme de pompge Définition Accepttion Grphe 9/ 36 Accepttion Le lngge L est ccepté pr un AFN A si L est défini pr L = L(A) = {m Σ (m, e 0 ) A (ɛ, e), e F } On voit fcilement que pr définition chque AFD est ussi un AFN. D utre prt, générlement un AFN n est ps toujours un AFD.
AFD AFN Opértions Lemme de pompge Définition Accepttion Grphe 10/ 36 Grphe de trnsition L fonction de trnsition d un AFD ou l reltion de trnsition d un AFN peuvent être représentées pr un grphe orienté ppelé grphe de trnsition. Les noeuds du grphe sont les étts de l utomte et les rcs sont étiquetés comme suit il y un rc (e, e ) étiqueté Σ si et seulement si δ(e, ) = e dns un AFD ou e δ(e, ) dns un AFN. il y des rcs multiples (e, e ) dns le grphe de trnsition si e δ(e, ) pour plusieurs crctères Σ. δ(e 0, ) = e 1 δ(e 0, ) = e 1 δ(e 1, ) = e 2 δ(e 1, ) = e 2 F = {e 1 } δ(e 2, ) = e 1 δ(e 2, ) = e 1 0, 1,, 2
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 11/ 36 Construire un AFN à prtir d une expression régulière Pour toute expression régulière r on peut construire un AFN qui reconnît le même lngge. On construit l utomte pr induction sur l syntxe : ɛ ɛ R 1 R 2 R 1 R 2 R 1 ɛ R 2 R 1 ɛ ɛ ɛ ɛ R 2 R 1 ɛ ɛ R 1 ɛ ɛ
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 12/ 36 L expression régulière ( ) peut s écrire sous l forme d un AFN : ɛ ɛ ɛ ɛ ɛ ɛ ɛ ɛ
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 13/ 36 Théorème de Rin et Scott Pour tout AFN A il existe un AFD A tel que L(A) = L(A ). Démonstrtion Soit A = (E, Σ, δ, e 0, F ) un AFN. On construit un AFD A = (E, Σ, δ, e 0, F ) comme suit : E := P(E) e 0 := {e 0} F := {X E X F } Pour tout X E et tout Σ : δ (X, ) := x X δ(x, ) Pour démontrer que l construction est correcte il fut montrer que L(A) = L(A ).
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 14/ 36 Algorithme Initilistion : E := {{e 0 }}, T := {{e 0 }} Tnt que T Choisir un élément S T Pour tout symole Σ Clculer l étt S = S e S δ(e, ) Si S c est ps déjà dns E, l jouter dns T et dns E Ajouter un rc sur l utomte entre S et S et le vluer pr T := T \ S 0 1 2 3
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 15/ 36 E = {{e 0 }} T = {{e 0 }} S := {e 0 } S := δ(e 0, ) = {e 0 } S est déjà dns E donc on ne l joute ps δ ({e 0 }, ) = {e 0 } S := δ(e 0, ) = {e 0, e 1 } S n est ps encore dns E donc on l joute δ ({e 0 }, ) = {e 0, e 1 } On supprime {e 0 } de T 0 e {e 0 }
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 15/ 36 E = {{e 0 }} T = {{e 0 }} S := {e 0 } S := δ(e 0, ) = {e 0 } S est déjà dns E donc on ne l joute ps δ ({e 0 }, ) = {e 0 } S := δ(e 0, ) = {e 0, e 1 } S n est ps encore dns E donc on l joute δ ({e 0 }, ) = {e 0, e 1 } On supprime {e 0 } de T 0 e {e 0 }
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 15/ 36 E = {{e 0 }} T = {{e 0 }} S := {e 0 } S := δ(e 0, ) = {e 0 } S est déjà dns E donc on ne l joute ps δ ({e 0 }, ) = {e 0 } S := δ(e 0, ) = {e 0, e 1 } S n est ps encore dns E donc on l joute δ ({e 0 }, ) = {e 0, e 1 } On supprime {e 0 } de T 0 e {e 0 }
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 15/ 36 E = {{e 0 }} T = {{e 0 }} S := {e 0 } S := δ(e 0, ) = {e 0 } S est déjà dns E donc on ne l joute ps δ ({e 0 }, ) = {e 0 } S := δ(e 0, ) = {e 0, e 1 } S n est ps encore dns E donc on l joute δ ({e 0 }, ) = {e 0, e 1 } On supprime {e 0 } de T 0 e {e 0 } {e 0 }
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 15/ 36 E = {{e 0 }} T = {{e 0 }} S := {e 0 } S := δ(e 0, ) = {e 0 } S est déjà dns E donc on ne l joute ps δ ({e 0 }, ) = {e 0 } S := δ(e 0, ) = {e 0, e 1 } S n est ps encore dns E donc on l joute δ ({e 0 }, ) = {e 0, e 1 } On supprime {e 0 } de T 0 e {e 0 } {e 0 }
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 15/ 36 E = {{e 0 }, {e 0, e 1 }} T = {{e 0 }, {e 0, e 1 }} S := {e 0 } S := δ(e 0, ) = {e 0 } S est déjà dns E donc on ne l joute ps δ ({e 0 }, ) = {e 0 } S := δ(e 0, ) = {e 0, e 1 } S n est ps encore dns E donc on l joute δ ({e 0 }, ) = {e 0, e 1 } On supprime {e 0 } de T 0 e {e 0 } {e 0 } {e 0, e 1 } 0, 1
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 15/ 36 E = {{e 0 }, {e 0, e 1 }} T = {{e 0 }, {e 0, e 1 }} S := {e 0 } S := δ(e 0, ) = {e 0 } S est déjà dns E donc on ne l joute ps δ ({e 0 }, ) = {e 0 } S := δ(e 0, ) = {e 0, e 1 } S n est ps encore dns E donc on l joute δ ({e 0 }, ) = {e 0, e 1 } On supprime {e 0 } de T 0 e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } 0, 1
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 15/ 36 E = {{e 0 }, {e 0, e 1 }} T = {{e 0, e 1 }} S := {e 0 } S := δ(e 0, ) = {e 0 } S est déjà dns E donc on ne l joute ps δ ({e 0 }, ) = {e 0 } S := δ(e 0, ) = {e 0, e 1 } S n est ps encore dns E donc on l joute δ ({e 0 }, ) = {e 0, e 1 } On supprime {e 0 } de T 0 e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } 0, 1
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 16/ 36 E = {{e 0 }, {e 0, e 1 }} T = {{e 0, e 1 }} S := {e 0, e 1 } S := δ(e 0, ) δ(e 1, ) = {e 0, e 2 } S n est ps encore dns E donc on l joute δ ({e 0, e 1 }, ) = {e 0, e 2 } S := δ(e 0, ) δ(e 1, ) = {e 0, e 1 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 1 }, ) = {e 0, e 1 } On supprime {e 0, e 1 } de T 0 e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } 0, 1
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 16/ 36 E = {{e 0 }, {e 0, e 1 }} T = {{e 0, e 1 }} S := {e 0, e 1 } S := δ(e 0, ) δ(e 1, ) = {e 0, e 2 } S n est ps encore dns E donc on l joute δ ({e 0, e 1 }, ) = {e 0, e 2 } S := δ(e 0, ) δ(e 1, ) = {e 0, e 1 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 1 }, ) = {e 0, e 1 } On supprime {e 0, e 1 } de T 0 e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } 0, 1
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 16/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }} T = {{e 0, e 1 }, {e 0, e 2 }} S := {e 0, e 1 } S := δ(e 0, ) δ(e 1, ) = {e 0, e 2 } S n est ps encore dns E donc on l joute δ ({e 0, e 1 }, ) = {e 0, e 2 } S := δ(e 0, ) δ(e 1, ) = {e 0, e 1 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 1 }, ) = {e 0, e 1 } On supprime {e 0, e 1 } de T 0 e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } 0, 1 0, 2
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 16/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }} T = {{e 0, e 1 }, {e 0, e 2 }} S := {e 0, e 1 } S := δ(e 0, ) δ(e 1, ) = {e 0, e 2 } S n est ps encore dns E donc on l joute δ ({e 0, e 1 }, ) = {e 0, e 2 } S := δ(e 0, ) δ(e 1, ) = {e 0, e 1 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 1 }, ) = {e 0, e 1 } On supprime {e 0, e 1 } de T 0 e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 2 } 0, 1 0, 2
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 16/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }} T = {{e 0, e 1 }, {e 0, e 2 }} S := {e 0, e 1 } S := δ(e 0, ) δ(e 1, ) = {e 0, e 2 } S n est ps encore dns E donc on l joute δ ({e 0, e 1 }, ) = {e 0, e 2 } S := δ(e 0, ) δ(e 1, ) = {e 0, e 1 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 1 }, ) = {e 0, e 1 } On supprime {e 0, e 1 } de T 0 e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 2 } 0, 1 0, 2
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 16/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }} T = {{e 0, e 1 }, {e 0, e 2 }} S := {e 0, e 1 } S := δ(e 0, ) δ(e 1, ) = {e 0, e 2 } S n est ps encore dns E donc on l joute δ ({e 0, e 1 }, ) = {e 0, e 2 } S := δ(e 0, ) δ(e 1, ) = {e 0, e 1 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 1 }, ) = {e 0, e 1 } On supprime {e 0, e 1 } de T 0 e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 2 } 0, 1 0, 2
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 16/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }} T = {{e 0, e 1 }, {e 0, e 2 }} S := {e 0, e 1 } S := δ(e 0, ) δ(e 1, ) = {e 0, e 2 } S n est ps encore dns E donc on l joute δ ({e 0, e 1 }, ) = {e 0, e 2 } S := δ(e 0, ) δ(e 1, ) = {e 0, e 1 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 1 }, ) = {e 0, e 1 } On supprime {e 0, e 1 } de T e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } 0 0, 1 0, 2
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 16/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }} T = {{e 0, e 2 }} S := {e 0, e 1 } S := δ(e 0, ) δ(e 1, ) = {e 0, e 2 } S n est ps encore dns E donc on l joute δ ({e 0, e 1 }, ) = {e 0, e 2 } S := δ(e 0, ) δ(e 1, ) = {e 0, e 1 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 1 }, ) = {e 0, e 1 } On supprime {e 0, e 1 } de T e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } 0 0, 1 0, 2
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 17/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }} T = {{e 0, e 2 }} S := {e 0, e 2 } S := δ(e 0, ) δ(e 2, ) = {e 0 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 2 }, ) = {e 0 } S := δ(e 0, ) δ(e 2, ) = {e 0, e 1, e 3 } S n est ps encore dns E donc on l joute δ ({e 0, e 2 }, ) = {e 0, e 1, e 3 } On supprime {e 0, e 2 } de T e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } 0 0, 1 0, 2
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 17/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }} T = {{e 0, e 2 }} S := {e 0, e 2 } S := δ(e 0, ) δ(e 2, ) = {e 0 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 2 }, ) = {e 0 } S := δ(e 0, ) δ(e 2, ) = {e 0, e 1, e 3 } S n est ps encore dns E donc on l joute δ ({e 0, e 2 }, ) = {e 0, e 1, e 3 } On supprime {e 0, e 2 } de T e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } 0 0, 1 0, 2
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 17/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }} T = {{e 0, e 2 }} S := {e 0, e 2 } S := δ(e 0, ) δ(e 2, ) = {e 0 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 2 }, ) = {e 0 } S := δ(e 0, ) δ(e 2, ) = {e 0, e 1, e 3 } S n est ps encore dns E donc on l joute δ ({e 0, e 2 }, ) = {e 0, e 1, e 3 } On supprime {e 0, e 2 } de T e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } 0 0, 1 0, 2
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 17/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }} T = {{e 0, e 2 }} S := {e 0, e 2 } S := δ(e 0, ) δ(e 2, ) = {e 0 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 2 }, ) = {e 0 } S := δ(e 0, ) δ(e 2, ) = {e 0, e 1, e 3 } S n est ps encore dns E donc on l joute δ ({e 0, e 2 }, ) = {e 0, e 1, e 3 } On supprime {e 0, e 2 } de T e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } {e 0 } 0 0, 1 0, 2
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 17/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }} T = {{e 0, e 2 }} S := {e 0, e 2 } S := δ(e 0, ) δ(e 2, ) = {e 0 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 2 }, ) = {e 0 } S := δ(e 0, ) δ(e 2, ) = {e 0, e 1, e 3 } S n est ps encore dns E donc on l joute δ ({e 0, e 2 }, ) = {e 0, e 1, e 3 } On supprime {e 0, e 2 } de T e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } {e 0 } 0 0, 1 0, 2
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 17/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }, {e 0, e 1, e 3 }} S := {e 0, e 2 } S := δ(e 0, ) δ(e 2, ) = {e 0 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 2 }, ) = {e 0 } S := δ(e 0, ) δ(e 2, ) = {e 0, e 1, e 3 } S n est ps encore dns E donc on l joute δ ({e 0, e 2 }, ) = {e 0, e 1, e 3 } On supprime {e 0, e 2 } de T T = {{e 0, e 2 }, {e 0, e 1, e 3 }} e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } {e 0 } {e 0, e 1, e 3 } 0 0, 1 0, 2 0, 1, 3
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 17/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }, {e 0, e 1, e 3 }} S := {e 0, e 2 } S := δ(e 0, ) δ(e 2, ) = {e 0 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 2 }, ) = {e 0 } S := δ(e 0, ) δ(e 2, ) = {e 0, e 1, e 3 } S n est ps encore dns E donc on l joute δ ({e 0, e 2 }, ) = {e 0, e 1, e 3 } On supprime {e 0, e 2 } de T T = {{e 0, e 2 }, {e 0, e 1, e 3 }} e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } {e 0 } {e 0, e 1, e 3 } {e 0, e 1, e 3 } 0 0, 1 0, 2 0, 1, 3
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 17/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }, {e 0, e 1, e 3 }} S := {e 0, e 2 } S := δ(e 0, ) δ(e 2, ) = {e 0 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 2 }, ) = {e 0 } S := δ(e 0, ) δ(e 2, ) = {e 0, e 1, e 3 } S n est ps encore dns E donc on l joute δ ({e 0, e 2 }, ) = {e 0, e 1, e 3 } On supprime {e 0, e 2 } de T T = {{e 0, e 1, e 3 }} e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } {e 0 } {e 0, e 1, e 3 } {e 0, e 1, e 3 } 0 0, 1 0, 2 0, 1, 3
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 18/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }, {e 0, e 1, e 3 }} S := {e 0, e 1, e 3 } S := δ(e 0, ) δ(e 1, ) δ(e 3, ) = {e 0, e 2 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 1, e 3 }, ) = {e 0, e 2 } S := δ(e 0, ) δ(e 1, ) δ(e 3, ) = {e 0, e 1 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 2 }, ) = {e 0, e 1, e 3 } On supprime {e 0, e 2 } de T T = {{e 0, e 1, e 3 }} e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } {e 0 } {e 0, e 1, e 3 } {e 0, e 1, e 3 } 0 0, 1 0, 2 0, 1, 3
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 18/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }, {e 0, e 1, e 3 }} S := {e 0, e 1, e 3 } S := δ(e 0, ) δ(e 1, ) δ(e 3, ) = {e 0, e 2 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 1, e 3 }, ) = {e 0, e 2 } S := δ(e 0, ) δ(e 1, ) δ(e 3, ) = {e 0, e 1 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 2 }, ) = {e 0, e 1, e 3 } On supprime {e 0, e 2 } de T T = {{e 0, e 1, e 3 }} e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } {e 0 } {e 0, e 1, e 3 } {e 0, e 1, e 3 } 0 0, 1 0, 2 0, 1, 3
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 18/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }, {e 0, e 1, e 3 }} S := {e 0, e 1, e 3 } S := δ(e 0, ) δ(e 1, ) δ(e 3, ) = {e 0, e 2 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 1, e 3 }, ) = {e 0, e 2 } S := δ(e 0, ) δ(e 1, ) δ(e 3, ) = {e 0, e 1 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 2 }, ) = {e 0, e 1, e 3 } On supprime {e 0, e 2 } de T T = {{e 0, e 1, e 3 }} e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } {e 0 } {e 0, e 1, e 3 } {e 0, e 1, e 3 } 0 0, 1 0, 2 0, 1, 3
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 18/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }, {e 0, e 1, e 3 }} S := {e 0, e 1, e 3 } S := δ(e 0, ) δ(e 1, ) δ(e 3, ) = {e 0, e 2 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 1, e 3 }, ) = {e 0, e 2 } S := δ(e 0, ) δ(e 1, ) δ(e 3, ) = {e 0, e 1 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 2 }, ) = {e 0, e 1, e 3 } On supprime {e 0, e 2 } de T T = {{e 0, e 1, e 3 }} e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } {e 0 } {e 0, e 1, e 3 } {e 0, e 1, e 3 } {e 0, e 2 } 0 0, 1 0, 2 0, 1, 3
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 18/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }, {e 0, e 1, e 3 }} S := {e 0, e 1, e 3 } S := δ(e 0, ) δ(e 1, ) δ(e 3, ) = {e 0, e 2 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 1, e 3 }, ) = {e 0, e 2 } S := δ(e 0, ) δ(e 1, ) δ(e 3, ) = {e 0, e 1 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 2 }, ) = {e 0, e 1, e 3 } On supprime {e 0, e 2 } de T T = {{e 0, e 1, e 3 }} e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } {e 0 } {e 0, e 1, e 3 } {e 0, e 1, e 3 } {e 0, e 2 } 0 0, 1 0, 2 0, 1, 3
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 18/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }, {e 0, e 1, e 3 }} S := {e 0, e 1, e 3 } S := δ(e 0, ) δ(e 1, ) δ(e 3, ) = {e 0, e 2 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 1, e 3 }, ) = {e 0, e 2 } S := δ(e 0, ) δ(e 1, ) δ(e 3, ) = {e 0, e 1 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 2 }, ) = {e 0, e 1, e 3 } On supprime {e 0, e 2 } de T T = {{e 0, e 1, e 3 }} e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } {e 0 } {e 0, e 1, e 3 } {e 0, e 1, e 3 } {e 0, e 2 } 0 0, 1 0, 2 0, 1, 3
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 18/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }, {e 0, e 1, e 3 }} S := {e 0, e 1, e 3 } S := δ(e 0, ) δ(e 1, ) δ(e 3, ) = {e 0, e 2 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 1, e 3 }, ) = {e 0, e 2 } S := δ(e 0, ) δ(e 1, ) δ(e 3, ) = {e 0, e 1 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 2 }, ) = {e 0, e 1, e 3 } On supprime {e 0, e 2 } de T T = {{e 0, e 1, e 3 }} e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } {e 0 } {e 0, e 1, e 3 } {e 0, e 1, e 3 } {e 0, e 2 } {e 0, e 1 } 0 0, 1 0, 2 0, 1, 3
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 18/ 36 E = {{e 0 }, {e 0, e 1 }, {e 0, e 2 }, {e 0, e 1, e 3 }} S := {e 0, e 1, e 3 } S := δ(e 0, ) δ(e 1, ) δ(e 3, ) = {e 0, e 2 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 1, e 3 }, ) = {e 0, e 2 } S := δ(e 0, ) δ(e 1, ) δ(e 3, ) = {e 0, e 1 } S est déjà dns E donc on ne l joute ps δ ({e 0, e 2 }, ) = {e 0, e 1, e 3 } On supprime {e 0, e 2 } de T T = {} e {e 0 } {e 0 } {e 0, e 1 } {e 0, e 1 } {e 0, e 2 } {e 0, e 1 } {e 0, e 2 } {e 0 } {e 0, e 1, e 3 } {e 0, e 1, e 3 } {e 0, e 2 } {e 0, e 1 } 0 0, 1 0, 2 0, 1, 3
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 19/ 36 Suppression des ɛ-trnsitions Si on génère l AFN vec l lgorithme de l section précédente, il fut enlever les ɛ-trnsitions lors de l crétion d un AFD. Pour cel on définit quelques fonctions. Définitions ɛ fermeture(e) : ensemle des étts de l AFN ccessiles depuis l étt e de l AFN pr des ɛ-trnsitions uniquement. ɛ fermeture(t ) : ensemle des étts de l AFN ccessiles depuis un étt e pprtennt à T pr des ɛ-trnsitions uniquement. Trnsiter(T, ) : Ensemle des étts de l AFN vers lesquels il existe une trnsition sur le symole d entrée à prtir d un étt e pprtennt à T. Algorithme Il suffit de remplcer dns l lgorithme précédent les e S δ(e, ) pr ɛ fermeture(trnsiter(s, )) et initiliser E et T pr ɛ fermeture(e 0 ).
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 20/ 36 Prenons l exemple précédent : ( ) et l AFN qu on en déduit : ɛ 0 2 3 ɛ ɛ 1 6 ɛ 4 ɛ 5 ɛ 7 8 9 ɛ 10
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 21/ 36 ɛ 2 3 ɛ ɛ 0 ɛ 1 6 ɛ 7 8 9 10 ɛ 4 ɛ 5 ɛ A C B D A = ɛ fermeture(e 0) = {0, 1, 2, 4, 7} ɛ f (Trnsiter(A, )) = ɛ f ({3, 8}) = {1, 2, 3, 4, 6, 7, 8} = B ɛ f (Trnsiter(A, )) = ɛ f ({5}) = {1, 2, 4, 5, 6, 7} = C ɛ f (Trnsiter(B, )) = ɛ f ({3, 8}) = B ɛ f (Trnsiter(B, )) = ɛ f ({5, 9}) = {1, 2, 4, 5, 6, 7, 9} = D ɛ f (Trnsiter(C, )) = ɛ f ({3, 8}) = B ɛ f (Trnsiter(C, )) = ɛ f ({5}) = C ɛ f (Trnsiter(D, )) = ɛ f ({3, 8}) = B ɛ f (Trnsiter(D, )) = ɛ f ({5, 10}) = {1, 2, 4, 5, 6, 7, 10} = E ɛ f (Trnsiter(E, )) = ɛ f ({3, 8}) = B ɛ f (Trnsiter(E, )) = ɛ f ({5}) = C E
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 22/ 36 Description des lngges réguliers Théorème : Soit Σ un lphet et L un lngge sur Σ. Alors les propriétés suivntes sont équivlentes : L est un lngge régulier, c est à dire qu il y une grmmire régulière G telle que L = L(G). Il existe une expression régulière r dénotnt L. Il existe un AFN A tel que L = L(A). Il existe un AFD A tel que L = L(A ). Les démonstrtions d équivlence sont sées sur des trnsformtions constructives.
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 23/ 36 Théorème de Myhill-Nerode Le théorème de Myhill-Nerode donne une condition nécessire et suffisnte pour qu un lngge soit régulier. Typiquement on utilise ce théorème pour vérifier si un lngge est régulier ou non. Définition Soit L Σ un lngge. L reltion R L sur Σ est définie pr xr L y si pour tout w Σ, soit xw L et yw L, soit xw / L et yw / L. On peut montrer que R L est une reltion d équivlence sur Σ. Le nomre de clsses d équivlences d une reltion R est ppelée indice de R. Théorème Un lngge L Σ est régulier si et seulement si l indice de R L est fini.
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 24/ 36 Théorème Un résultt théorique importnt est une conséquence du théorème Myhill-Nerode. Corollire : chque lngge régulier est reconnu pr un AFD à un nomre d étts miniml, qui est unique à un renommge près des étts. On ppelle cet AFD l utomte miniml de L. Le nomre d étts de l utomte miniml est égl à l indice de R L. En effet, si les clsses d équivlence de L sont connues, on peut construire l utomte miniml de L en utilisnt les clsses de R L comme ensemle des étts. Le meilleur lgorithme connu s exécute en temps O(n log n) où n est le nomre d étts de l utomte A.
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 25/ 36 Pour éviter des prolèmes techniques nous supposons que dns un AFD A = (E, Σ, δ, e 0, F ) quelconque, chque étt e une trnsition pour symole de Σ. Si δ n est ps défini pour chque couple (e, ) E Σ, lors nous pourrions introduire un nouvel «étt mort» E mort / F vec δ(e mort, ) = e mort pour chque Σ et δ(e, ) n est ps défini initilement. L fonction générlisée de trnsition d un AFD A = (E, Σ, δ, e 0, F ), notée ˆδ, est définie pr ˆδ(m, e) = e (m, e) A (ɛ, e ), où e, e E et m Σ. C est à dire ˆδ(m, e) = e si et seulement si prtnt de l AFD A dns l étt e et le fisnt fonctionner vec le mot d entrée m on termine dns l étt e. L étt e est ccessile depuis l étt de déprt e 0. On dit qu un mot m Σ distingue l étt e et l étt e de l AFD A si ˆδ(m, e) F ˆδ(m, e ) / F
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 26/ 36 Étpe 1 Construire une prtition initile π de l ensemle des étts vec deux groupes : les étts d ccepttion F et les étts de non-ccepttion E \ F. 0 π = {2, 5}, {0, 1, 3, 4} 2 3 1 4 5
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 27/ 36 Étpe 2 Appliquer l procédure ci-dessous fin de construire une nouvelle prtition π n. Pour chque groupe G de π fire : Prtitionner G en sous-groupes de mnière que deux étts e et f de G soient dns le même sous-groupe si et seulement si pour tout symole Σ, les étts e et f ont des trnsitions sur vers des étts du même groupe de π. Au pire un étt former un groupe à lui seul. remplcer G dns π n pr tous les sous-groupes insi formés. Étpe 3 Si π n = π, lors soit π f = π et continuer à l étpe 4, sinon répéter l étpe 2 vec π = π n.
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 28/ 36 Notre prtition étit : π = {2, 5}, {0, 1, 3, 4}. Soit G 1 = {2, 5} et G 2 = {0, 1, 3, 4}. symole 2 5 0 1 3 4 G 2 G 2 G 2 G 1 G 2 G 1 G 2 G 2 G 2 G 2 G 2 G 2 Les trnsitions de tous les étts de G 1 vont vers les mêmes groupes, donc G 1 n est ps divisé en sous groupes. Pr contre dns G 2 il y des différences entre {0, 3} et {1, 4}. On otient donc une nouvelle prtition : π n = {2, 5}, {0, 3}, {1, 4}. On recommence l étpe 2 sur cette prtition.
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 29/ 36 Notre nouvelle prtition est : π n = {2, 5}, {0, 3}, {1, 4}. Soit G 1 = {2, 5}, G 2 = {0, 3} et G 3 = {1, 4}. symole 2 5 0 3 1 4 G 2 G 2 G 2 G 2 G 1 G 1 G 3 G 3 G 3 G 3 G 3 G 3 Les trnsitions de tous les étts de tous les groupes vont vers les mêmes groupes, donc ils ne sont ps divisés en sous groupes. On peut psser à l étpe 4 vec π f = {2, 5}, {0, 3}, {1, 4}.
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 30/ 36 Étpe 4 Choisir un étt dns chque groupe de l prtition π f en tnt que représentnt de ce groupe. Les représentnts seront les étts de l AFD réduit A. Soit e un étt représenttif, et supposons que dns l utomte originl A il y it une trnsition de e vers f sur. Soit r le représentnt du groupe de f (r peut être égl à f ). Alors A une trnsition de e vers r sur. L étt de déprt de A est le représentnt du groupe qui contient l étt de déprt e 0 de A. Les étts d ccepttion de A sont les représentnts des étts de F. Notons que, pour tout groupe G de π f, soit G est entièrement composé d étts de F, soit G n en contient ucun.
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 31/ 36 L prtition finle étit : π f = {2, 5}, {0, 3}, {1, 4}. Prenons 2, 0 et 1 comme représentnts. 2 est un étt finl. 0 est l étt de déprt. On otient l AFD miniml : 0 1 2
AFD AFN Opértions Lemme de pompge ER vers AFN AFN vers AFD Minimistion d un AFD 32/ 36 Étpe 5 Si A un étt mort, c est à dire un étt e qui n est ps un étt d ccepttion et qui des trnsitions vers lui même sur tous les symoles de Σ, lors supprimer e de A. Supprimer ussi tous les étts non ccessiles depuis l étt de déprt. Toutes les trnsitions vers e depuisd utres étts deviennent indéfinis. Vlidité de l lgorithme L vlidité de l lgorithme n est ps évidente. L démonstrtion se fit pr récurrence sur le nomre d étpes.
AFD AFN Opértions Lemme de pompge 33/ 36 Lemme de pompge Le lemme de pompge est un outil pour montrer qu un lngge n est ps régulier. Un lngge non régulier ne peut être ni spécifié pr une expression régulière, ni ps un AFN ou un AFD. Lemme Soit L Σ un lngge régulier. Alors il existe une constnte n N telle que pour tout m L de longueur u moins n, il existe u, v, w Σ stisfisnt : m = uvw uv n v 1 uv i w L pour chque entier i 0 Utilistion Utilisé pour montrer qu un lngge n est ps régulier.
AFD AFN Opértions Lemme de pompge 34/ 36 Démonstrtion Soit L un lngge régulier, A un AFD tel que L = L(A), et n le nomre d étts de A. Prenons un mot m L tel que m n. Il existe donc u moins un étt de A pr lequel on psse plusieurs fois lors de l reconnissnce de m. Soit q le premier étt pr lequel on psse pour l deuxième fois. Soit u le sous-mot tel que (uγ, e 0 ) A (γ, q) Soit v et w les deux sous-mots tels que (vw, q) A (w, q) vec v 1 (possile cr on psse plusieurs fois pr q). Comme q est le seul étt visité plus d une fois près l reconnissnce de uv, on en déduit que uv n. On (uγ, e 0 ) A (γ, q) et (vw, q) A (w, q), donc pr trnsitivité on peut voir (v i w, q) A (w, q) et (uv i w, q) A (w, q) i N, donc uv i w L i N.
AFD AFN Opértions Lemme de pompge 35/ 36 Lemme de pompge On v montrer que le lngge L = {0 k 1 k k N} n est ps régulier. Supposons le lngge régulier et outissons à une contrdiction. Pour cel on v construire un mot en utilisnt le Lemme et montrer qu il n est ps dns le lngge. En utilisnt le fmeux entier n du lemme, on utilise le mot 0 n 1 n qui pprtient ien à L. D près l première propriété, uvw = 0 n 1 n. D près l seconde propriété uv n, donc uv = 0 m, vec m n. D près l troisième propriété v 1. Donc v = 0 v et v 1. D près l qutrième propriété uv 2 w L. Or uv 2 w = 0 p 0 n vec p > q cr le second v jouté des 0, mis ps de 1. Et ce mot ne peut ps pprtenir à L pr l définition de L. L n est donc ps régulier.
AFD AFN Opértions Lemme de pompge 36/ 36 Ensemles non réguliers On ne peut ps décrire certins lngges pr des expressions régulières. On ne peut ps utiliser les expressions régulières pour décrire des constructions équilirées ou imriquées. Pr exemple, l ensemle des chînes de prenthèses équilirées ne peut ps être décrit pr des expressions régulières. D un utre côté, ce lngge peut être spécifié pr une grmmire hors contexte. Des chînes répétées ne peuvent ps être décrites pr des expressions régulières. L ensemle {wcw w ( ) } ne peut être dénoté ni pr une expression régulière, ni pr une grmmire hors contexte. On peut utiliser des expressions régulières pour dénoter seulement un nomre fixe ou infini de répétitions d une construction donnée. Deux nomres ritrires ne peuvent ps être comprés pour voir si ce sont les mêmes.