Langages et automates Exercices

publicité
Langages et automates
Exercices
Ex 1
1. Soient K, L deux langages sur un alphabet A. On suppose que K ne contient pas le mot vide.
Montrer qu’il existe un unique langage X sur A tel que X = KX + L et décrire explicitement
X.
2. Sur l’alphabet {a, b}, on considère le langage L0 (resp. L1 ) des mots ayant un nombre pair
(resp. impair) de b. Trouver des relations entre L0 et L1 puis utiliser le résultat précédent pour
expliciter L0 et L1 à l’aide des opérations décrites plus haut.
√
∗
Ex 2 Soit L un
√langage quelconque sur A = {a, b, c}. On définit L = {x ∈ A / x.x ∈ L}.
a. Décrire L dans le cas où L est l’ensemble des mots commençant par ab.
b. Même question
si L est l’ensemble
des mots qui contiennent le facteur ab.
√
√
c. A-t-on L2 = L ? A-t-on ( L)2 = L ?
Ex 3 Construire un automate fini déterministe reconnaissant le langage L = {an bp / n = p[3]}.
Ex 4 Les entiers non nuls admettent une unique représentation binaire de bit de poids fort égal à 1.
1. Donner un automate déterministe reconnaissant les mots sur l’alphabet {0, 1} qui sont l’écriture
binaire des entiers non nuls multiples de 5.
2. Même question quand le bit de poids fort est à droite.
Ex 5 Sur l’alphabet {0, 1}, on considère le langage L = 1 · (0 + 1)∗ des mots qui commencent par
1. Chaque mot u ∈ L peut être considéré comme l’écriture d’un entier binaire n ; on note alors s(u)
le mot correspondant à l’écriture binaire de n + 1. Trouver un automate qui reconnaı̂t le langage
{u ∈ L/ |u| = |s(u)|}.
Ex 6 Déterminiser l’automate suivant
y
y
x, y
? x
?
j ? x
x - 0
2
3
4
Y
@
x
6
?
@ y
@ x
y
@ R
@
1
6
y
Ex 7 Déterminiser l’automate suivant.
a, c
b s
s
b, c
6
3 a, c 2
1
4
5
b k k a, c ?
6 b
?
Ex 8 Un barman aveugle joue au jeu suivant avec un client : il a devant lui un plateau sur lequel sont
disposés quatre verres formant un carré. Chacun de ces verres peut être retourné ou non, sans que le
barman ne le sache. Le but de ce dernier est de s’arranger pour que tous les verres soient tournés dans
le même sens. Pour ce faire, il peut à chaque tour choisir l’une des trois actions suivantes :
1
- tourner l’un des verres ;
- tourner deux verres voisins ;
- tourner deux verres opposés.
Mais pour corser la difficulté, le client peut tourner le plateau d’un nombre quelconque de quart de
tours entre chacune des actions du barman. Le jeu s’arrête dès qu’une des deux positions gagnantes
est atteinte.
1. Montrer qu’on peut restreindre à quatre le nombre de configurations différentes, puis représenter
les actions possibles du jeu par un automate non déterministe.
2. Déterminiser cet automate et en déduire une stratégie gagnante pour le barman.
Ex 9 Construire un automate fini (pas forcément déterministe) qui reconnaı̂t le langage (a + b)∗ a2 b.
Le déterminiser.
Ex 10 Donner une description en français des langages représentés par les expressions rationnelles
suivantes :
(b + ab)∗ (a + ε), (ab∗ a + b)∗
Ex 11 Donner des expressions rationnelles représentant les langages suivants.
1. Les mots sur l’alphabet {a, b} qui contiennent au moins un a.
2. Les mots sur l’alphabet {a, b} qui contiennent au plus un a.
3. Les mots sur l’alphabet {a, b} dont la longueur n’est pas divisible par 3.
4. Les mots sur l’alphabet {a, b} tels que deux lettres consécutives sont distinctes.
5. Les mots sur l’alphabet {a, b, c} tels que deux lettres consécutives sont distinctes.
Ex 12 Montrer que si L est un langage local, le langage L0 des facteurs des mots de L est aussi local.
Ex 13 Montrer qu’un langage L sur l’alphabet A est local si et seulement si
∀u, v, u0 , v 0 ∈ A∗ , ∀a ∈ A, (uav ∈ L et u0 av 0 ∈ L) ⇒ uav 0 ∈ L
Ex 14 On représente un langage local par un élément de type suivant :
type local = {
V : bool ;
P : char list ;
S : char list ;
F : (char*char) list };;
La champ V permet de savoir si le langage contient le mot vide ; les champs P, S et F correspondant
aux ensembles des premières lettres, dernières lettres et facteurs de taille 2.
Ecrire une fonction est dans l m : local → string → bool permettant de tester si un mot est
dans un langage local.
Ex 15 En utilisant l’algorithme de Glushkov, construire un automate déterministe qui reconnaı̂t le
langage aab∗ ab. Pouvez-vous donner un automate déterministe plus simple ?
Ex 16 En utilisant l’algorithme de Glushkov, construire un automate fini reconnaissant le langage
x∗ y{x, y}+ .
Ex 17 Montrer que {ap / p est premier} n’est pas reconnaissable. On raisonnera par l’absurde.
Ex 18 Montrer que sur un alphabet de cardinal au moins 2, l’ensemble des palindromes n’est pas
rationnel.
2
Ex 19 Si u ∈ A∗ , on note ũ l’image miroir de u (mot obtenu en inversant l’ordre des lettres). Montrer
que si L ∈ R(A) alors L̃ = {ũ/ u ∈ L} ∈ R(A).
Ex 20 Si u ∈ A∗ et si L est un langage sur A, on définit
u−1 L = {v ∈ A∗ / uv ∈ L}
Lu−1 = {v ∈ A∗ / vu ∈ L}
Soient
a.
b.
c.
a ∈ A et L ⊂ A∗ un langage.
Montrer que si L ∈ Rat(A∗ ) alors a−1 L ∈ Rat(A∗ ).
Montrer que si L ∈ Rat(A∗ ) et u ∈ A∗ alors u−1 L ∈ Rat(A∗ ).
Montrer que si L ∈ Rat(A∗ ) et u ∈ A∗ alors Lu−1 ∈ Rat(A∗ ).
Ex 21 Soit X un alphabet et u un mot sur cet alphabet. On dit que le mot v est un préfixe de u s’il
existe un mot w tel que u = vw. Ceci signifie que v est un “début” du mot u. Si L est un langage sur
X, on notera Pref(L) l’ensemble des préfixes des mots de L :
Pref(L) = {v ∈ X ∗ / ∃ w ∈ X ∗ : vw ∈ L}
1. A l’aide d’une induction structurelle, montrer que pour tout langage rationnel, pref(L) est
encore un langage rationnel.
2. Même question en utilisant la reconnaissabilité.
3
Téléchargement