From 8b518df7582f70bd3ed35f8e3ecf7c979fa63209 Mon Sep 17 00:00:00 2001 From: Florent Madelaine Date: Thu, 12 Mar 2026 17:50:46 +0100 Subject: [PATCH] TP 13 mars 2026 --- 2026/TPAutomate1.jff | 104 ++++++++++++++++++++++ 2026/TPAutomate2.jff | 118 +++++++++++++++++++++++++ 2026/TPAutomate3.jff | 51 +++++++++++ 2026/TPAutomate4.jff | 94 ++++++++++++++++++++ 2026_TP_Determinisation_Equivalence.md | 108 ++++++++++++++++++++++ 5 files changed, 475 insertions(+) create mode 100644 2026/TPAutomate1.jff create mode 100644 2026/TPAutomate2.jff create mode 100644 2026/TPAutomate3.jff create mode 100644 2026/TPAutomate4.jff create mode 100644 2026_TP_Determinisation_Equivalence.md diff --git a/2026/TPAutomate1.jff b/2026/TPAutomate1.jff new file mode 100644 index 0000000..c6fa48a --- /dev/null +++ b/2026/TPAutomate1.jff @@ -0,0 +1,104 @@ + + fa + + + + 152.0 + 203.0 + + + + 273.0 + 129.0 + + + 465.0 + 126.0 + + + + 278.0 + 268.0 + + + 467.0 + 254.0 + + + + 592.0 + 189.0 + + + + 1 + 1 + a + + + 1 + 2 + b + + + 3 + 3 + a + + + 5 + 5 + a + + + 1 + 1 + b + + + 3 + 3 + b + + + 5 + 5 + b + + + 0 + 1 + a + + + 4 + 5 + b + + + 4 + 5 + a + + + 0 + 3 + b + + + 2 + 5 + b + + + 3 + 4 + a + + + 2 + 5 + a + + + \ No newline at end of file diff --git a/2026/TPAutomate2.jff b/2026/TPAutomate2.jff new file mode 100644 index 0000000..36757ea --- /dev/null +++ b/2026/TPAutomate2.jff @@ -0,0 +1,118 @@ + + fa + + + + 152.0 + 203.0 + + + + 273.0 + 129.0 + + + 465.0 + 126.0 + + + + 278.0 + 268.0 + + + 467.0 + 254.0 + + + + 592.0 + 189.0 + + + 709.0 + 191.0 + + + + 1 + 1 + a + + + 1 + 2 + b + + + 4 + 4 + a + + + 5 + 5 + a + + + 3 + 3 + b + + + 2 + 2 + b + + + 2 + 1 + a + + + 6 + 6 + b + + + 0 + 1 + a + + + 5 + 6 + a + + + 6 + 5 + b + + + 5 + 4 + a + + + 0 + 3 + b + + + 5 + 2 + b + + + 4 + 3 + b + + + 3 + 4 + a + + + \ No newline at end of file diff --git a/2026/TPAutomate3.jff b/2026/TPAutomate3.jff new file mode 100644 index 0000000..cf95807 --- /dev/null +++ b/2026/TPAutomate3.jff @@ -0,0 +1,51 @@ + + fa + + + + 99.0 + 161.0 + + + + 227.0 + 172.0 + + + 380.0 + 166.0 + + + + + 0 + 0 + a + + + 2 + 2 + a + + + 1 + 1 + b + + + 1 + 2 + a + + + 2 + 1 + b + + + 0 + 1 + b + + + \ No newline at end of file diff --git a/2026/TPAutomate4.jff b/2026/TPAutomate4.jff new file mode 100644 index 0000000..f8b4087 --- /dev/null +++ b/2026/TPAutomate4.jff @@ -0,0 +1,94 @@ + + fa + + + + 79.0 + 174.0 + + + + 156.0 + 75.0 + + + 168.0 + 234.0 + + + 298.0 + 72.0 + + + + 291.0 + 239.0 + + + 406.0 + 141.0 + + + + + 3 + 3 + a + + + 2 + 4 + b + + + 1 + 1 + b + + + 0 + 1 + b + + + 3 + 4 + b + + + 4 + 5 + a + + + 5 + 4 + b + + + 4 + 1 + b + + + 0 + 2 + a + + + 2 + 0 + a + + + 1 + 3 + a + + + 5 + 3 + a + + + \ No newline at end of file diff --git a/2026_TP_Determinisation_Equivalence.md b/2026_TP_Determinisation_Equivalence.md new file mode 100644 index 0000000..4cfd939 --- /dev/null +++ b/2026_TP_Determinisation_Equivalence.md @@ -0,0 +1,108 @@ +# BUT2 Théorie des langages +# TP du vendredi 13 mars 2026 (FI) + +Ce TP revient en détails sur les notions suivantes. + +* automate non déterministe +* mise en pratique de la déterminisation +* mise en pratique du test de l'équivalence de 2 automates + + +Vous devez faire ce TP sur papier ou sur votre ordinateur. +Vous pouvez vous aider de JFLAP. + +Il faut écrire vos réponses soit sur un papier, soit dans un fichier en Markdown. + +Votre réponse (scannée ou en markdown) sera intégrée dans un répertoire git qui s'appelle : + + BUT2_TOMATE_26 + +Il faut partager ce git avec Florent Madelaine et Yves Kasparian. + + + +## QCM + +Pour voir si vous êtes à jour dans votre cours. +Plusieurs bonnes réponses possibles pour une question. + + +### Question 1. + +* Un automate accepte un mot si on peut dans l'automate fabriquer un chemin étiquetté par les lettres du mot de gauche à droite en suivant des transitions de l'automate depuis l'état initial vers un état acceptant. + +* Un automate est non déterministe si il existe deux états depuis lequel il existe une transition avec la même lettre. + +* Un automate est non déterministe si il existe un état depuis lequel il existe deux transitions avec la même lettre. + +* Un automate non déterministe rejette un mot si on peut dans l'automate fabriquer un chemin étiquetté par les lettres du mot de gauche à droite en suivant des transitions de l'automate depuis l'état initial vers un état non-acceptant. + +* Il existe plusieurs chemins pour un mot dans un automate non-déterministe + +* Il existe plusieurs chemins pour un mot dans un automate déterministe + +### Question 2. + +* Il existe un automate non déterministe qui reconnaît un langage L qui ne peut pas être reconnu par un automate déterministe + +* Il existe toujours un automate déterministe qui reconnaît le même langage qu'un automate non déterministe, mais on ne sait pas toujours le construire. + +* Il existe toujours un automate déterministe qui reconnaît le même langage qu'un automate non déterministe, et on peut automatiser la construction. + Dans le pire des cas on va obtenir un automate qui a un nombre d'état qui est $2^n -1$ si l'automate non déterministe de départ a $n$ états. + +### Question 3. + +* On peut tester l'équivalence de 2 automates déterministes en testant avec des mots au hasard de taille 42 et conclure ou non que les automates sont équivalents. + +* Si deux automates déterministes ne sont pas équivalents, il existe un mot qui peut servir de contre exemple de longueur au plus $n*m-1* si $n$ et $m$ sont le nombre d'états respectifs des automates. + +* On ne peut pas tester si deux automates non-déterministes sont équivalents, par contre on peut tester si un automate non déterministe est équivalent à un autre automate qui lui est déterministe. + + +## Mise en oeuvre : déterminisation. + +On considère l'automate TPAutonate1.jff dans le répertoire 2026. + +1. Est-ce que cet automate est déterministe? +1. Est-ce que le mot aa est accepté? pourquoi? +1. Même question pour le mot aaba. +1. Pour les 2 mots ci-dessus, écrivez l'arbre de calcul. +1. Est-ce que vous pouvez déterminisez cet automate? + +## Mise en oeuvre : déterminisation. + +On considère l'automate TPAutonate2.jff dans le répertoire 2026. + +1. Est-ce que cet automate est déterministe? +1. Est-ce que le mot aa est accepté? pourquoi? +1. Même question pour le mot aaba. +1. Pour les 2 mots ci-dessus, écrivez l'arbre de calcul. +1. Est-ce que vous pouvez déterminisez cet automate? + +## Mise en oeuvre : équivalence + +On considère les automates TPAutonate3.jff et TPAutonate4.jff dans le répertoire 2026. + +1. Est-ce-que ces automates sont déterministes? +1. Est-ce-que ces automates sont complets? +1. Est-ce que ces automates sont équivalents? + +## Mise en oeuvre : équivalence + +On revisite les automates TPAutonate1.jff et TPAutonate2.jff dans le répertoire 2026. + +1. Est-ce que ces automates sont équivalents? + +## Pourquoi? + +Reprendre le QCM du départ en justifiant chaque réponse. + +## Pour aller plus loin : Équivalence. + +On considère 2 programmes en java qui prennent en entrée un entier un int et retourne un booléen. +Est-ce qu'on peut tester si les deux programmes sont équivalents? + +Même question pour un programme qui prend en entrée un fichier texte. + + +