我在 Prolog 中编写的程序的一部分与查找从起始位置到结束位置的所有可能路径选项有关。
这是我到目前为止所拥有的:
findAllRoutes(Start, End, Path) :-
findAllRoutes(Start, _, End, Path),
print('Successful route: '), print(Route).
findAllRoutes(End, _, End, [End]). %route was successfully finished
findAllRoutes(Start, Temp, End, [Start|Rest_of_List]) :-
path(Start, Temp),
findAllRoutes(Temp, _, End, Rest).
这是要读入的数据:
%path(Start, End).
path(1, 4). %find all the possible paths from location 1 to location 4.
%paths_in_place[[Start, End, Distance]].
paths_in_place[[1, 2, 250], [2, 4, 250], [1, 3, 400], [3, 4, 300]].
我的问题是,这是一种准确的循环方式,paths_in_place
同时还保存从起始位置到结束位置的途中到达的点的顺序?
另外,在没有提及该字段的情况下调用Distance
时会发生什么?即使在字段中传递参数,Prolog 是否合法?findAllRoutes
Distance
Start, End, Route
paths_in_place
Start, End, Distance
任何帮助深表感谢。如果我需要澄清任何事情,请告诉我。