From b59dea375089e1e4d98b4ae3f707c26218e10ad5 Mon Sep 17 00:00:00 2001 From: Tarehi ZAABAY Date: Tue, 31 Mar 2026 16:09:59 +0200 Subject: [PATCH] =?UTF-8?q?T=C3=A9l=C3=A9verser=20les=20fichiers=20vers=20?= =?UTF-8?q?"/"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 2026_TP_Determinisation_Equivalence.md | 108 ++++++++++++++++++++++ TPAutomate1.jff | 104 ++++++++++++++++++++++ TPAutomate2.jff | 118 +++++++++++++++++++++++++ TPAutomate3.jff | 51 +++++++++++ TPAutomate4.jff | 94 ++++++++++++++++++++ 5 files changed, 475 insertions(+) create mode 100644 2026_TP_Determinisation_Equivalence.md create mode 100644 TPAutomate1.jff create mode 100644 TPAutomate2.jff create mode 100644 TPAutomate3.jff create mode 100644 TPAutomate4.jff diff --git a/2026_TP_Determinisation_Equivalence.md b/2026_TP_Determinisation_Equivalence.md new file mode 100644 index 0000000..ebcb880 --- /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. + +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. + +1. Un automate est non déterministe si il existe deux états depuis lequel il existe une transition avec la même lettre. + +1. Un automate est non déterministe si il existe un état depuis lequel il existe deux transitions avec la même lettre. + +1. 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. + +1. Il existe plusieurs chemins pour un mot dans un automate non-déterministe + +1. Il existe plusieurs chemins pour un mot dans un automate déterministe + +### Question 2. + +1. Il existe un automate non déterministe qui reconnaît un langage L qui ne peut pas être reconnu par un automate déterministe + +1. 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. + +1. 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. + +1. 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. + +1. 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. + +1. 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. + + + diff --git a/TPAutomate1.jff b/TPAutomate1.jff new file mode 100644 index 0000000..c6fa48a --- /dev/null +++ b/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/TPAutomate2.jff b/TPAutomate2.jff new file mode 100644 index 0000000..36757ea --- /dev/null +++ b/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/TPAutomate3.jff b/TPAutomate3.jff new file mode 100644 index 0000000..cf95807 --- /dev/null +++ b/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/TPAutomate4.jff b/TPAutomate4.jff new file mode 100644 index 0000000..f8b4087 --- /dev/null +++ b/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