- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试结合广度优先搜索和迭代加深搜索。 AI 书 AI - 一种现代方法,第 3 章(第 90 页)中提到了这种方法。思路是从初始状态开始,进行广度优先搜索,直到达到某个恒定的内存限制mB,然后在前沿的每个节点上进行迭代加深搜索。
这个搜索算法可靠吗?完全的?最优?
最佳答案
广度优先搜索本身是可靠的、完整的和最优的。因此,对于 BFS 在达到内存限制之前已经找到解决方案的任何问题,都没有问题。在找到解决方案之前,我们只需要考虑在达到内存限制的情况下会发生什么,例如您将开始在前沿节点上运行 IDS 的问题:
声音?
是的,IDS 永远不会以某种方式返回不正确的结果。
完成了吗?
这取决于您如何实现“边界中每个节点上的 IDS”。
如果你先在frontier的第一个节点做一个完整的IDS,然后在frontier的第二个节点做一个完整的IDS,等等,是不完整的。考虑在边界的第一个节点下有一个无限大小的搜索空间的情况,其中不包含解决方案。如果您首先尝试在该节点上运行“完整的”IDS,它将永远不会终止。
但是,如果您以不同的方式将 IDS 进程分散到边界中的节点上,它就可以完成。例如,如果您首先对边界中的所有节点进行深度为 1 的 DFS,然后对边界中的所有节点进行深度为 2 的 DFS,依此类推,算法将完成。
最优?
这里的完整性同样重要。如果您在移动到第二个节点之前完成了边界中第一个节点的完整 IDS,您可能已经在边界中的第一个节点下方找到了一个次优解决方案,因此该算法将是次优的。
如果您在边界中的任何节点移动到深度限制为 2 的 DFS 过程之前完成边界中所有节点的深度限制为 1 的 DFS 过程,并在移动到深度之前完成所有这些过程限制为 3 等,算法将是最优的。
关于algorithm - 不知情搜索 : run breadth-first search followed by iterative deepening search on each node in the frontier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50790538/
在 bfs 中,我们必须查找每个节点,对于每个节点,我们必须查看行的所有元素。这不需要 O(V^2)(邻接矩阵中的元素数)时间,因此对于邻接矩阵不应该总时间为 O(V^2+E)。 最佳答案 使用邻接矩
有人可以解释一下如何使用广度优先搜索来解决迷宫吗?我需要使用广度优先搜索来找到通过迷宫的最短路径,但是我很困惑。 这是我书中的伪代码: void breadth_first_search(tree T
我用 perl 编写了一个基本的网络爬虫。我怎样才能让它变得更复杂以“广度优先”的方式检索,就像 wget 那样? 这来自wget docs : Recursive retrieval of HTTP
我用 perl 编写了一个基本的网络爬虫。我怎样才能让它变得更复杂以“广度优先”的方式检索,就像 wget 那样? 这来自wget docs : Recursive retrieval of HTTP
有向图和无向图上的 bfs 在实现上有何不同。 我在网上找到了以下伪代码。我对无向图没问题。但不知道如何实现有向图。 frontier = new Queue() mark root visit
有n个顶点由m条边相连。有些顶点是特殊的,有些是普通的。至多有一条路径从一个顶点移动到另一个顶点。 第一个查询:我需要找出有多少对直接或间接相连的特殊顶点。 我的方法:我将应用 BFS(通过队列)来查
所以我为推箱子游戏实现了 2 个不同的求解器。 求解器很简单,给定一个起始状态(位置),如果初始状态是目标状态,则返回结果。否则生成子状态并将它们存储到与算法相对应的任何数据结构中。 (BFS 的队列
我正在编写一个程序,它是二叉搜索树的链接列表。我们应该在树中搜索一个数字并打印找到的树和行号。因此,我们应该使用广度优先搜索函数。我的出队函数中出现段错误,但我不确定原因。 这些是我的结构: type
我正在尝试学习 javascript,并花了今晚使用广度优先搜索编写 getElementByID() 函数。简而言之:我迷路了。 fiddle :http://jsfiddle.net/timdow
如果在 Breadth-FirstSearch(BFS) 算法中使用堆栈而不是 queueq 会发生什么? pseudocode of BFS with queue: BFS(node)
我试图弄清楚 BFS 如何是 O(m+n),其中 n 是顶点数,m 是边数。 算法是: public void bfs() { //BFS uses Queue data structure
原生 Javascript ES5/ES6 promise 我正在尝试导入具有递归关系的数据,因为数据库(mongodb)正在分配 id - 必须加载父级(异步)在它的 child 可以被加载之前(也
示例目录树: root /|\ / | \ / | \ A B C / \ / \ D E
在使用 repeat(auto-fit, minmax(, 1fr)) 时,有什么方法可以防止列大于网格宽度吗? ? 我希望有一个解决方案可以避免媒体查询,从而使组件更易于重用。网格中的每个元素都应始
我正在编写 Karma 来测试一些 AngularJS 代码。为了使测试正确运行,某些模块必须先于其他模块运行。 Controller 和服务在模块实例化之后出现。 我的代码现在的结构方式(非常简化)
我正在开发一个存储与文件系统的 inode 树非常相似的东西的系统。它已经具有与 ls 命令等效的功能,但尚不支持递归选项。我正在研究添加递归选项的实现选择。我想最大限度地提高了解 POSIX ls
我正在尝试结合广度优先搜索和迭代加深搜索。 AI 书 AI - 一种现代方法,第 3 章(第 90 页)中提到了这种方法。思路是从初始状态开始,进行广度优先搜索,直到达到某个恒定的内存限制mB,然后在
我是一名优秀的程序员,十分优秀!