Language agnostic 如果开放列表包含多个成本值最低的节点,则使用A-star扩展哪个节点?

Language agnostic 如果开放列表包含多个成本值最低的节点,则使用A-star扩展哪个节点?,language-agnostic,artificial-intelligence,a-star,Language Agnostic,Artificial Intelligence,A Star,使用A-star算法执行搜索时,如果在开放列表中有两个或多个节点具有相同的值(恰好是最小的成本值),则应选择哪个节点 我知道你应该选择一个启发式值最小的,但是如果这个成本也是一样的呢 例如: 我有两个从根展开的节点。fn1=fn2,hn1=hn2。 我应该展开哪个节点,n1还是n2? 我应该随机展开还是使用添加到开放列表中的第一个值?我见过或写过的大多数算法只选择成本较低的第一个值。如果比较的下一个值具有完全相同的成本,则会选择第一个值进行扩展。该算法通常会很快回顾并扩展另一个,因此不会造成伤害

使用A-star算法执行搜索时,如果在开放列表中有两个或多个节点具有相同的值(恰好是最小的成本值),则应选择哪个节点

我知道你应该选择一个启发式值最小的,但是如果这个成本也是一样的呢

例如:

我有两个从根展开的节点。fn1=fn2,hn1=hn2。 我应该展开哪个节点,n1还是n2?
我应该随机展开还是使用添加到开放列表中的第一个值?

我见过或写过的大多数算法只选择成本较低的第一个值。如果比较的下一个值具有完全相同的成本,则会选择第一个值进行扩展。该算法通常会很快回顾并扩展另一个,因此不会造成伤害

一种常见的策略是以后进先出的方式处理绑定节点。这使算法的深度优先字符多一点。一般来说,这不一定是最有效的解决方案

你也可以利用这个机会打破僵局

或者选择实用的策略,选择算法以某种方式生成的第一个节点