查找路径:如何避免已访问过的位置
问题描述:
我得到这个代码,2个城市之间返回的最短路径:查找路径:如何避免已访问过的位置
goal(Z,Path,Cost) :-
A = mycity,
caminhAux2(A,[Z],0,Path, Cost).
caminhAux2(A,[A|Path1],Cost1,[A|Path1],Cost1).
caminhAux2(A,[Y|Path1],Cost1,Path,Cost) :-
conn(_,X,Y,Dist,N),
road(N,Vmed,_),
CostXY is Dist/Vmed,
Cost2 is Cost1 + CostXY,
caminhAux2(A,[X,Y|Path1],Cost2,Path,Cost).
best(Z,P,C) :-
goal(Z,P,C),
\+ (goal(Z,P1,C1),C1<C).
我怎样才能让这个以避免已经访问过的位置?这是在无限循环。
答
很简单:在奇怪地命名为“caminhAux2”谓词的递归条款,似乎X不能是路径1中的一员,所以在一个地方,我离开作为练习,目标\+ member(X, Path1)
可能做到这一点?