因此,如果我在具有10个障碍物的10x10迷宫中进行A *搜索,并且允许在其中进行对角线移动,那仍然是最佳选择吗?
我的回答是,它仍然是最佳选择,这是因为欧氏距离已经计算出了两点之间的直线距离,所以无论如何它都会沿对角线穿过搜索空间,所以我认为它不会有所作为,或者甚至可以做得更好?不确定我的想法是否正确。
答案 0 :(得分:1)
这取决于对角线移动的成本。
考虑统一成本的情况:对角线运动的成本与非对角线(Chebyshev distance)的成本相同。
在这种情况下,绿色和红色点之间的距离为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 )