如果在A *搜索中使用欧氏距离启发式算法允许对角线移动,它是否仍是最佳选择?

时间:2019-03-06 17:01:23

标签: search artificial-intelligence a-star heuristics best-first-search

因此,如果我在具有10个障碍物的10x10迷宫中进行A *搜索,并且允许在其中进行对角线移动,那仍然是最佳选择吗?

我的回答是,它仍然是最佳选择,这是因为欧氏距离已经计算出了两点之间的直线距离,所以无论如何它都会沿对角线穿过搜索空间,所以我认为它不会有所作为,或者甚至可以做得更好?不确定我的想法是否正确。

1 个答案:

答案 0 :(得分:1)

这取决于对角线移动的成本。

考虑统一成本的情况:对角线运动的成本与非对角线(Chebyshev distance)的成本相同。

A* - Diagonal distance - uniform cost

在这种情况下,绿色和红色点之间的距离为6。一般来说:

def chebyshev_distance(node):
    dx = abs(node.x - goal.x)
    dy = abs(node.y - goal.y)
    return max(dx, dy)

欧几里得距离启发式算法:

def heuristic(node):
    dx = abs(node.x - goal.x)
    dy = abs(node.y - goal.y)
    return sqrt(dx * dx + dy * dy)

给出了heuristic ≅ 6.71,并高估了路径的成本,从而导致不可取的启发式(可能找不到最佳路径)。

通常:

max(| d x |,| d y |) = | Max | = sqrt(Max 2 )≤sqrt(Max 2 + min 2 )= sqrt(d x 2 + d y 2