Solution du probl`eme 3 du devoir 2 1 Plan de match 2 Construction

Transcription

Solution du probl`eme 3 du devoir 2 1 Plan de match 2 Construction
Solution du problème 3 du devoir 2
Question. Soit Σ = {0, 1, a, b} et zap : P(Σ∗ ) → P(Σ∗ ), où zap(L) est l’ensemble des mots de L dans
lesquels toute occurrence du sous-mot 0011 a été remplacée par le sous-mot aabb. Montrez que REG
est fermée sous l’opération zap.
1
Plan de match
À montrer: si L est régulier alors zap(L) est régulier.
Soit donc un AFD A = (Q, {0, 1, a, b}, δ, q0 , F ). Nous construirons un AFN A0 tel que
zap(L(A)) = L(A0 ) ∩ Y
où Y est l’ensemble des mots qui ne contiennent aucune occurrence du mot 0011. Ceci suffira puisque
Y est régulier et REG est fermé sous intersection. Nous aurons démontré que le zap de tout langage
régulier est régulier.
Dans la suite, nous nous permettrons d’appliquer zap à un mot w, avec l’interprétation évidente
de zap(w). Nous noterons |w|0011 le nombre d’occurrences du sous-mot 0011 dans w. On se souvient
que δ̂ : Q × Σ∗ → Q est l’extension naturelle de la fonction de transition δ : Q × Σ → Q de l’AFD A.
Toutes les occurrences de “|−
−” et de “|−*− ” référeront aux configurations de A0 .
2
Construction de A0
Partant de A = (Q, {0, 1, a, b}, δ, q0 , F ), nous construisons l’AFN A0 , dont la définition formelle est
A0 = (Q0 , Σ, δ 0 , q0 , F ) où
Q0 = Q ∪ (Q × {a, aa, aab, aabb})
et
δ 0 : Q0 × (Σ ∪ {ε}) → P(Q0 )
est définie comme suit. Pour chaque q ∈ Q,
0
δ (q, σ) =
{δ(q, σ)}
{(q, a)}
si σ ∈ Σ
si σ = ε
δ 0 ((q, a), a) = {(δ(q, 0), aa)}
δ 0 ((q, aa), a) = {(δ(q, 0), aab)}
δ 0 ((q, aab), b) = {(δ(q, 1), aabb)}
δ 0 ((q, aabb), b) = {δ(q, 1)}
et δ 0 (·, ·) = ∅ dans tous les autres cas.
Intuitivement, les états de A0 non présents dans A, c’est à dire les (q, z) ∈ Q × {a, aa, aab, aabb},
servent à ceci: à partir de tout état de q ∈ Q, A0 peut choisir d’effectuer une ε-transition vers l’état
(q, a). De l’état (q, a), le seul choix de A0 est de lire aabb et d’atteindre l’état δ̂(q, 0011), c’est à dire
l’état q 0 ∈ Q qu’aurait atteint A si A avait rencontré 0011 à partir de q. L’effet de ceci est que si
x0011y ∈ L(A) pour x, y ∈ {0, 1, a, b}∗ , alors les mots x0011y et xaabby appartiennent tous deux au
langage L(A0 ).
Il reste à prouver que notre construction fonctionne, c’est à dire que zap(L(A)) = L(A0 ) ∩ Y . Nous
avons deux inclusions à justifier.
1
3
Preuve que zap(L(A)) ⊆ L(A0 ) ∩ Y
Puisque1 zap(L(A)) ⊆ Y , il suffit de démontrer que zap(L(A)) ⊆ L(A0 ). Nous montrerons par
induction que le prédicat suivant est vrai pour tout n ≥ 0:
(∀w ∈ Σ∗ tel que |w|0011 = n)(∀q1 , q2 ∈ Q)(si δ̂(q1 , w) = q2 alors [zap(w), q1 ] |−*− [ε, q2 ]).
(1)
Il en découlera que
u ∈ zap(L(A)) ⇒ u = zap(w) pour un w ∈ L(A)
⇒ u = zap(w) et δ̂(q0 , w) = q où q ∈ F
⇒ u = zap(w) et [zap(w), q0 ] |−*− [ε, q] où q ∈ F
de (1)
0
⇒ u = zap(w) et zap(w) ∈ L(A )
⇒ u ∈ L(A0 ).
Prouvons maintenant que (1) est vrai pour tout n. Lorsque |w|0011 = 0, zap(w) = w et
δ̂(q1 , w) = q2 ⇒ [zap(w), q1 ] |−*− [ε, q2 ]
puisque toutes les transitions de A (donc sur Q) sont permises dans A0 . Passons maintenant au pas
de l’induction. Soit w ∈ Σ∗ , |w|0011 = n > 0 et δ̂(q1 , w) = q2 . Alors w = x0011y où |x|0011 = 0 et
|y|0011 = n − 1 et A se comporte comme suit sur w:
δ̂(q1 , x) = q3
δ(q3 , 0) = q4
δ(q4 , 0) = q5
δ(q5 , 1) = q6
δ(q6 , 1) = q7
δ̂(q7 , y) = q2 .
Dans ce cas, zap(w) = x · aabb · zap(y) puisque x = zap(x), et
[x · aabb · zap(y), q1 ] |−*− [aabb · zap(y), q3 ]
comme dans le cas de base
|−− [aabb · zap(y), (q3 , a)]
ε-transition, définition de δ 0
|−− [abb · zap(y), (q4 , aa)]
définition de δ 0
|−− [bb · zap(y), (q5 , aab)]
définition de δ 0
|−− [b · zap(y), (q6 , aabb)]
définition de δ 0
|−− [zap(y), q7 ]
définition de δ 0
|−*− [ε, q2 ]
hypothèse d’induction, puisque δ̂(q7 , y) = q2 .
1
L’inclusion zap(L(A)) ⊆ Y paraı̂t inoffensive, mais elle dépend d’une propriété de 0011 et de aabb. Cette propriété
est que le remplacement de 0011 par aabb ne crée pas de nouvelles occurrences de 0011. Par exemple, si la définition de
zap demandait de remplacer 0011 par 1100 au lieu de remplacer 0011 par aabb, alors le mot zap(001111) serait 110011,
et 110011 ∈
/ Y . À un niveau encore plus fondamental, la définition de zap elle-même repose sur une propriété de 0011.
Cette propriété est que tout w ∈ {0, 1, a, b}∗ s’écrit de manière unique comme x0 · 0011 · x1 · 0011 · x2 · · · · 0011 · xk où
x0 , x1 , . . . , xk ∈ Y . Par exemple, si zap demandait de remplacer 0000 par aabb au lieu de remplacer 0011 par aabb, alors
il faudrait préciser si zap(00000) signifie aabb0 ou 0aabb.
2
4
Preuve que L(A0 ) ∩ Y ⊆ zap(L(A))
Nous montrerons par induction que le prédicat suivant est vrai pour tout n ≥ 0:
(∀w ∈ Y )(∀q1 , q2 ∈ Q)
!
si [w, q1 ] |−*− [ε, q2 ] par le biais de n ε-transitions,
(2)
alors il existe u tel que w = zap(u) et δ̂(q1 , u) = q2
Il en découlera que
w ∈ L(A0 ) ∩ Y ⇒ w ∈ Y et [w, q0 ] |−*− [ε, q] où q ∈ F
⇒ w = zap(u) pour un certain u tel que δ̂(q0 , u) = q ∈ F
de (2)
⇒ w = zap(u) où u ∈ L(A)
⇒ w ∈ zap(L(A)).
Prouvons maintenant que (2) est vrai pour tout n ≥ 0. Pour la base de l’induction, supposons w ∈ Y
et [w, q1 ] |−*− [ε, q2 ] sans une seule ε-transition. Puisque la seule façon qu’a A0 de partir d’un état
de Q et d’atteindre un état de Q × {a, aa, aab, aabb} est d’effectuer une ε-transition, tous les états
intermédiaires du calcul [w, q1 ] |−*− [ε, q2 ] de A0 sont dans Q. Par la définition de δ 0 , ces transitions
intermédiaires étaient permises dans A0 parce qu’elles étaient des transitions de A. Ainsi δ̂(q1 , w) = q2 .
Comme w ∈ Y , w = zap(w). En posant u = w, on a donc w = zap(u) et δ̂(q1 , u) = q2 .
Soit maintenant w ∈ Y et [w, q1 ] |−*− [ε, q2 ] grâce à un certain nombre n de ε-transitions où n > 0.
Alors w = xyz où x, y, z ∈ Σ∗ et
[xyz, q1 ] |−*− [yz, q3 ]
|−− [yz, (q3 , a)]
|−*− [z, q4 ]
sans ε-transition, donc q3 ∈ Q
première ε-transition
prochain retour à un état de Q, q4 ∈ Q
|−*− [ε, q2 ]
en n − 1 ε-transitions.
Puisque w ∈ Y , x ∈ Y . Donc x = zap(x). Par définition de δ 0 , le passage de [yz, (q3 , a)] à [z, q4 ] n’a
pu se faire que si y = aabb et δ̂(q3 , 0011) = q4 . Puisque w ∈ Y , z ∈ Y . Par hypothèse d’induction, il
existe donc v tel que z = zap(v) et δ̂(q4 , v) = q2 . Enfin, zap(x · 0011 · v) = zap(x) · zap(0011) · zap(v)
puisque 0011 ne peut pas chevaucher la frontière entre x et 0011, ni chevaucher la frontière entre 0011
et v. En posant u = x · 0011 · v, on obtient ainsi w = x · aabb · z = zap(u) et
δ̂(q1 , u) = δ̂(q1 , x · 0011 · v)
= δ̂(q3 , 0011 · v)
comme dans la base de l’induction
= δ̂(q4 , v)
= q2 .
3