Arbre de recherche

18
On parle d’arbre de recherche d’une question * Racine de l’arbre : question * Nœuds : points de choix (formule à démontrer) * Passage d’un nœud vers son fils en considérant l’une des règles et en effectuant une unification et une étape (pas) de démonstration CSI2520 Arbre de recherche

description

Arbre de recherche. On parle d’arbre de recherche d’une question Racine de l’arbre : question Nœuds : points de choix (formule à démontrer) Passage d’un nœud vers son fils en considérant l’une des règles et en effectuant une unification et une é tape (pas) de démonstration . - PowerPoint PPT Presentation

Transcript of Arbre de recherche

Page 1: Arbre de recherche

On parle d’arbre de recherche d’une question* Racine de l’arbre : question * Nœuds : points de choix (formule à démontrer)* Passage d’un nœud vers son fils en considérant

l’une des règles et en effectuant une unification et une étape (pas) de démonstration

CSI2520

Arbre de recherche

Page 2: Arbre de recherche

* Nœuds de gauche à droite dans l’ordre 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 l’arbre

CSI2520

Arbre de recherche

Page 3: Arbre de recherche

Pour résoudre une question, Prolog construit l’arbre de recherche de la question

Parcours en profondeur d’abord* nœud de succès : c’est une solution, Prolog

l’affiche et cherche d’autres solutions* nœud d'échec : remontée dans l’arbre jusqu'à un

point de choix possédant des branches non explorées

CSI2520

Stratégie de Prolog

Page 4: Arbre de recherche

On parle de backtracking. Si un tel nœud de choix n’existe pas, la démonstration est terminée, il n’y a pas d’autres 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

Stratégie de Prolog

Page 5: Arbre de recherche

CSI2520

Un premier exemple

f(a).f(b).g(a).g(b).h(b).k(X):- f(X), g(X), h(X).

?- k(Y).

Page 6: Arbre de recherche

CSI2520

Exemple: arbre de recherche

Page 7: Arbre de recherche

CSI2520

Exemple: arbre de recherche

Page 8: Arbre de recherche

CSI2520

Un autre exemple (en 3 versions)

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).

Page 9: Arbre de recherche

CSI2520

Un dernier exemple

aime(vincent,mimi).aime(marcel,mimi).jaloux(X,Y) :- aime(X,Z),aime(Y,Z).

?- jaloux(X,Y).

Combien de solutions? … 4

Page 10: Arbre de recherche

CSI2520

Les opérateurs Ils permettent d’utiliser une syntaxe infixée,

préfixée ou suffixée pour écrire des prédicats.

Ils ont des priorités différentes.

Page 11: Arbre de recherche

CSI2520

Arité des opérateurs

Trois types :* Opérateur binaire infixé : il figure entre ses 2

arguments et désigne un arbre binaireX + 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)

Page 12: Arbre de recherche

CSI2520

Associativité des opérateurs 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

Page 13: Arbre de recherche

CSI2520

Déclaration des opérateurs Déclaration des opérateurs :

* possibilité de modifier la syntaxe Prolog en définissant de nouveaux opérateurs

* définition : par l’enregistrement de faits de la forme suivante op(Priorite, Specif, Nom)* Nom : nom de l’opérateur* Priorite :compris entre 0 (le plus prioritaire) et 1200* Specif :type de l'opérateur (infixé, associatif…)

Page 14: Arbre de recherche

CSI2520

Specif

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

Page 15: Arbre de recherche

CSI2520

Exemple

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

Page 16: Arbre de recherche

CSI2520

Exemple

:-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

Page 17: Arbre de recherche

CSI2520

Exemple

:-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

Page 18: Arbre de recherche

Un autre exemple

CSI2520

:-op(100, xfx, a_des).:-op(100, xfx, est_un).

Animal a_des ailes :- Animal est_un oiseau.