IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Prolog Discussion :

Déclaration de nondeterm


Sujet :

Prolog

  1. #1
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut Déclaration de nondeterm
    Bonjour,

    je n'arrive pas à comprendre la déclaration nondeterm dans prolog, j'ai pu lire qu'il fallait déclarer les faits nondeterm lorsque plusieurs solutions sont possibles...tout celà est très vague et je ne trouve rien avec google.

    Quelqu'un pourait-il me donner un bon exemple?

    merci d'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Pourrais tu être plus précis ?

    Quel version de prolog ?
    Que sait tu sur "nondeterm" pour l'instant ?

    Perso, j'ai fais un peu de prolog (PrologII+, norme marseillaise), et j'avoue n'avoir jamais rencontré ce "nondeterm" ...


  3. #3
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut
    visual prolog 5

    mais on retrouve le nondeterm dans toutes les versions prolog je pense.

    Voilà exactement ce que je sais..c est pas tres long:
    Si plusieurs clauses peuvent s'unifier avec un objectif, le prédicat apparaissant dans cet objectif doit etre déclaré non déterministe(utiliser le mot-clé nondeterm devant la définition du prédicat dans la section Predicates).
    voilà, ca sera peut etre tres clair pour certain, mais pas pour moi

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Salut

    Je te donnes un lien qui me semble un peu éclairer cette notion, que je ne connaissais pas non plus.

    Voilà ce que j'en ai compris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    personne(socrates).
    personne(platon).
    personne(zenon).
    personne(aristote).
    mortel(X) :- personne(X).
    Ici le prédicat mortel est non déterministe :
    Si on interroge mortel(X) on obtient socrate, platon, zenon, aristote.

    Maintenant, si on modifie légèrement le prédicat mortel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mortel(X) :- personne(X),!.
    il devient déterministe, une seule réponse: socrate.

    Ceci dit, je suis débutant en Prolog.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    personnellement je n'ai jamais utilisé ce nondeterm ... Je pense que cela doit être spécifique à certaines version de prolog ... peut-être à Visual Prolog justement ?

    Avoir une règle prolog non déterministe me parait très courant .
    En tout cas dans les quelques programmes que j'ai fais (analyseur lexico-syntaxico-sémantique, jeux avec ia, algos, etc...), cet notion de non déterminisme est très courante.

    Pour moi nondeterme devrait être utilisé quand ta règle ne peut déterminer une solution grace à son contexte ... C'est-à-dire que prolog va créer autant de branches d'exécution qu'il y a de solutions pour ta règle, puis par backtracking, ils remontent toutes les solutions (sous forme de liste en général).

    Je ne vois pas à quoi sert ton nondeterme .. Ton programme ne s'exécute pas correctement sans ?

    As tu essayé le premier bout de code que te propose Trap D. Si à tel quel, à l'exécution il t'afffiche tous les noms, c'est qu'a priori ta "variable" n'est pas obligatoire.

  6. #6
    Membre confirmé Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Points : 552
    Points
    552
    Par défaut
    lol, un kuykuy!

    oui, nondeterme, ca ne me dit rien non plus. J'ai lu le lien proposé par TrapD et il me semble qu'il a raison.
    Le cut est une très bonne façon de contourner le problème. Mais il faut s'en servir prudement, et pas en mettre de partout, n'est ce pas Sebou!

Discussions similaires

  1. Une erreur 233 de ms sql server
    Par Hokage dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/10/2009, 17h40
  2. Erreur 233 sous sql server
    Par brajae85 dans le forum Oracle
    Réponses: 3
    Dernier message: 18/05/2009, 16h12
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo