Alors, pour repondre à 1), il me semble que la formulation est pas mal. Je dirait juste qu'elle n'est pas encore assez recursive : en gros, on devrait pouvoir laisser prolog se debrouiller tout seul.
Voila comment je listerai les chemins allant d'un point à un autre (c'est une solution, et bien sur pas LA solution).
Dans la meme veine que follow, je defini la fonction connected, qui ressemble à connected (point A, point B, chemin) :
connected(P,P,[P]).
% tout d'abord, un point est connecté à lui meme, et le chemin est le point lui meme.
% c'est ma condition d'arret de la recursivité.
% P est connecté à Q si P est Z sont dans un parcours (tel que tu l'as defini), et si Z lui
% meme est connecte à Q. C'est la transitivité de la connexion. Dans ce cas, je rajoute
% le point intermediaire Z au chemin.
Avec l'interpreteur, je peux maintenant faire :
connected(depart, arrivee, Chemin).
Et prolog va me lister tout les chemins possible via la variable Chemin, tant que j'appuie sur ";".
# ebauche de solution
Posté par castorpilot . En réponse au message [Prolog]Liste des chemins allant d'un point à un autre dans un graphe. Évalué à 4.
Alors, pour repondre à 1), il me semble que la formulation est pas mal. Je dirait juste qu'elle n'est pas encore assez recursive : en gros, on devrait pouvoir laisser prolog se debrouiller tout seul.
Voila comment je listerai les chemins allant d'un point à un autre (c'est une solution, et bien sur pas LA solution).
Dans la meme veine que follow, je defini la fonction connected, qui ressemble à connected (point A, point B, chemin) :
connected(P,P,[P]).
% tout d'abord, un point est connecté à lui meme, et le chemin est le point lui meme.
% c'est ma condition d'arret de la recursivité.
connected(P,Q,[Z|Chemin]):-
parcours(P,Z), connected(Z,Q,Chemin).
% P est connecté à Q si P est Z sont dans un parcours (tel que tu l'as defini), et si Z lui
% meme est connecte à Q. C'est la transitivité de la connexion. Dans ce cas, je rajoute
% le point intermediaire Z au chemin.
Avec l'interpreteur, je peux maintenant faire :
connected(depart, arrivee, Chemin).
Et prolog va me lister tout les chemins possible via la variable Chemin, tant que j'appuie sur ";".