# 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.



