J'ai commencé le prolog il y a quelques semaines et j'ai des difficultés sur un exercice.
Voici l'énoncé :
On définit un automate par A = (Q, q0, F, A, R), tels que :
Q est un ensemble finit d'états ;
q0 ε Q est l'état initial de l’automate ;
F ε Q est l'ensemble des états finaux de l’automate;
A est un ensemble fini d’étiquettes ou alphapbets;
R ⊆ Q x A x Q est une relation de transition. Chaque transition (q, a, q’ ) ε R
représente une transition d'un état source q vers un autre état cible q’, suite à
l'activiation de la lettre a.
Travail demandé :
1. Implémenter le prédicat automate en prolog et illustrez votre proposition avec une base de
faits de votre choix.
2. Donnez des requêtes d’interrogation de votre prédicat : recherche de l’état initial,
vérification si un état est final ou non, existence d’une transtion particulière... ?
3. Pour améliorer le prédicat automate, on considère que les états de l’automate sont de troix
types (initial, final et intermédiaire). La nouvelle spécification de l’automate devient :
automate (états, alphabet, transitions). Implémenter la nouveau prédicat automate.
4. Dans un automate, on définit un chemin par une combinaison finie d’états et des lettres de
l’alphabet de cet automate: c= q0.a0.q1.a1...qn.an.qn+1. Un chemin est dit complet s’il
commence par un état intial et il se termine à un état final ; c'est-à-dire si qn+1 ε F.
Donnez le prédicat chemin_complet qui permet de construire tous les chemins complets
d’un automate. (entrées : la base des faits + prédicat automate, sortie: liste des chemins
complets).
5. A partir du chemin complet on extrait les mots exprimant uniquement la séquence des
noms des transitions (c'est-à-dire les lettres de l’alphabet). On peut voir un mot de
l’automate comme une liste de lettres de l’alphabet.
Implémenter un prédicat déterminant si un mot est reconnu par un automate. Un mot est
reconnu par l’automate s’il commence par un état initial et se termine à un état final.
Testez votre prédicat avec la base des faits de la question 1.
6. Améliorer vos prédicats afin de pouvoir tester si l’automate est déterministe.
NB : Un automate est détreministe si à partir d’un état q ne peut sortir qu’une transition
unique de nom a. Dans ce cas, les transitions à partir de chaque état sont déterminées de
façon unique par le symbole d'entrée.
Partager