Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parAubert Courtois Modifié depuis plus de 10 années
1
On parle darbre de recherche dune question *Racine de larbre : question *Nœuds : points de choix (formule à démontrer) *Passage dun nœud vers son fils en considérant lune des règles et en effectuant une unification et une étape (pas) de démonstration CSI2520
2
*Nœuds de gauche à droite dans lordre de déclaration des règles *Nœuds d'échec : aucune règle ne permet de démontrer la première formule du nœud *Nœuds de succès : ne contient plus aucune formule, tout a été démontré et les éléments de solution sont trouvés en remontant vers la racine de larbre CSI2520
3
Pour résoudre une question, Prolog construit larbre de recherche de la question Parcours en profondeur dabord *nœud de succès : cest une solution, Prolog laffiche et cherche dautres solutions *nœud d'échec : remontée dans larbre jusqu'à un point de choix possédant des branches non explorées CSI2520
4
On parle de backtracking. Si un tel nœud de choix nexiste pas, la démonstration est terminée, il ny a pas dautres solutions. Possibilité de branche infinie et donc de recherche sans terminaison… Attention à : *ordre des littéraux dans la queue de clause *ordre des clauses CSI2520
5
f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y).
6
CSI2520
8
pere(charles,jean). noble(henri). noble(louis). noble(charles). noble(X):- pere(Y,X), noble(Y). pere(charles,jean). noble(X):- pere(Y,X), noble(Y). noble(henri). noble(louis). noble(charles). pere(charles,jean). noble(henri). noble(louis). noble(charles). noble(X):- noble(Y), pere(Y,X). ?- noble(jean).
9
CSI2520 aime(vincent,mimi). aime(marcel,mimi). jaloux(X,Y) :- aime(X,Z),aime(Y,Z). ?- jaloux(X,Y). Combien de solutions? … 4
10
CSI2520 Ils permettent dutiliser une syntaxe infixée, préfixée ou suffixée pour écrire des prédicats. Ils ont des priorités différentes.
11
CSI2520 Trois types : *Opérateur binaire infixé : il figure entre ses 2 arguments et désigne un arbre binaire X + Y *Opérateur unaire préfixé : il figure avant son argument et désigne un arbre unaire -X *Opérateur unaire suffixé : il figure après son argument et désigne un arbre unaire (Ex : X^2)
12
CSI2520 Associativité : *A gauche : *X op Y op Z est lu comme (X op Y) op Z *A droite : *X op Y op Z est lu comme X op (Y op Z) *Non associatif : les parenthèses sont obligatoires *la syntaxe X op Y op Z est interdite
13
CSI2520 Déclaration des opérateurs : *possibilité de modifier la syntaxe Prolog en définissant de nouveaux opérateurs *définition : par lenregistrement de faits de la forme suivante op(Priorite, Specif, Nom) *Nom : nom de lopérateur *Priorite :compris entre 0 (le plus prioritaire) et 1200 *Specif :type de l'opérateur (infixé, associatif…)
14
CSI2520 Infix: xfx non-associative xfy right to left yfx left to right Prefix fx non-associative fy left to right Postfix: xf non-associative yf right to left
15
CSI2520 is_in(apple, room(kitchen)). :-op(35,xfx,is_in). ?- apple is_in X. X = room(kitchen) ?- X is_in room(kitchen). X = apple ?- is_in(banana, room(kitchen)) = banana is_in room(kitchen). yes
16
CSI2520 :-op(33,fx,room). ?- room kitchen = room(kitchen). yes ?- apple is_in X. X = room kitchen pear is_in room kitchen. ?- is_in(pear, room(kitchen)) = pear is_in room kitchen. yes
17
CSI2520 :-op(35,xfy,is_in). ?- key is_in desk is_in office = is_in(key, is_in(desk, office)). yes :-op(35,yfx,is_in) ?- key is_in desk is_in office = is_in(is_in(key, desk), office). yes
18
CSI2520 :-op(100, xfx, a_des). :-op(100, xfx, est_un). Animal a_des ailes :- Animal est_un oiseau.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.