为什么A *搜索算法优于A?

时间:2015-07-14 12:25:34

标签: algorithm search artificial-intelligence a-star

我试图理解为什么理论上A* search algorithm被认为比A search algorithm更好。

在两种算法中,根据函数f(n)扩展节点。

Af(n) = g(n) + h(n)

A*中:f(n) = g(n) + h*(n)(*表示该函数是估算值)。

A*应该减少必须生成和比较的路径数量。我的问题是:如何使用h*(n)代替h(n)来减少路径数量?

谢谢:)

2 个答案:

答案 0 :(得分:8)

因为您通常不知道h(n)的确切值。要计算这个,您必须从该节点到目标进行完整搜索,并且为每个节点执行此操作将非常昂贵。

考虑通过道路连接的城市。你怎么知道从任何一个城市到达目标城市的旅行距离是多少?没有搜索就无法做到这一点。相反,您可以使用直接距离作为实际行程距离的估计,如果您有两个城市的坐标,这是一个非常简单和快速的计算。

答案 1 :(得分:0)

所以,如果我理解你的话,f(n)是一个通过将两个函数g(n)和h(n)相加而构建的函数。这意味着h(n)也是一个函数。

这意味着你估计函数的结果而不是计算整个函数本身。

如果我读得对,它现在不会得到h(n)的所有可能性,但主要的那些。

修改

例如,如果你有一个3个零的函数。如果你让系统估计它可能会给你零(1/0)(17/0)(212/0) 如果你现在让它计算它可能给你的确切值(0.99998768 / 0)(17.002020111 / 0)(211.988878888 / 0)它花了更多的资源但仍然得到大约相同的零。