Feuille de TD n 1

Transcription

Feuille de TD n 1
IUT Info 1A
Année 2007-08
Période 1
Graphes et Automates
B. Gugger
F. Madelaine
C. Simon
D. Richard
Feuille de TD n◦1
Les polycopiés du cours, les feuilles de TD et quelques corrigés sont disponibles à
l’url suivante.
http ://laic.u-clermont1.fr/~fmadelaine/teaching/graphe1.html
1
Premiers pas
Alphabet et langage
On se fixe un alphabet, par exemple {a, b}. Un langage est un sous-ensemble particulier
de tous les mots possibles (en utilisant cet alphabet). Notons que le mot vide est considéré
comme un mot à part entière qu’on note par ε. On va voir que certains langages (les langages
dit réguliers) peuvent être reconnus par des machines très simples qu’on va étudier dans ce
cours : les automates.
Mon premier automate
Un automate est représenté par un dessin comme suit :
Un rond correspond à un état et un arc correspond à une transition. Un rond double est un
état acceptant. Une flèche entrante représente un état initial.
Langage d’un automate
On dira que le mot aba est accepté par la machine puisqu’on peut lire ce mot en suivant
les transitions lettre à lettre de gauche à droite, et finir dans un état acceptant.
Par contre le mot bbbb n’est pas accepté (on dit aussi qu’il est rejeté) puisque en lisant ce
mot en suivant les transitions lettres à lettres de gauche à droite, on arrive dans un état qui
n’est pas un état acceptant.
Parfois, on ne peut plus se déplacer depuis un état puisque la transition correspondant à
la lettre qu’on veut lire n’existe pas. C’est le cas par exemple pour le mot ba. Dans ce cas on
considère aussi que l’automate rejete le mot.
On définit le langage de l’automate comme l’ensemble des mots qui sont acceptés par cet
automate.
1
feuille de TD n◦ 1
Graphe et Automates
Exercice 1. On travaille sur l’alphabet {d, e, h, l, o, w, r} On considère l’automate suivant.
Le mot helloworld est-il accepté ou rejeté par l’automate ? Quel est le langage de l’automate ?
Exercice 2. Dessinez les automates qui reconnaissent
a
b
c
d
e
f
-
(pour l’alphabet {a, b})
le langage réduit au mot vide ;
les mots de 2 lettres ;
les mots contenant exactement 2 a ;
les mots contenant 2 a consécutifs ;
les mots commançant par b ;
les mots terminant par bab ;
(pour l’alphabet {a, b, c})
g - les mots de taille multiple de 3 ;
h - les mots tels que deux lettres consécutives
soient distinctes ;
i - les mots dont la première lettre est égale
à la dernière.
Exercice 3. Dans un supermarché, le travail d’une caissière peut être décrit ainsi : elle
prépare un sac (S), puis pour chaque article : elle prend l’article (A), lit son code barre (C) et
le range dans le sac (R) et ceci jusqu’à épuisement. Ensuite elle encaisse (E). Puis elle passe
au client suivant et recommence.
Modéliser le travail de la caissière par un automate (l’alphabet est σ = {S, A, C, R, E}).
2
Décrire les langages
Afin de pouvoir plus facilement décrire les langages reconnus par les automates sur lesquels
on travaille, on va définir trois opérations sur les langages.
La concaténation. C’est l’opération qui consiste à coller un mot après un autre. On la note
comme la multiplication, c’est-à-dire par un point mais aussi le plus souvent par rien. Par
exemple la concaténation de aa avec babb est le mot aababb. On parle aussi de la concaténation
de deux langages L1 et L2 . Il s’agit tout simplement de tous les mots de la forme w1 w2 (w1
concaténé à w2 ) avec w1 un mot du langage L1 et w2 un mot du langage L2 . On la note L1 L2 .
L’addition. C’est l’opération qui correspond à l’union de deux langages. On la note par un
+. Plus précisément, on a L1 + L2 = {w mot tel que w ∈ L1 ou w ∈ L2 } = L1 ∪ L2 .
L’étoile. C’est l’opération qui correspond à faire la concaténation un nombre fini (mais
arbitrairement grand) de fois d’un langage avec lui-même. Par exemple (ab)? correspond au
langage avec les mots ε (concaténation 0 fois), ab (une fois), abab (deux fois), ababab (trois
fois), et ainsi de suite. Notez que l’étoile d’un langage qui contient un mot différent du mot
vide est forcément infini. Notez aussi comment on écrit simplement ab pour le langage {ab}.
2
feuille de TD n◦ 1
Graphe et Automates
Exercice 4. Une machine à café simple : une machine à café accepte des pièces de 10 centimes
et 20 centimes. Un café coûte 30 centimes. Lorsque l’appoint est fait, elle libère un bouton
qui permet d’obtenir le café. Elle ne rend pas la monnaie.
a - Réaliser un automate correspondant à cette machine.
b - L’alphabet de l’automate est {d, v, k}, d, v et k signifient les actions : mettre une pièce
de 10c, 20c et pousser le bouton d’obtention du café. Quel est le langage accepté par
l’automate ?
c - Refaire un automate permettant de payer deux cafés avant de les obtenir.
Exercice 5. Faire un automate d’alphabet {a, b} qui reconnaı̂t des mots contenant un nombre
pair de a et de b. Déterminer le langage accepté.
Exercice 6. a - Construire un automate d’alphabet {a, b} reconnaissant les mots contenant
exactement deux lettres a. Déterminer son langage (on en demande pas d’algorithme ici).
b - Construire un automate d’alphabet {a, b} reconnaissant les mots contenant exactement
deux lettres a ou bien deux lettres b (ou non exclusif). Déterminer les expressions rationnelles du langage.
Exercice 7. Faire un automate d’alphabet {0, 1} reconnaissant les multiples de 6 parmi les
mots rencontrés, considérés comme des nombres écrits en binaire.
Exercice 8. Construire un automate d’alphabet {a, b} reconnaissant les expressions rationnelles a(a + b)∗ b (on commencera par faire un automate non déterministe).
Exercice 9. En employant l’algorithme vu en cours, déterminer le langage associé à l’automate 1 suivant :
Exercice 10. Soit Σ = {a, b}. On pose L = (b + aa)∗ .
a - Quels sont les mots de L de longueur 3 ? de longueur inférieure à 5 ?
b - Donner une définition de L en compréhension.
Exercice 11. Pour un alphabet Σ, on considère une lettre a, trois langages A, L et M .
a - Si aL = aM , a-t-on L = M ?
b - Si AL = AM , a-t-on L = M ?
Exercice 12. Parmi les langages suivants (définis sur le même alphabet), déterminer ceux-qui
sont égaux entre eux :
(L + M )∗
(LM )∗ L
L(LM )∗
(L∗ + M )∗
(M ∗ + L)∗
(L∗ M ∗ )∗
(M ∗ L∗ )∗
(L∗ + M ∗ )∗
3