Algorithm 当添加具有相同heauristic值的节点时,*搜索如何选择下一个节点?
我对这个概念有一个基本的理解,但一位讲师给出的典型答案让我困惑, 我对(2,3)B节点如何在(2,3)节点之前展开感到困惑,理论上,该节点首先被添加到队列中(在添加节点B之前)Algorithm 当添加具有相同heauristic值的节点时,*搜索如何选择下一个节点?,algorithm,search,artificial-intelligence,a-star,motion-planning,Algorithm,Search,Artificial Intelligence,A Star,Motion Planning,我对这个概念有一个基本的理解,但一位讲师给出的典型答案让我困惑, 我对(2,3)B节点如何在(2,3)节点之前展开感到困惑,理论上,该节点首先被添加到队列中(在添加节点B之前) 此树是网格最短路径评估的图形表示此树并不意味着(2,3)节点没有子节点实际上它们在网格中引用了相同的位置,有人能澄清我遗漏了什么吗?提前感谢:)答案是这取决于优先级队列的实现 以通常的数组实现为例。元素的顺序如下所示: 0 1 2 3 4 5 6 7 8 9 10 [0, [1, [3, [7, 8]],
此树是网格最短路径评估的图形表示此树并不意味着(2,3)节点没有子节点实际上它们在网格中引用了相同的位置,有人能澄清我遗漏了什么吗?提前感谢:)答案是这取决于优先级队列的实现 以通常的数组实现为例。元素的顺序如下所示:
0 1 2 3 4 5 6 7 8 9 10
[0,
[1,
[3, [7, 8]],
[4, [9, 10]]]],
[2, [5, 6]]]
但是在位置i
下面,接下来的两个是2i+1
和2i+2
。因此,数组是一个树状结构,如下所示:
0 1 2 3 4 5 6 7 8 9 10
[0,
[1,
[3, [7, 8]],
[4, [9, 10]]]],
[2, [5, 6]]]
现在假设3,5
彼此具有相同的优先级,因此6,7
也具有相同的优先级。这4个是按这个顺序加起来的。还假设堆首先将顶部(不管您怎么想,都是左侧)元素放在ties上。然后,当您提取时,我们最终会将3
和5
放在底部,然后3
首先下降。但是当你继续提取时,你最终会在6,7
之间找到一个平衡点,现在7
位于顶部(左侧,不管你如何调整你的思维方向),因此它首先下降
结果是,优先级队列保证事情按优先级顺序进行,但在顺序上没有其他保证。因此,同样优先的事情可以以任何顺序出现
这与为什么不是一个稳定的排序直接相关。你能详细说明一下你的成本函数和启发式函数是什么吗?上图中的f指的是什么?明白了。因此,如果您根据这个求值函数将这些节点转储到优先级队列中,那么a和B的总成本看起来是相同的,对吗?如果是这种情况,则由具体的实现决定从哪个节点展开。在这种情况下,它看起来像是先取了B,这是评估函数的值,即实际成本+启发式成本,使用的启发式函数是h(x)=(4)− r) +(c)− 1) ,其中r和c指网格中节点的x和y坐标。另外,代价函数是节点到起始节点的距离。有趣的是,这是一个随机选择吗?或者,对于整个实现(即始终首先选择最后添加的节点),通常对于优先级队列,如果两个元素具有相同的优先级,则它们将按队列顺序提供服务-因此将是先进先出(FIFO)。