Interrogation de la base de faits
Une fois les clauses écrites dans la fenêtre EDITEUR, il faut pour interroger cette base passer en mode RUN (option RUN du menu principal).
Le programme est compilé, c’est-à-dire traduit en langage machine.
Pendant cette phase, les erreurs de syntaxe sont signalées et la correction est attendue.
« Goal » s’affiche alors, dans la fenêtre réservée à l’exécution : Turbo Prolog est en attente d’un but à satisfaire.
Plusieurs possibilités s’offrent à l’utilisateur :
– S’il tape « aime(durand, football) », puis valide, ce fait se trouvant dans la base de données, la réponse va s’afficher : « TRUE ».
– S’il tape un fait n’existant pas, la réponse est « FALSE ».
– S’il tape aime(durand, X), après validation, tous les sports qu’aime durand vont s’afficher.
Exemple
goal : aime(durand, X)
X=football
X=tennis
2 solutions
– Les questions peuvent prendre une forme plus complexe, en utilisant le « et » logique, qui s’écrit « and » ou « , ».
Exemple : si on désire connaître les sports communs qu’aiment caroline et durand, on tapera :
aime(caroline, X) and aime(durand, X).
Remarque : dans les cas 3 et 4, la variable X a été utilisée. Turbo Prolog reconnait une variable au fait qu’elle commence par une majuscule. On aurait pu écrire « aime(durand, Loisir) », et les résultats seraient apparus de manière plus explicites.
goal : aime(durand, Loisir)
Loisir=football
Loisir=tennis
2 solutions
Remarque : On peut, tout aussi bien, écrire « Animal » au lieu et place de « Loisir », la réponse est alors : Animal = footall !
Les règles
Dans une troisième partie, les règles ont été introduites.
Si Dubois a les mêmes goûts que Durand, il n’est pas utile de tout réécrire, sous la même forme. Il suffit d’entrer une règle spécifiant que Dubois aime ce qu’aime Durand.Les sports seront figurés par une variable pouvant, par exemple, être appelée Sport (la majuscule du début est indispensable) et on écrira :
aime(dubois, Sport) if aime(durand, Sport).
On voit donc qu’une règle comporte 3 parties :
– La tête de règle ( prédicat unique précédant le if)
– La queue de règle ( ce qui suit le if)
– Le point final.
Remarque : un « programme » TURBOPROLOG peut contenir plusieurs prédicats, correspondant à des problèmes distincts, exemples :
aime ( symbol , symbol )
solution
identité( symbol , symbol , integer , symbol , symbol )
… etc…
Exercice proposé : Écrire le prédicat « grouper » qui donne les paires de personnes ayant des goûts communs.
Deuxième séance : après-midi
Amélioration de la lisibilité :
Le prédicat « identité », écrit ci-dessus est, tel quel, assez sybilin ; on peut le rendre plus explicite en le rédigeant ainsi :
identité ( prénom , sexe , âge , tel , ville )
Cela revient à utiliser de nouveaux types, mais, dans ce cas, il faut les créer : la section « predicates » doit alors, être obligatoirement précédée par une section appelée « domains » dans laquelle on indique la correspondance entre les mots utilisés (pour désigner les types des arguments des prédicats) et les types prédéfinis :
domains
prénom , sexe , tel , ville = symbol âge = integer
predicates
identité ( prénom , sexe , âge , tel , ville )
clauses
identité ( raoul , m , 34 , « 42.21.10.99 », marseille )
identité ( « Alexandra », f , 25 , poste_28 , « AIX-en-Pce » )
etc …
Exercices proposés :
– entrer quelques clauses de ce type
– essayer quelques interrogations.
Remarque : Ce prédicat permet de répondre à de nombreuses questions :
« Quelles sont les femmes de cette base ? » L’interrogation peut être de la forme :
goal : identité(Prénom, f, _, _, _)
dans laquelle le souligné « _ » représente ce que l’on appelle une variable anonyme. Le langage fournira tous les prénoms pour lesquels le deuxième paramètre est « f ».
Citer les prénoms de toutes les personnes de la base.
Où habite une personne donnée ?, …
– pour éviter de taper, à chaque interrogation, tous les paramètres de ce prédicat, (y compris les variables anonymes), il est commode d’en créer d’autres avec les seuls paramètres dont on a besoin.
Exercice proposé : Créer les prédicats suivants :
personne(P) femme(F) habite( Pers , Lieu )
majeur(Pers) est_dun_âge_supérieur_à (Pers1 , Age , Pers2) doyen( D )
Autre remarque : à ce stade là on constate que Turbo Prolog est bien un SGBD (système gestionnaire de bases de données) plutôt plus simple à utiliser qu’un autre.
Avec dBase, par exemple, il faut :
– 1. créer le fichier, en utilisant la commande create, répondre à toutes les questions, y compris fixer la longueur maximum des champs
– 2. saisir les fiches
– 3. l’interrogation se fait ensuite en posant des questions en utilisant la commande list :
list prénom,sexe,age for prénom= »louis »
1. correspond à « predicates », 2. à « clauses et 3. à goal : personne( louis , Sexe , Age , _ , _ )
On peut ensuite écrire un programme donnant tous les dîners possibles, des hors-d’œuvre, des plats de résistance, des desserts étant entrés dans une base de faits.(Voir programme dîner).
Troisième séance matin
Cette séance portait sur l’écriture de quelques prédicats arithmétiques :
1 Générer la suite des nombres entiers
les nombres entiers à un seul chiffre
générer les nombres entiers à deux chiffres
2 résoudre les problèmes d' »opérations à trous », exemple :
9 . 8
+ . 4 .
———-
.5.3
ou ceux du type U N E + U N E = D E U X dans laquelle chaque lettre représente un chiffre, deux lettres différentes représentant deux chiffres différents. Voir les solutions en annexe.
Remarque : Pour résoudre ces problèmes, il suffit de déclarer l’énoncé. TURBOPROLOG recherche lui-même, toutes les solutions, de manière systématique, méthodique, en essayant tous les chiffres un à un!
Quatrième séance après midi
Prolog FIL sur NR MO5
– arbre généalogique – description
– liens de parenté
– les listes – écriture (a,b,c, … n) ou (*T ; *Q)
– gestion
– quelques utilitaires – APPartient à
– CONCaténer
– INVerser
– COMPTer …
Cinquième séance
Visite du C.E.T.E. conférence et démonstration par des concepteurs et des utilisateurs de systèmes-experts
Sixième séance
Principes et écriture d’un mini-système-expert
1 – Qu’est-ce qu’un système expert ?
c’est un système informatisé
a) permettant d’aider un spécialiste dans un certain domaine
– à raisonner et à résoudre ses problèmes
– à prendre des décisions
b) conçu et construit par une équipe constituée d’informaticiens et d’experts, non informaticiens, ayant un savoir-faire et une bonne connaissance du domaine.
2 – De quoi se compose un système-expert ?
a) La connaissance, sous deux formes :
– des faits
– des règles de raisonnement sur ces faits
Cette connaissance n’est pas figée définitivement dans le programme, elle est accessible à l’expert qui peut ajouter ou soustraire des faits ou des règles, à tout moment
b) Le moteur d’inférence qui permet de faire les déductions et surtout, d’explorer toutes les solutions possibles
c) des logiciels interactifs permettant un dialogue simple entre l’homme et la machine.
Les stagiaires, sous forme de travail dirigé, ont constitué un pseudo système-expert d’aide au diagnostic médical
la base de faits est du type :
maladie ( nom , liste des symptômes de cette maladie ) Septième séance
Cette séquence avait pour but de montrer comment ce langage permet de résoudre un problème apparemment complexe, en représen-tant convenablement la connaissance et les buts à atteindre.
Il est très important de remarquer que, celui qui écrit le programme n’a pas à connaître la méthode de résolution du problème, si elle existe. Ce n’est pas le cas avec les langages algorithmiques.
Ici, la méthode employée consiste à mettre des listes en corres-pondance.
Voici le texte de l’exercice proposé :
Problème du zèbre
Dans ce problème, on travaille sur :
5 maisons, 5 hommes, 5 nationalités, 5 couleurs, 5 animaux,
5 boissons, 5 marques de cigarettes.
Les assertions suivantes sont énoncées :
– L’Anglais habite la maison rouge.
– Le chien appartient à l’Espagnol.
– On boit du café dans la maison verte.
– L’Ukrainien boit du thé.
– La maison verte est à côté de la blanche, à droite.
– Le fumeur de Old Gold élève des escargots.
– On fume des Kools dans la maison jaune.
– On boit du lait dans la maison du milieu.
– Le Norvégien habite la première maison à gauche.
– Le fumeur de Chesterfield habite à côté du propriétaire du renard.
– Le fumeur de Gitanes boit du vin.
– Le Japonais fume des Cravens.
– Le Norvégien habite à côté de la maison bleue.
– Le fumeur de Kools habite à côté du propriétaire du cheval.
Qui boit de l’eau ?
A qui appartient le zèbre ?
Autre exercice proposé : les métiers. (Un cas plus simple d’énigme.) Voir en annexe les solutions des stagiaires.
1 – Introduction
2 – Programme prévisionnel
3 – Résume succinct des séances
4 – Mise en route de Turbo Prolog
5 – Les types prédéfinis
6 – Structure générale d’un programme
7 – Exemples de solutions
8 – Programmation en Prolog