我试图了解A *,Uniform成本和贪婪搜索算法是如何工作的。我知道探测节点的方式在所有3种算法中都会发生变化(贪婪将基于启发式值进行探索,基于启发式加距离的A *,基于距离的均匀性)。
我想知道,对于给定的来源和目的地,是否所有3种算法都提供最短路径(仅探索不同数量的城市?)或者它们是否可以提供不同的路径。
由于实现部分的原因,我很困惑 - 如果您将节点存储在队列中,那么当您要探索目标节点时,您将拥有最短路径但是如果您有路径队列(并且此队列是现在按照启发式+距离排序)然后你可能并不总是得到最短的路径。
答案 0 :(得分:4)
不一定,这取决于你的启发式。请参阅详细解释的this section in Wikipedia。
总而言之,如果启发式允许(意味着它永远不会高估成本),A *会给出最佳解决方案。
答案 1 :(得分:0)
事实上,启发式应该是可以接受的,否则A *会找到一个次优的解决方案。我认为队列不应该通过下一个节点的距离来指定,而是使用将下一个节点作为最有希望的节点的启发式。 将其视为:下一个节点可能距离当前节点最远,但同时它可能是距离目的地最近的节点。