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

Arbre de recherche

  • Upload
    duncan

  • View
    37

  • Download
    0

Embed Size (px)

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

Citation preview

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.