depth-first-search相关内容

BFS、迭代DFS和递归DFS:何时将节点标记为已访问

在谷歌上搜索了许多小时后,我仍然没有找到关于这个问题的深入、直观和可靠的解决方案。我找到的最接近的文章,链接到某个不知名的论坛上,是这样的:https://11011110.github.io/blog/2013/12/17/stack-based-graph-traversal.html。我也看到了这个堆栈溢出问题DFS vs BFS .2 differences,但回应没有达成明确的共识。 ..

脚本第n阶树

如果所有单击的子项都为True,则需要将父项的Clicked属性更改为True。因此,在本例中,ID-14,15是将CLICKED属性设置为True。因此,ID 11被点击的父母必须成为真的。 如果11、12、14、15为真,则必须使4为真。 let obj = {children:[ { ID:1, clicked: false, children: [ ..
发布时间:2022-09-23 22:49:39 前端开发

有向图中的深度优先搜索?

我有一个小数字数组。[4,1,2,5,3,6,8,7] 我的图表的设置方式是,数组中的每个数字都指向数组中比它后面更大的所有数字。(4指向5、6、8和7.3。3指向6、8、7等。)我将这些数字输入到图表中,使用邻接列表绘制出所有的边。我正在尝试使用某种深度优先搜索法来找出从图中的任何起点开始的最长路径的长度。我只是在开始和设置遍历时遇到了一些问题,特别是因为稍后我想使用相同的图来处理更大的随 ..
发布时间:2022-09-23 22:44:55 Java开发

求矩阵中最大连通区域的大小

所以我有一个矩阵(n行乘m列),希望找到具有最多连接的“1”的区域。例如,如果我有以下矩阵: 1 1 0 0 0 1 1 0 0 0 1 0 1 0 0 0 矩阵中有两个“1”区域。 第一区域: 1 1 1 1 1 第二区域: 1 我想创建一个将输出最大值=5的算法。我认为这与深度优先搜索有关,但我只有基本R和访问少数几个包的权限。 推荐答案 ..
发布时间:2022-09-23 22:41:26 其他开发

编写一个没有递归的迭代深化的 DFS

所以目前我有一个带有以下伪代码的 DFS procedure DFS(Graph,source):创建堆栈 S将源推送到 S标记来源而 S 不为空:将 S 中的项目弹出到 v对于图中 v 上的每条边 e:让 w 成为 e 的另一端如果 w 未标记:标记 w将 w 推到 S 上 如何更改此函数以接受限制搜索深度的第三个参数? 解决方案 让 Node 为图的每个节点创建一个结构,添加一个名 ..

在无向无权图中查找给定长度的路径数

路径的“长度"是路径中的边数. 给定一个源顶点和一个目标顶点,我想找到路径数从源顶点到目标顶点给定长度 k. 我们可以随意访问每个顶点,所以如果从 a 到 b 的路径是这样的:a ->c->b->c->b 它被认为是有效的.这意味着可以有循环,我们可以多次经过目的地. 两个顶点可以通过多条边连接.因此,如果顶点 a 和顶点 b 由两条边连接,那么路径 , a ->;b 通过边缘 ..

我的 DFS 树 (C++) 的意外结果

我已经解决了这个问题!!!我发现如果我必须使用 vector儿童;.但我不是很确定原因,有人能告诉我为什么吗?谢谢:) 问题: 我使用 test.cpp 生成一个树结构,如: (ROOT->children).size() 的结果是 2,因为 root 有两个孩子. ((ROOT->children)[0].children).size() 的结果应该是 2,因为 的第一个 ..
发布时间:2022-01-05 18:37:33 C/C++开发

为什么用 DFS 而不是 BFS 在图中寻找循环

主要使用 DFS 来查找图中的循环,而不是 BFS.有什么原因吗?两者都可以找到一个节点是否已经在遍历树/图时访问过. 解决方案 深度优先搜索比广度优先搜索的内存效率更高,因为您可以更快地回溯.如果使用调用堆栈也更容易实现,但这依赖于不溢出堆栈的最长路径. 此外,如果您的图表是定向,那么您不仅要记住您是否访问过节点与否,还有你是如何到达那里的.否则,您可能认为您找到了一个循环,但实际 ..

使用堆栈的非递归深度优先搜索 (DFS)

好的,这是我在 Stack Overflow 上的第一篇文章,我已经阅读了一段时间并且非常欣赏这个网站.我希望这是可以接受的问题.所以我一直在通读 Intro to Algorithms (Cormen. MIT Press),我一直在读图算法.我一直在研究为广度和深度优先搜索而设计的形式化算法,非常详细. 这是深度优先搜索的伪代码: DFS(G)--------------------- ..
发布时间:2021-12-24 14:50:52 其他开发

为什么 BFS/DFS 的时间复杂度不是 O(E) 而不是 O(E+V)?

我知道在堆栈溢出中有一个类似的问题,有人问过,为什么 BFS/DFS 的时间复杂度不是简单的 O(V). 给出的适当答案是,在完整图的情况下,E 可以与 V^2 一样大,因此在时间复杂度中包含 E 是有效的. 但是,如果 V 不能大于 E+1.那么,在这种情况下,时间复杂度中没有 V,应该可行吗? 解决方案 如果给定 E = kV + c,对于一些实常数 k 和 >c 那么, ..

在无向未加权图中查找给定长度的路径数

路径的“长度"是路径中的边数. 给定一个源顶点和一个目标顶点,我想找到从源顶点到给定长度 k的目标顶点的路径数. 我们可以根据需要多次访问每个顶点,所以如果从 a 到 b 的路径是这样的: a ->c ->b->c ->b 它被认为是有效的.这意味着可以有循环,我们可以不止一次地通过目的地. 两个顶点可以通过多条边连接.因此,如果顶点 a 和顶点 b 由两条边连接,则路径 a - ..

使用 DFS 检测图中的循环:2 种不同的方法以及有什么区别

请注意,图表示为邻接列表. 我听说过 2 种在图中找到循环的方法: 保留一个布尔值数组以跟踪您之前是否访问过某个节点.如果您用完了要访问的新节点(没有碰到您已经访问过的节点),那么只需回溯并尝试不同的分支. Cormen 的 CLRS 或 Skiena 中的一个:对于无向图中的深度优先搜索,有两种类型的边,树和返回.该图有环当且仅当存在后边. 谁能解释一下什么是图的后边以及 ..
发布时间:2021-12-24 14:45:07 其他开发

拓扑排序以找到到 t 的路径数

我必须开发与拓扑排序相关的 O(|V|+|E|) 算法,该算法在有向无环图 (DAG) 中确定从图的每个顶点到 t 的路径数(t 是出度为 0 的节点).我对 DFS 做了如下修改: DFS(G,t):对于每个顶点 u ∈ V do颜色(u)=白色path_to_t(u) = 0对于每个顶点 u ∈ V do如果颜色(u)==白色那么DFS-访问(u,t)DFS-访问(u,t):颜色(u) = ..
发布时间:2021-12-24 14:35:11 其他开发

查找图中的所有循环,redux

我知道这个问题有很多答案.但是,我发现他们中没有一个人真正切中要害. 有些人认为循环(几乎)与强连接组件相同(s. 在有向图中查找所有循环),因此可以使用为该目标设计的算法. 一些人认为,可以通过 DFS 并检查后缘来找到一个循环(s.关于文件依赖关系的增强图文档). 我现在想就是否可以通过 DFS 检测图中的所有循环并检查后边缘提出一些建议? http://www.me.utexas ..
发布时间:2021-12-24 14:27:09 其他开发

查找图的连接点或切点的算法说明

我已经在网上搜索过,但找不到任何关于用于查找图的所有关节顶点的 DFS 算法的解释.甚至没有维基页面. 通过阅读,我了解了这里的基本事实.PDF 每个节点都有一个变量,它实际上是在查看后边缘并找到离根节点最近和最上层的节点.处理完所有边后就会找到. 但我不明白如何找到它&DFS 执行期间每个节点的 up 变量.这个变量到底在做什么? 请解释算法. 谢谢. 解决方 ..