当前位置: 首页 > 面试题库 >

贪婪的最佳第一搜索算法是否与最佳第一搜索算法不同?

戚同
2023-03-14
问题内容

贪婪的 最佳第一搜索算法是否与最佳第一搜索算法不同?

该wiki页面大约有贪婪的BFS一个单独的段落,但它是一个有点不清楚。

我的理解是,贪婪的BFS只是Wikipedia的算法中“ OPEN最好的节点”是一个为节点计算的启发式函数的BFS。所以实现这个:

OPEN = [initial state]
CLOSED = []
while OPEN is not empty
do
 1. Remove the best node from OPEN, call it n, add it to CLOSED.
 2. If n is the goal state, backtrace path to n (through recorded parents) and return path.
 3. Create n's successors.
 4. For each successor do:
   a. If it is not in CLOSED: evaluate it, add it to OPEN, and record its parent.
   b. Otherwise: change recorded parent if this new path is better than previous one.
done

“贪婪的BFS”实际上是“贪婪的BFS”,其中“ OPEN中的最佳节点”是一种启发式函数,用于估计节点与目标的距离。我对吗?

编辑: 评论匿名者的答案:

因此,贪婪的BFS本质上不需要“ OPEN列表”,而应该仅基于当前节点做出决定吗?这个算法是GBFS:

1. Set START as CURRENT node
2. Add CURRENT to Path [and optinally, to CLOSED?]
3. If CURRENT is GOAL, exit
4. Evaluate CURRENT's successors
5. Set BEST successor as CURRENT and go to 2.

问题答案:

“最佳第一”可以允许 修改 决策,而在贪婪算法中,决策应该是最终决策,而不是修改决策。

例如,A *搜索是最佳优先搜索,但并非贪婪。

但是,请注意,这些术语并不总是与相同的定义一起使用。“贪婪”通常表示该决策永远不会修改,最终会因为运行时间的缩短而接受次优的解决方案。但是,我敢打赌,您会发现以下情况:“贪婪”用于“最佳第一+深度优先”的组合,如“尝试扩展最佳下一步直到遇到死胡同,然后返回上一步并继续”最好的”(我将其称为“优先深度优先”)。

另外,它取决于您所讨论的抽象级别。A *在“构建路径”中并不贪婪。保持大量开放路径很好。但是,它在向真正的最短路径“扩展搜索空间”方面很贪婪。



 类似资料:
  • 我有一个二进制搜索树,它的每个节点都有两个值。 所以它的节点是这样的。 我已经根据节点的“name”变量的升序在BST中插入了值。所以树的顺序遍历将按“name”的升序返回节点。 现在我想根据“值”变量的升序显示树节点。无需更改原始树。哪种算法/方法对此最有效?

  • 问题内容: 我需要搜索CLOB列,并正在寻找实现此目的的最佳方法,我在线上看到了使用DBMS_LOB软件包以及使用称为Oracle Text的变体的方法。有人可以提供一个有关如何执行此操作的快速示例吗? 问题答案: Oracle Text索引是必经之路。您可以使用CONTEXT或CTXRULE索引。CONTEXT可以用于非结构化文档,而CTXRULE在结构化文档上更有用。 该链接将提供有关索引类型

  • 一、引入 在计算机科学中,团问题指的是在给定的图中找到团(顶点的子集,都彼此相邻,也称为完全子图)的计算问题。 团的问题在现实生活中也有体现。例如我们考虑一个社交网络,其中图的点代表用户,图的边代表其所连接的两个用户互相认识。那么我们找到了一个团,也就找到了一群互相认识的人。 我们如果想要找到这个社交网络中最大的一群互相认识的人,那么就需要用到最大团搜索算法,最大团指的是点数量最多的极大团。 二、

  • 首先,是的,这是我的硬件,我觉得很难,所以我真的很感激一些指导。 我需要证明对于当

  • 本文向大家介绍贪婪算法相关面试题,主要包含被问及贪婪算法时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法。贪婪算法所得到的结果往往不是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果。贪婪算法并没有固定的算法解决框架,算法的关键是贪婪策

  • 主要内容:1. 广度优先搜索,2. 深度优先搜索,3. 深度有限搜索算法,4. 统一成本搜索算法,5. 迭代深化深度搜索,6. 双向搜索算法不知情的搜索是一类通用搜索算法,它以强力方式运行。除了如何遍历树之外,不知情的搜索算法没有关于状态或搜索空间的附加信息,因此它也称为盲搜索。 以下是各种类型的无知搜索算法: 广度优先搜索 深度优先搜索 深度限制搜索 迭代加深深度优先搜索 统一成本搜索 双向搜索 1. 广度优先搜索 广度优先搜索是遍历树或图的最常见搜索策略。此算法在树或图中搜索横向,因此称为广

  • 主要内容:纯启发式搜索在前面章节中,我们已经讨论了不知情搜索算法,该搜索算法通过搜索空间查找问题的所有可能解决方案,而无需任何关于搜索空间的额外知识。但是,知情搜索(Informed Search)算法包含一系列知识,例如我们离目标有多远,路径成本,如何到达目标节点等。这些知识有助于代理人更少地探索搜索空间并更有效地找到目标节点。 知情搜索算法对于大型搜索空间更有用。知情搜索算法使用启发式思想,因此也称为启发式搜索。

  • 说到搜索算法,它是利用计算机的高性能来有目的的穷举一个问题的部分或所有的可能情况,从而求出问题的解的一种方法。搜索过程实际上是根据初始条件和扩展规则构造一棵解答树并寻找符合目标状态的节点的过程。搜索算法在路径规划、行为决策、语句识别、语义分析等多个领域都发挥着非常重要的作用,下面会给大家做一些介绍,便于大家学习和理解。 一、搜索算法介绍 搜索算法就是穷举出一个问题的部分或所有可能情况,从中找出求解