在使用A星算法扩展节点时,如果开放列表中有多个节点具有相同的最小成本值?

在使用A星算法进行搜索时,如果开放列表中有两个(或更多)节点具有相同的最小成本值,应该选择哪个节点呢?

我知道应该选择启发式值最小的那个节点,但如果这个成本也相同呢?

例如:

我有两个从根节点扩展出来的节点。f(n1) = f(n2) 且 h(n1) = h(n2)。我应该扩展哪个节点,n1还是n2?我应该随机选择还是选择最先添加到开放列表的节点?


回答:

  • 一种常见的策略是按照LIFO(后进先出)的方式处理这些相同成本的节点。这会使算法具有一定的深度优先特性。一般来说,这不一定是最有效的解决方案。

  • 你也可以使用随机的方式来打破这种平局。

  • 或者你可以选择一种实用的策略,即以某种方式选择算法首先生成的节点。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注