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