繁体   English   中英

最佳的优先搜索是否最佳且完整?

Is best first search optimal and complete?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我对最佳的优先搜索算法有一些疑问。 我拥有的伪代码如下: 最佳优先搜索伪代码

第一个疑问:是否完整? 我已经读过它不是因为它可以进入死胡同,但是我不知道什么时候会发生,因为如果算法选择的节点没有更多的邻居,它不会卡在其中,因为该节点已被删除从打开列表开始,在下一次迭代中,将处理打开列表的以下节点,并继续搜索。

第二个疑问:是否最优? 我认为,如果在搜索过程中访问的目标更接近节点,那么解决方案将是最短的,但事实并非如此,我也不知道这样做的原因,因此也不知道这样做的原因。算法不是最佳的。

我使用的启发式方法是两点之间的直线距离。

谢谢你的帮助!!

2 个回复

通常情况下,最好的优先搜索算法是完整的,因为在最坏的情况下,它将搜索整个空间(最差的选择)。 现在,它也应该是最优的(考虑到启发式函数是可以接受的),这意味着它不会高估从任何节点到目标的路径成本。 (它还需要保持一致-这意味着它遵守三角不等式,如果不是,那么算法将不完整-因为它可能会进入一个循环)

检查您的算法,我看不到启发式函数是如何计算的。 另外,我没有看到计算出到达特定节点的路径成本。 因此,它需要计算到达特定节点的路径的实际成本,然后需要对从节点到目标的路径的成本进行启发式估计。

公式为f(n)=g(n)+h(n) ,其中g(n)是到达节点的路径成本,h(n)是启发式估计从n到最便宜路径的成本目标。

检查A *算法的实现, 该算法是路径规划中最佳优先搜索的一个示例。

TLDR在最佳的优先搜索中,您需要计算节点的成本,该成本是到达该节点的路径成本与启发式函数的总和,该启发式函数估计从该节点到目标的路径成本。 如果启发式函数是可接受的且一致的,则算法将是最佳且完整的。

当然,如果启发式功能低估了成本,则最佳的优先搜索不是最佳的。 实际上,即使您的启发式功能完全正确,也绝不能保证最佳的优先搜索是最佳的。 这是一个反例。 考虑下图:

示例图 绿色数字是实际成本,红色数字是确切的启发式函数。 让我们尝试找到从节点S到节点G的路径。最好的第一个搜索将遵循启发式函数为您提供S-> A-> G。 但是,如果您仔细观察该图,您会发现路径S-> B-> C-> G的成本较低,而不是6。因此,这是最佳启发式算法在最佳启发式算法下表现最佳的示例功能。

1 贪心最佳优先搜索算法是否与最佳优先搜索算法不同?

贪心最佳优先搜索算法是否与最佳优先搜索算法不同? 维基页面有一个关于贪婪BFS的单独段落,但有点不清楚。 我的理解是,Greedy BFS只是BFS,其中维基百科算法中的“OPEN最佳节点”是一个为节点计算的启发式函数。 所以实现这个: “OPEN的最佳节点”是一个启发函数 ...

3 最佳优先搜索评估功能

我正在C#中实现最佳优先搜索算法。 这是控制台应用程序。 我使用的数据结构是一棵树。 我在该算法中看到的评估函数是两个节点(例如城市)之间的直线距离。 距离是图形应用程序中网格上的向量(长度)。 我的应用程序在控制台中,因此无法计算节点之间的向量。 如何以实现该算法的方式计算 ...

4 Boost图库中的最佳优先搜索

我开始使用Boost图形库。 我需要一个最佳优先搜索,可以通过使用astar_search零成本来实现。 (如果我错了,请纠正我。) 但是,我想知道是否还有其他可能性呢? 如果不考虑成本,算法应该稍微更高效。 编辑:很抱歉,不清楚的描述。 我实际上正在实施潜在的野外搜索,因此 ...

5 熄灯最佳优先搜索/A* 算法

这是我正在尝试开发更多的家庭作业,但我无法弄清楚如何更进一步。 该作业基本上是关于使用不同的方法解决不同大小的Lights Out 。 我开发了一种有效的蛮力方法,但是当电路板尺寸很大时需要很多时间。 当我尝试实施最佳优先搜索或 A* 方法来解决游戏时,我的问题就出现了。 我必须为游戏设计一个启 ...

6 使用堆的最佳优先搜索实现

我正在尝试使用堆来实现基本的贪婪的“最佳优先搜索”算法,但我很接近但很困难。 任何帮助将由衷的感谢。 我有一个图类,该图类读取包含简单矩阵形式的数据的文本文件,类似于此: 文本文件矩阵表示节点的图,其中数字表示连接两个节点的边的距离,字母表示节点是图的起点还是终点。 在读取 ...

8 递归最佳优先搜索并找到最佳路径

在递归最佳优先搜索中,我将如何修改它,以便能够回溯路线? 我是否需要一个数据结构来跟踪上次递归中断后哪些节点被解开? 我已经在 LISP 和 RBFS 本身中实现了启发式和辅助函数(图形解析器、距离计算)。 现在,为了打印最佳路径,我有每个递归步骤的所有返回值(结果)的列表。 请参阅RBFS ...

9 最佳优先搜索和贪婪的最佳优先搜索之间的区别?

有什么区别吗? 我被告知贪婪者选择具有最高启发式函数值的孩子,即本地最佳后继者。 我的困惑是在贪婪的最佳优先算法中会发生什么,该算法不跟踪它的访问节点,在不同的路径中遇到相同的节点? 我会把问题画出来以清楚地描述它; 当贪婪最佳优先算法通过 B、C(x) 或 C(y) 到达 C 时,它会扩展哪个 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM