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 :

Résolution de syllogisme


Sujet :

Prolog

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 178
    Points : 43
    Points
    43
    Par défaut Résolution de syllogisme
    bonjour,
    comment résoudre un syllogisme ds prolog par ex:
    1)les seules aliments que me permette mon médecin sont ceux qui ne sont pas tres lourds.
    2)aucun des aliments que je digere n'est contre-indique pour mon souper
    3)un gateau de noces est toujours lourd.
    4)mon medecin me permet tous les aliments qui sont indiques pour mon souper.
    c' est un syllogisme de l.carrol.Conclusion.
    merci

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    On traduit cela sous forme de règles. Par exemple pour le troisième (qui est simple à comprendre):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    lourd(Aliment) :-
      aliment(Aliment),
      gateauDeNoce(Aliment).
    Si l'aliment est un gâteau de noce, alors il sera lourd.

    Maintenant, le premier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    alimentAutorise(Aliment) :-
       aliment(Aliment),
       \+ lourd(Aliment).
    Un aliment est autorisé si:
    • c'est un aliment
    • il n'est pas lourd
    Ici, \+ est l'opérateur de non preuve, c'est-à-dire qu'il ne réussira que si on n'arrive pas à prouver le but lourd(Aliment).

    Ca serait intéressant que tu donnes des exemples d'aliments, d'aliments que l'on digère, d'aliments lourd (pour te monter ce qu'il se passe alors).
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 178
    Points : 43
    Points
    43
    Par défaut
    Bonjour pcaboche
    j'ai fait le code suivant en vip,il marche mais je connaissais la solution avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     aliments:(string,string)determ(i,o).
        paspermis:(string)determ(o).
       jenedigerepas:(string)determ(o).
        clauses
        aliments("lourd","gateau de noces").
        paspermis(X):-aliments("lourd",X).
        jenedigerepas(X):-paspermis(X).
    test():-
    jenedigerepas(X),
    stdio::write("je ne digere pas le "),
    stdio::write(X),
    fail.
    test().

  4. #4
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    vip = Visual Prolog?

    Utilise la balise code, sinon on a des qui apparaissent à la place de :- (
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  5. #5
    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
    En swi-prolog on pourrait obtenir ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    % 1)les seules aliments que me permette mon médecin sont ceux qui 
    % ne sont pas tres lourds.
    aliment_permis(X) :- \+lourds(X).
     
    % 4)mon medecin me permet tous les aliments qui sont indiques
    % pour mon souper.
    aliment_permis(X) :- souper(X).
     
    % 3)un gateau de noces est toujours lourd.
    lourds(gateau_de_noce).
     
    % 2)aucun des aliments que je digere n'est contre-indique pour
    % mon souper
    souper(X) :- digere(X).
     
    % On peut supposer qu'on digère les aliments légers.
    digere(X) :- \+lourds(X).
     
    test :-
    	write('Ai-je droit au gateau de noce le soir ? '),
    	souper(gateau_de_noce).
    "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

  6. #6
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Je ne suis pas d'accord avec la première clause du prédicat aliment_permis/1. En effet, il faut obligatoirement ajouter le but aliment(X), sinon on pourra seulement vérifier qu'un aliment n'est pas lourd mais pas faire la liste des aliments non lourds (par défaut d'unification).

    Quand on utilise l'opérateur \+, il faut toujours unifier avant.

    On doit donc avoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    aliment_permis(X) :-
      aliment(X),
      \+lourds(X).
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  7. #7
    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
    Bien m'sieur.

    Il ne me paraissait pas nécessaire ici d'introduire une règle aliment pour ce syllogisme, mais c'est vrai que c'est plus logique, nonobstant cette nécessité Prolog d'unifier avant \+
    "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

Discussions similaires

  1. [XSLT][JSP] solution technique pour cas typique
    Par Alix_10 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 04/09/2006, 13h09
  2. Réponses: 21
    Dernier message: 30/08/2004, 17h07
  3. 1 SOLUTION : plusieurs anim dans un fichier x
    Par heidi79 dans le forum DirectX
    Réponses: 1
    Dernier message: 28/08/2003, 09h19
  4. [Kylix] solution
    Par raggadoll dans le forum EDI
    Réponses: 1
    Dernier message: 27/05/2003, 11h43
  5. Les Cookies 4° ! : LA SOLUTION
    Par Ph. B. dans le forum XMLRAD
    Réponses: 2
    Dernier message: 31/01/2003, 16h46

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