问题标签 [depth-first-search]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8221 浏览

java - Java中二叉树/图中的深度优先搜索

我一直在尝试让这个图伪装成二叉树工作。目前我正在使用一个函数,它传入根节点和我正在寻找的节点的 ID。唯一的问题是,根据我的编码方式,我的一方永远无法超过 3 个节点。我确定我只是没有正确地进行递归。我整晚都被困在这个问题上,无法得到这个。我试过查看其他图表和树,但无济于事。我们没有使用实际的顶点或其他类似属性的图,但我不能只使用if (x <root.getID())root.left,因为它仍然是一个“图”,所以这不成立

这是我的非工作搜索算法,如果我让它长几个节点,它就会在右侧停止工作。Visited 正在使用 HashSet() 类。

我有一个打印所有树的工作代码,但我无法更改上面代码中的键比较。

感谢您的任何帮助。

编辑:我想我会扩展我正在做的事情。我必须有一个函数 makeRight 或 makeLeft 放入一个新节点,然后一个现有节点放入它有它的左或右子节点。就是这样。在其中搜索是调用私有 dfs 的公共方法。

根据我对 lc 和 rc 的 if 语句的递归函数的排序方式,树的另一侧会递归回基本情况,这就是让我假设 dfs 方法有问题的原因。这是请求的节点类。

}

0 投票
1 回答
5115 浏览

prolog - 序言中的深度优先,找到了目标但无法跟踪路径

这是我到目前为止所写的。

我正在使用 Russel-Norvig 中描述的算法。我不知道如何创建整个路径。我在这里遗漏了一些东西。对我来说,Russel-Norvig 真的很神秘。

0 投票
2 回答
793 浏览

python - 迷宫不是随机的

嘿,我正在构建一个生成迷宫的程序,以便稍后将路径转换为我的图形部分。我的大部分工作都在工作,但是,每次你只要走东线和南线,你就会到达终点。即使我将宽度设置为 64,因此迷宫是 64*64,我也可以选择这 2 个选项并每次都到达终点。我真的不明白它为什么这样做。代码如下,很容易理解。

正如你所看到的,我认为问题出在我生成迷宫的地方,但是,当我让它直到当前点结束时,它并没有填满每个迷宫,通常只是一条笔直的路径. 感谢您的帮助。

更新:我已将生成迷宫的 for 循环更改为简单的 while 循环,它似乎工作得更好。似乎当 for 循环运行时,它并没有递归地运行,但是,在 while 循环中它完全没问题。但是,现在所有的方块都没有填写。

0 投票
1 回答
968 浏览

c - 获取二维矩阵的相邻元素(仅限深度一)

我有一个 800 x 600 的图像。我想把它当作一个矩阵来获取相邻的元素

前任。

(0,0) (1,0) (2,0) (3,0)

(0,1) (1,1) (2,1) (3,1)

(0,2) (1,2) (2,2) (3,2)

(0,3) (1,3) (2,3) (3,3)

示例解决方案: (0,0) 与: (1,0) (0,1) (1,1) 相邻

(1,1) 与: (0,0) (1,0) (2,0) (2,1) (2,2) (1,2) (0,2) (0,1) 相邻

所以我写了一个结构数组,我会将这些点中的每一个存储到

所以我的第一个想法是实施一个 dfs,但这并没有真正奏效,所以我想获得外部意见,以使自己保持在正确的轨道上。谢谢

0 投票
1 回答
493 浏览

python - python中的深度优先算法不起作用

我有一些我决定用 Python 做的项目。简而言之:我有清单。它们每个都有列表,有时是一个元素,有时更多。它看起来像这样:

关键是将 numpy 数组中的值与此规则中的值(规则表的元素)进行比较。我们将一些 [x][y] 点与第一个元素进行比较(例如,第一个元素中的 1),然后,如果为真,则将数组中的值 [x-1][j] 与列表中的第二个值,依此类推。五个第一次比较必须为真才能更改 [x][y] 点的值。我是这样写的(主要函数是 SimulateLoop,顺序切换,因为simulate2函数是在第二个函数之后编写的):

数据类:

NumPy 数组是 World 类的对象。规则是如上所述的列表,由从另一个程序(GPL 许可证)获得的函数解析。

老实说,它似乎工作正常,但事实并非如此。我正在尝试其他可能性,但没有运气。它正在工作,解释器不会返回任何错误,但数组中的值会以某种方式改变错误。规则很好,因为它是由我从中获得解析器的程序提供的(GPL 许可证)。

也许它会有所帮助 - 它是 Perrier's Loop,修改过的 Langton's loop(人造生命)。

将非常感谢您的帮助!)

0 投票
1 回答
1768 浏览

graph - 查找树的父节点以创建可能的最短树高

我有一个无向图,表示为欧几里得权重的邻接矩阵。我用它来表示更大完整图的最小生成树。

我想要找到的是图中的单个节点,当用作根节点时,它会创建最短的树高。我想出的是使用每个节点作为根执行深度优先遍历,并跟踪看到的最短高度。有没有更快的方法来实现这一点?

0 投票
1 回答
2058 浏览

java - 实现深度优先图遍历

我有关于深度优先遍历的相互矛盾的信息,并且可以在理解如何构建程序时使用一些帮助。给定一个图,我想打印一个顶点序列。用户将输入一个特定的节点来开始遍历。我正在查看不同的示例,但我不明白深度优先遍历的顺序是如何工作的。我有以下伪代码可以使用:

0 投票
1 回答
4399 浏览

java - Java中的递归搜索

所以我一直在为游戏拼图编写一个程序。我创建了一个小板供用户使用,但问题是我不知道如何递归检查该单词是否在板上。我希望能够检查输入的单词是否确实在板上,并且有效。有效我的意思是,单词的字母必须彼此相邻。对于那些玩过boggle的人,你会明白我的意思。我要做的就是检查这个词是否在黑板上。

这就是我到目前为止所拥有的......

搜索是我的搜索算法,用于检查单词是否在板上,但我不知道它是否正确或是否有效。此外,我不知道如何实际告诉用户这个词是有效的!

感谢所有的帮助:)

所以我尝试使用您在下面建议的内容,但我不太了解 int [5][5] 的内容。所以这就是我尝试过的,但我不断出现越界错误!这里是源...

私人int计数= 0;(在班级顶部声明,以防你想知道我从哪里得到[count]这个词

0 投票
1 回答
6903 浏览

java - 图的邻接表的实现

我正在尝试为非加权图和一些问题/疑虑实现邻接列表。我意识到我需要一个链表来存储边和一个数组来存储顶点。目前我有一个(基本)Node 类和一个 Graph 类,它负责将边添加到特定顶点。然而,这并没有明确定义边缘的链表。我想做一个 DFS 和 BFS 并且想知道我应该怎么做?我是否需要更改已经包含这些方法的代码或现在。帮助将不胜感激。

0 投票
2 回答
2531 浏览

objective-c - 如何通过对象树实现深度优先搜索?

寻找一些带有解释的代码示例。维基百科对此过于抽象。