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 :

Logique des prédicats


Sujet :

Prolog

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 73
    Points : 49
    Points
    49
    Par défaut Logique des prédicats
    Bonjour, j'ai une base de connaissance et je dois l'exprimer en logique des prédicats.

    Voici la base de connaissance:

    1.le tétras lyre est un oiseu.
    2.le gypaète barbu est un oiseau carnivore
    3.le lynx est un animal carnivore
    4.un oiseau est un animal
    5.les carnivores mangent de la viande
    6.dans tout animal il y a de la viande
    7.tous les animaux boivent de l'eau
    8.un animal consome ce qu'il boit ou mange


    Pour l'instant j'ai trouvé sa mais je ne sais pas si c'est juste et je bloque sur la 8:


    1) oiseau(tétras-lyre).
    2) oiseau-carnivor(gypaète) :- oiseau(gypaète), carnivore(gypaète).
    3) animal-carnivor(lynx) :- animal(lynx), carnicore(lynx).
    4) oiseau(x):- animal(x).
    5) carnivore(x) :- mange(x,viande).
    6) animal(x) :- viande(x).
    7) animal(x) :- boire(x,eau).
    8) ??? animal(x) :- consome(x,boire(x)).
    animal(x) :- consome(x,mange(x)).


    Merci de votre aide.

  2. #2
    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
    Je crois que tu dois bien analyser le texte.
    Tu as différents types d'animaux avec différents types de régimes alimentaires.
    "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

  3. #3
    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
    Citation Envoyé par martoune
    Pour l'instant j'ai trouvé sa mais je ne sais pas si c'est juste et je bloque sur la 8:
    A part la première, tout le reste est faux (tu prends le problème à l'envers).
    "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...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 139
    Points : 76
    Points
    76
    Par défaut
    c'est rigolo cet exercice, moi je ferais :

    1) oiseau(tetras_lyre).
    2) oiseau(gypaete_barbu), carnivore(gypaete_barbu).
    3) animal(lynx),carnivore(lynx).
    4) animal(X) :- oiseau(X).
    5) mange(viande,X) :- carnivore(X).
    6) ?
    7) boire(eau,X) :- animal(X).
    8) ?

    @+ Seb

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 73
    Points : 49
    Points
    49
    Par défaut
    Si je prens le problème à l'envers sa doit donner quoi alors ?

    j'ai essayé de me corriger je propose ceci:

    1) oiseau(tétras-lyre).

    2) oiseau(gypaète).
    carnivore(gypaète).

    3) carnivore(lynx).
    animal(lynx).

    4) oiseau(x).
    animal(x).

    5) mange(carnivore(_) , viande).

    6) animal(x).
    viande(x).

    7) boire(animal(_) ,eau).

    8) consome(x,boire(x,_)) :- animal(x).
    consome(x,mange(x,_)) :- animal(x).

  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
    Citation Envoyé par Seb981
    1) oiseau(tetras_lyre).
    2) oiseau(gypaete_barbu), carnivore(gypaete_barbu).
    3) animal(lynx),carnivore(lynx).
    4) animal(X) :- oiseau(X).
    5) mange(viande,X) :- carnivore(X).
    6) ?
    7) boire(eau,X) :- animal(X).
    8) ?
    3,5 sur 8

    Citation Envoyé par martoune
    1) oiseau(tétras-lyre).

    2) oiseau(gypaète).
    carnivore(gypaète).

    3) carnivore(lynx).
    animal(lynx).

    4) oiseau(x).
    animal(x).

    5) mange(carnivore(_) , viande).

    6) animal(x).
    viande(x).

    7) boire(animal(_) ,eau).

    8) consome(x,boire(x,_)) :- animal(x).
    consome(x,mange(x,_)) :- animal(x).
    3 sur 8.
    "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
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 73
    Points : 49
    Points
    49
    Par défaut
    désolé petite correction:


    1) oiseau(tétras-lyre).

    2) oiseau(gypaète),carnivore(gypaète).

    3) carnivore(lynx),animal(lynx).

    4) oiseau(x),animal(x).

    5) mange(carnivore(_) , viande).

    6) animal(x),viande(x).

    7) boire(animal(_) ,eau).

    8) consome(x,boire(x,eau)) :- animal(x).
    consome(x,mange(x,viande)) :- animal(x).

  8. #8
    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
    Citation Envoyé par martoune
    désolé petite correction:

    1) oiseau(tétras-lyre).

    2) oiseau(gypaète),carnivore(gypaète).

    3) carnivore(lynx),animal(lynx).

    4) oiseau(x),animal(x).

    5) mange(carnivore(_) , viande).

    6) animal(x),viande(x).

    7) boire(animal(_) ,eau).

    8) consome(x,boire(x,_)) :- animal(x).
    consome(x,mange(x,_)) :- animal(x).
    1 sur 8 (attention, ça baisse ! )
    "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...

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 73
    Points : 49
    Points
    49
    Par défaut
    Bon ba la pour le coup je suis vraiment perdu!!!! lol
    à noté j'ai changé la réponsse 8)
    Merci quand meme pour votre aide.
    Si une personne à les réponsses sa serai super cool. merci

  10. #10
    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
    Citation Envoyé par martoune
    Si une personne à les réponsses sa serai super cool. merci
    Je le ferais comme ç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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    % le tétras lyre est un oiseau.
     
    oiseau(tetraslyre).
     
     
    % le gypaète barbu est un oiseau carnivore
     
    oiseau(gypaete).
    carnivore(gypaète).
     
     
    % le lynx est un animal carnivore
     
    animal(lynx).
    carnivore(lynx).
     
     
    % un oiseau est un animal
     
    animal(X) :- oiseau(X).
     
     
    % les carnivores mangent de la viande
     
    mange(X,Y) :-
      carnivore(X), viande(Y).
     
     
    % dans tout animal il y a de la viande
     
    viande(X) :- animal(X).
     
     
    % tous les animaux boivent de l'eau
     
    boit(X, eau) :- animal(X).
     
     
    % un animal consome ce qu'il boit ou mange
     
    consomme(X,Y) :- 
      animal(X),
      (mange(X,Y) ; boit(X,Y)).
    "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...

  11. #11
    Membre régulier Avatar de cflo91
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 77
    Points
    77
    Par défaut
    Slt, alors moi je propose:

    1) oiseau(tetraslyre).

    2) oiseau(gypaete),carnivore(gypaete).

    3) animal(lynx),carnivore(lynx).

    4) animal(X):- oiseau(X).

    5) mange(X,viande):- carnivore.

    6) animal(viande).

    7) boire(X,eau):- animal(X).

    8) consomme(X,boire(X,eau)):- animal(x).
    consomme(X,mange(X,viande)):- animal(X).

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 73
    Points : 49
    Points
    49
    Par défaut
    Merci pcaboche je pense que tout est juste!
    à bientôt.

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 139
    Points : 76
    Points
    76
    Par défaut
    Pour "un animal consomme ce qu'il boit ou mange" tu fais :

    consomme(X,Y) :-
    animal(X),
    (mange(X,Y) ; boit(X,Y)).

    mais je croyais que le ou n'existait pas en Prolog.
    en faisant ( ; ) on peut faire alors un ou ?

    @+ Seb

  14. #14
    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
    Il y a une erreur quelque part, en retranscrivant les prédicats de pcaboche, à la question "consomme(gypaete, X)."
    on obtient uniquement "eau".

    alors que "consomme(lynx, X)." donne

    X = lynx ;

    X = tetraslyre ;

    X = gypaete ;

    X = eau ;

    Puisqu' on en est à donner des solutions, je donne la mienne mais j'ai un peu élargi le problème
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    % la boisson
    liquide(eau).
    boit(_,Y) :-
    	liquide(Y).
     
    % la nourriture
    viande(X) :- animal(X).
    plante(herbe).
    plante(fleur).
     
    mange(X,Y) :-
    	carnivore(X,Y);
    	herbivore(X,Y).
     
    % les genres d'animaux
    oiseau(tetra).
    oiseau(gypaete).
    quadrupede(lynx).
     
    % les régimes alimentaires
    carnivore(gypaete).
    carnivore(lynx).
    carnivore(X, Y) :- 
    	carnivore(X),
    	viande(Y).
     
    herbivore(tetra).
    herbivore(X, Y) :-
    	herbivore(X),
    	plante(Y).
     
    animal(X) :-
    	oiseau(X);
    	quadrupede(X).
     
    consomme(X, Y) :-
    	animal(X),
    	(boit(X, Y); mange(X,Y)).
    "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

  15. #15
    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
    Citation Envoyé par Trap D
    Il y a une erreur quelque part, en retranscrivant les prédicats de pcaboche, à la question "consomme(gypaete, X)."
    on obtient uniquement "eau".
    C'est une erreur de copier-coller: j'ai oublié d'enlever un accent à "gypaète" (c'est une hérésie de mettre des accents et des tirets dans les noms des termes).


    Citation Envoyé par Seb981
    mais je croyais que le ou n'existait pas en Prolog.
    en faisant ( ; ) on peut faire alors un ou ?
    Oui, le "ou" existe, mais il vaut mieux éviter de l'utiliser, du moins au début.

    C'est équivalent à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    consomme(X,Y) :-
      animal(X),
      pred(X,Y).
     
    pred(X,Y) :- mange(X,Y).
    pred(X,Y) :- boit(X,Y).
    "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...

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 139
    Points : 76
    Points
    76
    Par défaut
    Ok merci.

    @+ Seb

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. logique des prédicats
    Par colocolo dans le forum Mathématiques
    Réponses: 5
    Dernier message: 28/05/2009, 01h05
  2. Logique des prédicats / LPO
    Par Jb-Natural13 dans le forum Prolog
    Réponses: 0
    Dernier message: 25/03/2009, 00h04
  3. Logique des prédicats
    Par acacia dans le forum Mathématiques
    Réponses: 9
    Dernier message: 04/02/2008, 20h17
  4. Définir des prédicats
    Par Xiao-An dans le forum Prolog
    Réponses: 4
    Dernier message: 03/09/2006, 23h51
  5. Afficher le nom logique des cartes réseaux en VB?
    Par unarcher dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 20/10/2005, 17h56

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