Le langage Prolog

1 060 vues

Publié le

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 060
Sur SlideShare
0
Issues des intégrations
0
Intégrations
8
Actions
Partages
0
Téléchargements
71
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Le langage Prolog

  1. 1. Bruno Delb http://www.brunodelb.com Date : 27/12/1998 Le langage Prolog SommaireINTRODUCTION..........................................................................................................2COMMENT EST STRUCTURÉ UN PROGRAMME ?...........................................................3 QUELLE EST LA STRUCTURE GÉNÉRALE D’UN PROGRAMME ?...........................................................3 QU’EST-CE QU’UN PRÉDICAT ?............................................................................................3 QU’EST-CE QU’UN TERME ?................................................................................................3 QU’EST-CE QUE LE REGROUPEMENT EN PAQUET ?......................................................................3COMMENT CONSTRUIRE DES RELATIONS ?................................................................4 QUE FAUT-IL SAVOIR SUR LES RELATIONS ?............................................................................4 COMMENT EST EXÉCUTÉE UNE RELATION ?..............................................................................4REVOIR LES CHOSES DE PLUS PRÈS...........................................................................5 QU’EST-CE QU’UN ARBRE ?................................................................................................5 QU’EST-CE QUE LUNIFICATION ?.........................................................................................5 QU’EST-CE QUE LA SUBSTITUTION ?......................................................................................5 QU’EST-CE QUE LEFFACEMENT ?..........................................................................................5 Présentation............................................................................................................5 Algorithme..............................................................................................................5 Recherche de solution..............................................................................................7 1
  2. 2. Bruno Delb http://www.brunodelb.com Date : 27/12/1998 Le langage PrologIntroduction Prolog a été développé par des chercheurs en IA à linitiative du Japon, en octobre 1981, lorsque le Japon invite quelques uns des principaux responsables occidentaux de la recherche et du développement pour leur présenter un projet ambitieux de développement de systèmes de « cinquième génération ». Quinze ans après Lisp, A. Comerauer, dans le but de créer un langage pour la programmation des problèmes danalyse de la langue naturelle, met au point, grâce à la logique du premier ordre et la démonstration automatique de théorème, le langage Prolog. Le premier interprète été écrit en 1973 par P. Roussel (écrit en Fortran). Les principales différences avec les langages classiques sont les suivantes : • Le Prolog est un langage déclaratif et non procédural (on y donne uniquement les données). • Il a un travail non déterministe car il travaille avec des objets partiellement inconnus (il cherche toutes les solutions). Ses applications sont : • pour toute communication de langage naturel avec lordinateur • pour des calculs formels • pour les constructions de plan en robotique • pour faire des compilateurs • pour faire des SE Sont évolution est : • portabilité • interactivité, avec un éditeur écrit en Prolog • extensibilité • fiabilité 2
  3. 3. Bruno Delb http://www.brunodelb.com Date : 27/12/1998 Le langage PrologComment est structuré un programme ? Quelle est la structure générale d’un programme ? Cest la représentation et utilisation des connaissances (ensemble de relations qui décrivent les propriétés de ces objets et leurs interactions) que lon a sur un certain domaine (ensemble dobjets). Sil y a une relation entre les objets, alors lordre est significatif . Paul est le père de Jean. RELATION (ou PREDICAT) = « être père » OBJETS (ou ARGUMENTS) = « Jean » et « Paul » On dira : « est_père_de (Paul, Jean) ». Poser la question « Qui est le père de Jean ? » : « est_père_de (x, Jean) »x est donc une variable. Qu’est-ce qu’un prédicat ? Cest un mélange de règles et dassertions. Un programme Prolog est une suite de règles. Une règle est constituée dune tête de règle (un seul prédicat) et dune queue de règle (une suite de littéraux reliées par ":-" ou "if"). Qu’est-ce qu’un terme ? Les termes (règles, littéraux, arguments) peuvent être une constante (identificateur, nombre, chaîne de caractères), une variable ou un terme structuré (u-plet). Qu’est-ce que le regroupement en paquet ? Lensemble des règles et assertions (clauses) permettant de définir un prédicat doivent être regroupé obligatoirement en paquet. 3
  4. 4. Bruno Delb http://www.brunodelb.com Date : 27/12/1998 Le langage PrologComment construire des relations ? Que faut-il savoir sur les relations ? Pour satisfaire une conjonction de relations, on les examine de gauche à droite. Au cours de lexécution, certaines variables peuvent recevoir des valeurs, si une variable reçoit une variable, toutes ses occurences prennent la même valeur. Dans une relation, il ny a a pas de distinction entre argument dentrée et de sortie. Comment est exécutée une relation ? Lexécution est non déterministe : on calcule tous les jeux de valeur qui satisfont la relation. Au cours de lexécution, lorsque Prolog tente de trouver une relation dans la base, il prend les paquets dans lordre où ils se présentent. 4
  5. 5. Bruno Delb http://www.brunodelb.com Date : 27/12/1998 Le langage PrologRevoir les choses de plus près Qu’est-ce qu’un arbre ? Un arbre est constitué dune racine et de sous arbres qui sont eux-mêmes des arbres. Tout noeud sans descendant est dit terminal ou feuille. En Prolog, un arbre peut être partiellement inconnu. Dans ce cas, une au moins de ses feuilles se réduit à une variable. Qu’est-ce que lunification ? Soit deux arbres comportant éventuellement des parties variables, lunification cest consister à trouver, si elles existent, les valeurs que doivent prendre les variables présentes dans lun ou lautre des arbres pour que ceux-ci coïncident. Cest la principale opération effectuée sur les arbres. Cest le mécanisme fondamental de Prolog pour tenter de trouver des réponses aux questions. Qu’est-ce que la substitution ? Ensemble des égalités (variables = valeurs) qui rendent les deux arbres égaux. Qu’est-ce que leffacement ? Présentation « P (...) if Q (...), R (...) » peut sinterpréter par : « pour effacer P (...), effacer Q (...) puis R (...) ». « S (...) » peut sinterpréter par : « S (...) sefface ». Une question « S1 (...) S2 (...), ...., Sn (...) » peut sinterpréter par : « effacer S1 (...) puis S2 (...) .... puis Sn (...) ». Algorithme • à la fin, si tout est effacé, alors cest un succès : ce sont les substitutions pour les valeurs de la question 5
  6. 6. Bruno Delb http://www.brunodelb.com Date : 27/12/1998 Le langage Prolog • sinon, si lon bute sur un terme quon ne réussit par à effacer, cest échec • dans les deux cas : - retour en arrière - reconsidèrer le dernier choix que lon a fait pour tenter deffacer le terme dune autre façon Question Indiquer quelles relations existent entre certains objets : PERE (ANATOLE, BERNARD); PERE (ANATOLE, CHARLES); Réponse Anatole est-le-père-de Bernard. Anatole est-le-père-de Charles. Question PERE (ANATOLE, BERNARD); Réponse Oui. Question PERE (ANATOLE, XAVIER); Réponse Il nen sait rien. Question PERE (ANATOLE, qui); Réponse qui= BERNARD qui= CHARLES 6
  7. 7. Bruno Delb http://www.brunodelb.com Date : 27/12/1998 Le langage Prolog On déclare des règles : GRAND_PERE (Pepe, Fiston) -> PERE (Pepe, Papa); PERE (Papa, Fiston); Pepe EST-LE-GRAND-PERE de Fiston sil existe une valeur de Papa pour laquelle Pépé EST-LE-PERE-DE Papa ET Papa EST-LE-PERE-DE Fiston.Recherche de solution Constituons une famille à laide des règles suivantes : PERE (ANATOLE, BERNARD); PERE (ANATOLE, CHARLES); PERE (BERNARD, DIDIER); PERE (CHARLES, ERIC); GRAND_PERE (Pepe, Fiston) -> PERE (Pepe, Papa); PERE (Papa, Fiston); Soit : ANATOLE BERNARD CHARLES DIDIER ERIC On pose la question : PERE (BERNARD, qui); Prolog cherche dans le programme si quelque chose lui permet de trouver la valeur de "qui" telle que PERE (BERNARD, qui) soit vrai. PERE (ANATOLE, BERNARD); PERE (ANATOLE, CHARLES); PERE (ANATOLE, DIDIER); qui= DIDIER PERE (ANATOLE, ERIC); La réponse est donc : qui= DIDIER A la question : PERE (ANATOLE, Enfant); 7
  8. 8. Bruno Delb http://www.brunodelb.com Date : 27/12/1998 Le langage Prolog Prolog cherche : PERE (ANATOLE, BERNARD); enfant= BERNARD PERE (ANATOLE, CHARLES); enfant= CHARLES PERE (ANATOLE, DIDIER); PERE (ANATOLE, ERIC); La réponse est donc : enfant= BERNARD enfant= CHARLES Question : GRAND_PERE (ANATOLE, Petit); Prolog commence ici par la règle 5 : GRAND_PERE (Pepe, Fiston) -> PERE (Pepe, Papa); PERE (Papa, Fiston); Cest vrai si : • Pepe = ANATOLE • Fiston = Petit • PERE (ANATOLE, Papa); est vrai • PERE (Papa, Petit); est vrai Prolog essaie : PERE (ANATOLE, Papa); papa= BERNARD PERE (BERNARD, Petit); petit= DIDIER PERE (ANATOLE, Papa); papa= CHARLES PERE (CHARLES, Petit); petit= ERIC 8

×