% ----------------------------------------------- % Exercice 5 % Auteurs : Florian Lepot & Maxime Fabre % ----------------------------------------------- % Question 1 % ------------------------- Pas d'explications à faire % Question 2 % ------------------------- % Peut-on aller de eclaibes à croix ? ?- chemin(eclaibes, croix, _). true ; % Comment aller de eclaibes à croix ? ?- chemin(eclaibes, croix, T). T = [eclaibes, bachant, croix] ; % Quels sont les chemins menant à aulnoye ? ?- chemin(X, aulnoye, T). X = aulnoye, T = [aulnoye] ; X = bachant, T = [bachant, aulnoye] ; X = eclaibes, T = [eclaibes, aulnoye] ; X = eclaibes, T = [eclaibes, bachant, aulnoye] % Comment aller de eclaibes à gommegnies en passant par deux vias ? ?- chemin(eclaibes, gommegnies, T), size(T, X), X is 4. T = [eclaibes, bachant, friche, gommegnies], X = 4 ; T = [eclaibes, bachant, denain, gommegnies], X = 4 ; % Comment aller de eclaibes à gommegnies avec un minimum de deux étapes ? (2 étapes veut dire qu'on a 3 villes traversées : Départ, intermédiaire, finale) ?- chemin(eclaibes, gommegnies, T), size(T, X), X >= 3. T = [eclaibes, bachant, friche, gommegnies], X = 4 ; T = [eclaibes, bachant, croix, denain, gommegnies], X = 5 ; T = [eclaibes, bachant, denain, gommegnies], X = 4 ; T = [eclaibes, friche, gommegnies], X = 3 ; % Question 3 % ------------------------- Pas d'explications, simplement des définitions de prédicats % Question 4 % ------------------------- ?- chemin(eclaibes, gommegnies, T, C). T = [eclaibes, bachant, friche, gommegnies], C = 17 ; T = [eclaibes, bachant, croix, denain, gommegnies], C = 22 ; T = [eclaibes, bachant, denain, gommegnies], C = 18 ; T = [eclaibes, friche, gommegnies], C = 11 ; ?- chemin(eclaibes, denain, T, C). T = [eclaibes, bachant, croix, denain], C = 17 ; T = [eclaibes, bachant, denain], C = 13 ; % Question 5 % ------------------------- % Quels sont les chemins entre bachant et gommegnies passant par denain, et quels sont leurs coûts ? ?- chemin(bachant, gommegnies, T, X), member(denain, T). T = [bachant, croix, denain, gommegnies], X = 15 ; T = [bachant, denain, gommegnies], X = 11 ; % Quels sont les chemins partant de eclaibes avec un coût supérieur ou égal à 11 ? ?- chemin(eclaibes, B, T, X), X >= 11. B = aulnoye, T = [eclaibes, bachant, aulnoye], X = 15 ; B = friche, T = [eclaibes, bachant, friche], X = 11 ; B = gommegnies, T = [eclaibes, bachant, friche, gommegnies], X = 17 ; B = denain, T = [eclaibes, bachant, croix, denain], X = 17 ; B = gommegnies, T = [eclaibes, bachant, croix, denain, gommegnies], X = 22 ; B = denain, T = [eclaibes, bachant, denain], X = 13 ; B = gommegnies, T = [eclaibes, bachant, denain, gommegnies], X = 18 ; B = gommegnies, T = [eclaibes, friche, gommegnies], X = 11 ; % Question 6 % ------------------------- On vérifie qu'il existe un arc allant de A vers B, ou de B vers A. Si oui, les villes sont voisines, sinon non. ?- voisin(eclaibes, croix). false. ?- voisin(eclaibes, friche). true . % Question 7 % ------------------------- % Question 8 % ------------------------- La règle cheminl ne fonctionne pas, l'erreur a l'air de venir de la gestion de la liste des villes déjà visitées.. Nous continuerons en faisant comme si cela fonctionnait pour rajouter les couts. ?- cheminl(aulnoye, croix, T, L). % Question 9 % ------------------------- ?- chemin(aulnoye, gommegnies, T, L, P). % Question 10 % ------------------------- chemin(aulnoye, gommegnies, T, L, P), P < 20.