Vous êtes sur la page 1sur 6

École Nationale des Sciences Appliquées

Théorie de la calculabilité & Compilation Année 2020 − 2021


4-ème Année Génie Informatique Contrôle - Session normale

Corrigé du contrôle de la session normale

Exercice 1
Pour chacun des langages suivants, déterminer une expression régulière qui le dénote et qui soit
la plus courte possible :
1. Mots sur {a, b} qui commencent ou se terminent par ab.
Réponse : ab(a|b)∗ |(a|b)∗ ab.
2. Mots sur {a, b} ayant au moins un a et exactement deux b.
Réponse : a∗ [aba∗ b|ba+ b|ba∗ ba]a∗ .
3. Mots sur {a, b} ayant exactement deux a et au plus deux b.
Réponse : ((ε|b)aa|aba)(ε|b)|aabb|bbaa|(ab|ba)ba.
4. Mots sur {a, b} ayant à la fois ab et ba comme facteurs.
Réponse : (a|b)∗ [ab(a|b)∗ ba|ba(a|b)∗ ab](a|b)∗ .
5. Mots w sur {a, b} tels que |w|b = 0 et |w| est divisible par 2 ou par 3.
Réponse : (aa)∗ |(aaa)∗ .
6. Mots sur {a, b} n’ayant ni aa, ni bb comme facteur.
Réponse : (ab)∗ (a|ε)|(ba)∗ (b|ε).
7. Mots sur {a, b} où chaque a est précédé immédiatement par bb.
Réponse : (b|bba)∗ .

Exercice 2
Considérons le langage L = {w ∈ {0, 1}∗ : |w|0 ≡ 1 modulo 3}.
1. Donner un AFD complet qui accepte L.
Réponse :

Figure 1 – Un AFD complet acceptant L.

1
2. En utilisant l’algorithme BMC, trouver une expression régulière qui dénote L.
Réponse :
— Initialisation :

Figure 2 – Étape d’initialisation dans l’algorithme BMC.

— Suppression de l’état 1 :

Figure 3 – Suppression de l’état 1.

— Suppression de l’état 2 :

Figure 4 – Suppression de l’état 2.

— Fusion des transitions parallèles issues de l’état 0 :

2
Figure 5 – Fusion des transitions parallèles issues de l’état 0.

— Suppression de l’état 0 :

Figure 6 – Suppression de l’état 0.

Une expression régulière pour L est alors : (1|01∗ 01∗ 0)∗ 01∗ .
3. Est-ce que le langage L0 = {w ∈ {0, 1}∗ : |w|0 6≡ 1 modulo 3} est régulier ? Justifier la
réponse, et si oui, donner un AFD qui accepte L0 .
Réponse : oui, le langage L0 = {w ∈ {0, 1}∗ : |w|0 6≡ 1 modulo 3} est régulier, puisque
c’est le complémentaire d’un langage régulier. En effet, L0 = L. Comme l’AFD de L est
complet, on peut alors obtenir un AFD pour L0 en transformant tout état final en un état
non final et vice-versa. En effectuant cette transformation, voici un AFD reconnaissant
L0 :

Figure 7 – Un AFD qui accepte le langage L0 .

Exercice 3
Répondre par vrai ou faux, en justifiant la réponse.
1. Tout sous-langage d’un langage régulier est régulier.
Réponse : Faux, car sinon tout langage serait régulier puisque c’est un sous-langage du
langage universel Σ∗ qui est régulier.
2. La réunion d’un langage régulier et d’un langage non régulier est non régulier.
Réponse : Vrai, car si A est régulier et B non régulier et si A ∪ B est régulier, alors B
= (A ∪ B) \ A serait régulier, ce qui est contradictoire avec l’hypothèse que B est non
régulier.
3. Si L est régulier, alors le langage {xy : x ∈ L et y 6∈ L} est régulier.
Réponse : Vrai, car le langage {xy : x ∈ L et y 6∈ L} = L · L qui la concaténation de
deux langages réguliers.
4. Le langage {an bm : n > 0 et m > 0} est non régulier.
Réponse : Faux, car {an bm : n > 0 et m > 0} = a∗ b∗ qui est régulier.

3
5. (a∗ b∗ )∗ et (a∗ b)∗ dénotent le même langage.
Réponse : Faux, car le mot a ∈ (a∗ b∗ )∗ , mais a 6∈ (a∗ b)∗ .

Exercice 4
Considérons l’AFND M suivant :

Figure 8 – L’AFND M .

1. Préciser (en Français) le langage accepté par M .


Réponse : L(M ) est l’ensemble des mots sur {0, 1} ayant un nombre pair de 0 ou un
nombre impair de 1.
2. Donner un AFD complet équivalent à M .
Réponse :

Figure 9 – Un AFD complet équivalent à M .

3. Donner un AFD minimal équivalent à M (utiliser l’algorithme de Hopcroft).


Réponse :

4
Figure 10 – Un AFD minimal équivalent à M .

Exercice 5
Soient Σ et Γ deux alphabets. Un homomorphisme de langages est une application h définie
de Σ∗ vers Γ∗ et vérifiant h(xy) = h(x)h(y), pour tous mots x, y de Σ∗ . Considérons un
homomorphisme h de Σ∗ vers Γ∗ . Si L est un langage Σ, on pose h(L) = {h(x) ∈ Γ∗ : x ∈ L}.
Une fois qu’on connaı̂t h(a) pour tout symbole a ∈ Σ, alors on peut calculer h(w) pour tout
mot w de Σ∗ . Par exemple, pour Σ = {a, b} et Γ = {c, d}, si h(a) = cc et h(b) = dcd, alors
pour tout mot w sur Σ, h(w) est obtenu en remplaçant chaque occurrence de a dans w par cc
= h(a) et chaque occurrence de b par dcd = h(b). Ainsi :
h(abbaa) = h(a)h(b)h(b)h(a)h(a) = ccdcddcdcccc
1. Montrer que h(ε) = ε.
Réponse : comme h(ε) = h(εε) = h(ε)h(ε), alors |h(ε)| = |h(ε)| + |h(ε)|. Par conséquent,
|h(ε)| = 0, et alors h(ε) = ε.
2. Montrer que h(AB) = h(A)h(B), pour tous langages A et B sur Σ.
Réponse : un mot y ∈ h(AB), si et seulement s’il existe un mot x ∈ AB tel que
y = h(x). Ceci est équivalent à dire qu’il existe deux mots u ∈ A et v ∈ B tels que
y = h(uv) = h(u)h(v). Finalement, y ∈ h(AB), si et seulement s’il existe deux mots
u0 = h(u) ∈ h(A) et v 0 = h(v) ∈ h(B) tels que y = u0 v 0 . Ce qui est équivalent à
y ∈ h(A)h(B). Par suite, h(AB) = h(A)h(B).
3. Montrer que (∀A ⊆ Σ∗ ), (∀n ∈ N) : h(An ) = (h(A))n .
Réponse : preuve par récurrence sur n.
• Cas de base : la propriété est vérifiée pour n = 0, car h(A0 ) = h({ε}) = {h(ε)} =
{ε} = (h(A))0 .
• Cas inductif : soit n > 0 et supposons que h(An ) = (h(A))n . Nous avons alors :
h(An+1 ) = h(An A) = h(An )h(A) = (h(A))n h(A) = (h(A))n+1 .
4. En déduire que h(A∗ ) = (h(A))∗ , pour tout langage A sur Σ.
Réponse : soit y ∈ h(A∗ ). Alors, il existe un entier n > 0 et un mot x ∈ An tel que
h(x) = y. D’où, y ∈ h(An ) = (h(A))n ⊆ (h(A))∗ , et finalement y ∈ (h(A))∗ . Inversement,
si un mot y ∈ (h(A))∗ , alors il existe un entier m > 0 tel que y ∈ (h(A))m = h(Am ).
Donc, y = h(x), où x ∈ Am ⊆ A∗ , ce qui prouve que y ∈ h(A∗ ).

5
5. Montrer que (∀A, B ⊆ Σ∗ ) : h(A ∪ B) = h(A) ∪ h(B).
Réponse : y ∈ h(A ∪ B) ⇐⇒ (∃x ∈ (A ∪ B)) : y = h(x) ⇐⇒ (∃x ∈ A) : y = h(x) ou
(∃x ∈ B) : y = h(x) ⇐⇒ y ∈ h(A) ou y ∈ h(B) ⇐⇒ y ∈ h(A) ∪ h(B).
6. Soit M = (E, Σ, δ, q0 , F ) un AFD qui accepte un langage A sur Σ. Montrer comment
construire à partir de M un automate fini qui accepte le langage h(A) sur Γ.
Réponse : on crée l’automate M 0 = (E 0 , Σ0 , δ 0 , q00 , F 0 ) en suivant la procédure suivante :
— q00 = q0 , Σ0 = Σ et F 0 = F .
— Au départ, E 0 = E.
— Si h(a) = ε, alors pour toute transition δ(p, a) = q dans M , on crée dans M 0 la
transition δ 0 (p, ε) = q.
— Si h(a) = α ∈ Σ, alors pour toute transition δ(p, a) = q dans M , on crée dans M 0 la
transition δ 0 (p, α) = q.
— Si h(a) = α1 α2 ...αn , avec αi ∈ Σ et n > 2, on crée (n − 1) nouveaux états p1 , p2 , ...,
pn−1 et on les ajoute dans E 0 , puis pour toute transition δ(p, a) = q dans M , on crée
les transitions (p, α1 , p1 ), (p1 , α2 , p2 ), ..., (pn−1 , αn , q) dans M 0 .
Il est clair qu’un mot w ∈ Σ∗ est accepté par M , si et seulement si h(w) ∈ Γ∗ est accepté
par M 0 .
7. Que peut-t-on déduire de la question 6 ?
Réponse : Si A est régulier sur Σ, alors h(A) est régulier sur Γ. En effet, si A est régulier
sur Σ, alors A est accepté par un AFD M . D’après la question 6, il existe un automate
fini qui accepte h(A), et donc h(A) est régulier sur Γ.

Pr. A. DARGHAM

Vous aimerez peut-être aussi