1 / 18

Arbre de recherche

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 .

duncan
Download Presentation

Arbre de recherche

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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

  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

  3. Stratégie de Prolog • 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

  4. Stratégie de Prolog • On parle de backtracking.Si un tel nœud dechoix 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

  5. Un premier exemple f(a). f(b). g(a). g(b). h(b). k(X):- f(X), g(X), h(X). ?- k(Y).

  6. Exemple: arbre de recherche

  7. Exemple: arbre de recherche

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

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

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

  11. Arité des opérateurs • 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. 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

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

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

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

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

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

  18. Un autre exemple :-op(100, xfx, a_des). :-op(100, xfx, est_un). Animal a_des ailes :- Animal est_un oiseau.

More Related