 |
EXERCICE 3 - SYSTEME EXPERT
Les listes chaînées (Version C) |
Le but de cet exercice est d'écrire ce que l'on appelle un système
expert. Il s'agit d'un mécanisme qui, à partir d'un certain nombre de faits, permet
de tirer des conclusions en s'appuyant sur des règles. Ici, on considérera l'exemple
suivant.
Base de faits:
F1: |
|
a trois côtés |
F2: |
|
a deux côtés égaux |
F3: |
|
a un angle droit |
F4: |
|
a trois angles égaux |
F5: |
|
triangle |
F6: |
|
triangle isocèle |
F7: |
|
triangle équilatéral |
F8: |
|
triangle rectangle |
F9: |
|
a plus de trois côtés |
F10: |
|
a moins de trois côtés |
F11: |
|
est impossible |
F12: |
|
est un polygone |
Base de règles:
R1: |
|
F12 et F1 F5 |
R2: |
|
F5 et F2 F6 |
R3: |
|
F5 et F3 F8 |
R4: |
|
F5 et F4 F7 |
R5: |
|
F10 F11 |
R6: |
|
F9 F12 |
R7: |
|
F1 F12 |
R8: |
|
F7 et F8 F11 |
Par exemple, si on a les faits F5 et F4
("triangle", "a trois angles égaux"), on peut
en déduire F7 ("triangle équilatéral"). La
base de faits et la base de règles seront stockées dans des fichiers. Le programme
consistera donc à lire ces bases, à demander à l'utilisateur une liste de
faits et à en tirer toutes les conclusions possibles.
Question 1: Ecrire les algorithmes nécessaires pour manipuler une
liste de faits.
lireBaseFaits qui lit une base de faits dans un fichier et stocke les
intitulés dans un tableau,
afficherBaseFaits qui affiche une base de faits,
ajouterFait qui ajoute un fait en tête dans une liste de faits,
saisirListeFaits qui permet la saisie d'une liste de faits,
afficherListeFaits qui affiche une liste de faits.
La structure employée pour une liste de faits est la suivante.
structure FAIT:
ENTIER id;
FAIT * suivant;
fin structure;
Question 2: Ecrire les algorithmes nécessaires pour manipuler une
liste de règles.
ajouterRegle qui ajoute une règle en tête dans une liste de
règles,
lireRegle qui lit une règle dans un fichier,
lireBaseRegles qui lit une base de règles dans un fichier,
afficherListeRegles qui affiche une liste de règles.
La structure employée pour une liste de règles est la suivante.
structure REGLE:
ENTIER id;
FAIT * hypotheses;
FAIT * conclusions;
REGLE * suivant;
fin structure;
Question 3: Ecrire les algorithmes nécessaires pour trouver les
conclusions à partir de la liste de faits saisie par l'utilisateur.
faitPresent qui vérifie qu'un fait est bien dans une liste,
appliquerRegle qui applique une règle si la liste de faits le permet,
les nouveaux faits trouvés sont alors ajoutés à la liste de faits,
supprimerRegle qui supprime une règle de la liste de règles (en
effet, une fois appliquée une règle devient inutile),
trouverConclusions qui trouve toutes les conclusions déductibles
à partir d'une liste de faits,
afficherConclusions qui affiche toutes les conclusions trouvées (sous
une forme claire).
Question 4: Ecrire les algorithmes viderListeFaits et
viderListeRegles pour vider les listes de faits et de règles afin de
libérer la mémoire occupée par les faits et les règles.
|
|