应使用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不是这样计算的。