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 :

Programme où je comprends rien


Sujet :

Prolog

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 109
    Points : 143
    Points
    143
    Par défaut Programme où je comprends rien
    Bonjour à tous, voilà j'ai un exo, que je ne comprends pas :

    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
    relie(a,f,5).
    relie(a,c,4).
    relie(a,b,7).
    relie(a,g,3).
    relie(b,e,2).
    relie(b,c,5).
    relie(c,b,3).
    relie(c,a,8).
    relie(c,d,2).
    relie(c,h,8).
    relie(d,e,4).
    relie(d,h,4).
    relie(e,h,7).
    relie(e,f,4).
    relie(f,g,9).
    relie(g,h,11).
     
     
    route(X,X,_,[],0).
    route(X,Y,D,[Z|L],K):- 	relie(X,Z,DIS1), not(appartient(Z,D)),
    			route(Z,Y,[Z|D],L,DIS2), K is DIS1+DIS2.
     
     
    appartient(X,[X|_]).
    appartient(X,[_|Y]):- appartient(X,Y).
     
     
    plus_courte_route(DEP,ARR,L,D):- plus_courte_route_1(DEP,ARR,[],L,D).
     
     
    plus_courte_route_1(DEP,ARR,INT,[DEP|L],D):- 	findall(E,route(DEP,ARR,INT,_,E),K),
    						recherche_plus_petit(K,D),
    						route(DEP,ARR,INT,L,D).
     
    recherche_plus_petit([X],X).
    recherche_plus_petit([X,Y|Z],R) :- X =< Y,
    recherche_plus_petit([X|Z],R) ; 
    X > Y,
    recherche_plus_petit([Y|Z],R).
    Donc par exemple quand je fais plus_courte_route(a,b,L,D), et bien ça m'affiche
    Donc le programme fonctionne bien mais j'ai du mal à saisir son fonctionnement.
    L serait la liste des villes par laquelle il faut passer et D leur distances.
    quand vous voyez INT c'est une liste de villes interdites (pas encore utilisé)...

    Déjà je comprend pas pourquoi on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plus_courte_route_1(DEP,ARR,[],L,D)
    alors qu'au final on déclare ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plus_courte_route_1(DEP,ARR,INT,[DEP|L],D)
    Donc INT aura comme "valeur" toujours une liste vide oO...

    et aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    findall(E,route(DEP,ARR,INT,_,E),K)
    va créer une liste K et pour ça utiliser route, mais le DEP utilisé dans route, c'est lequel ? on a un DEP tout seul, et un [DEP|L] et qui donc serait le premier élément de la liste L, mais qui ne vaut rien... enfin j'y comprend plus rien =____=

    Merci d'avance

  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
    Déjà je comprend pas pourquoi on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plus_courte_route_1(DEP,ARR,[],L,D)
    Parce qu'au début de la recherche, la liste des villes déjà visitées est vide !
    Cette liste se remplit au fur et à mesure de la recherche mais ça ne se voit pas.
    Pour suivre le déroulement du prog, tape en mode console "trace." puis ton prédicat de départ. tu verras comment se passe l'enchaînenemt des prédicats.
    "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
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 109
    Points : 143
    Points
    143
    Par défaut
    En fait, cette liste est la liste des villes "interdites", qu'on peut explicitement donner quand on appelle le programme...

  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
    Citation Envoyé par MeTaLCaM Voir le message
    En fait, cette liste est la liste des villes "interdites", qu'on peut explicitement donner quand on appelle le programme...
    Non, c'est la liste des villes visitées au fur et à mesure de la recherche et où on n'a pas le droit de repasser
    .
    "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. Positionnement CSS, j'comprends rien !!
    Par guano dans le forum Mise en page CSS
    Réponses: 10
    Dernier message: 16/01/2006, 16h40
  2. [debutant]programme qui ne fait rien.
    Par Battosaiii dans le forum Interfaces Graphiques en Java
    Réponses: 10
    Dernier message: 04/12/2005, 22h19
  3. error : does not name a type // je n'y comprends rien
    Par djobanaille dans le forum C++
    Réponses: 6
    Dernier message: 19/11/2005, 10h25
  4. [MX]boutons...j'y met du mien mais j'comprend rien!
    Par skapull dans le forum Flash
    Réponses: 5
    Dernier message: 25/03/2004, 18h55
  5. [LG]Programme qui n'affiche rien
    Par ousunas dans le forum Langage
    Réponses: 4
    Dernier message: 17/02/2004, 19h38

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