应使用Prolog A*贪婪搜索运算符
在每次迭代之后,我一直在尝试使用启发式值来查找下一个节点,现在已经有一段时间了——我认为它已经接近了,但是我得到了一个错误应使用Prolog A*贪婪搜索运算符,prolog,greedy,Prolog,Greedy,在每次迭代之后,我一直在尝试使用启发式值来查找下一个节点,现在已经有一段时间了——我认为它已经接近了,但是我得到了一个错误 greedy_search(GoalNode,_,0) :- goal(GoalNode). greedy_search(CurrentNode,GoalNode,TotalCost) :- connected(CurrentNode,NextNode,D), write('Exploring '), write(CurrentNode),
greedy_search(GoalNode,_,0) :-
goal(GoalNode).
greedy_search(CurrentNode,GoalNode,TotalCost) :-
connected(CurrentNode,NextNode,D),
write('Exploring '),
write(CurrentNode),nl,
write(HCost(N,V)),nl,
find(NextNode,GoalNode,NextCost),
write('Visited '),
write(NextNode),nl,
write(HCost(N,V)),
TotalCost is NextCost + D.
错误为语法错误:应为运算符
我想在每次迭代中使用贪婪搜索打印下一个节点,并在最后打印总成本
我在弧上有一组连接,如(a,b,2)。还有一个启发式表,如:h(b,4)。
HCost
应该是'HCost'
才是一个有效的原子。@gusbro我有h(b,4)在so=HCost(N,V)之上。我想说的是HCost
(以大写字母开头)是一个变量,但你想用一个术语'HCost'(N,V)
。现在就明白了。虽然它没有给我正确的答案。谢谢你!您是否试图将'HCost'(N,V)
作为函数调用?因为Prolog不是这样计算的。