18得票3回答
在无向无权图中查找给定长度的路径数

“路径”的“长度”是指路径上的边数。 给定一个起点和一个终点,我想找到从起点到终点的长度为k的所有路径的数量。 我们可以任意访问每个顶点,因此如果从a到b的路径如下:a -> c -> b -> c -> b,则被视为有效。这意味着可能存在循环,并且我们可以多次通...

17得票3回答
仅使用JavaScript进行DOM树遍历 - DFS和BFS?

有人能提供在纯JavaScript中实现DFS(深度优先搜索)和BFS(广度优先搜索)的代码、伪代码,或者好的链接吗?(不要使用JQuery或任何帮助库)我一直试图理解如何实现遍历,但我似乎无法真正区分BFS和DFS实现的差异。 如果我们需要一个具体的问题作为例子:我想遍历给定节点的DOM并获...

17得票4回答
如何学习Tarjan算法?

我已经尝试从维基百科学习Tarjan算法3个小时了,但我仍无法理解。:( http://en.wikipedia.org/wiki/Tarjan's_strongly_connected_components_algorithm#cite_note-1 为什么它是DFS树的子树?(实际上,...

15得票2回答
在无向图中查找两个顶点之间所有简单路径上的所有顶点。

枚举两个顶点之间所有简单路径在一般情况下需要指数级的时间,因为在这些顶点之间可能存在指数级数量的简单路径。但是,如果我们只关心那些出现在两个端点间至少一个简单路径上的顶点呢? 也就是说:给定一个无向图和两个不同的顶点,是否存在一个多项式时间算法来找到连接它们之间至少一个简单路径的每个顶点? ...

15得票3回答
为什么说深度优先搜索容易出现无限循环?

我多次阅读了与DFS和BFS相关的内容,但自始至终心中有一个疑问。很多文章中都提到DFS会陷入无限循环。 据我所知,通过跟踪已访问节点,就可以轻松解决这个限制。事实上,在我阅读的所有书籍中,这个小检查都是DFS的一部分。 那么为什么“无限循环”被提到作为DFS的缺点呢?这只是因为原始的DF...

15得票4回答
使用深度优先搜索在有向图中寻找最长的循环

我需要使用DFS在有向图中找到最长的循环。 我曾经看过维基百科上介绍如何解决这个问题的文章,我认为它是通过将节点标记为三种状态之一来处理问题:节点尚未被访问、已完成对节点的搜索,以及节点已被访问但尚未完成访问。 如果有人能与我分享链接,我会非常感激。顺便说一句,它不是Tarjan算法。 ...

15得票7回答
如何实现一定深度的广度优先搜索?

我理解并且可以轻松实现BFS。 我的问题是,我们如何将这个BFS限制在某一个深度范围内?假设我只需要搜索10层深度。

13得票2回答
如果拓扑排序使用深度优先搜索,那么它如何在非连通图上成功?

我知识有所欠缺,但不确定是哪方面。维基百科解释说,可以使用深度优先搜索进行拓扑排序。然而,我只看过深度优先搜索用于树的情况,而拓扑排序是用于DAGs的。 树是否是DAG的特殊情况,其中暗示的边的方向是从根节点向下 用于拓扑排序的算法是否真的没有使用DFS,只是类似于它的东西? 例如,拓...

13得票3回答
BFS、DFS和Dijkstra的实现

实现BFS、DFS和Dijkstra算法的方法几乎相同,只是BFS使用队列,DFS使用栈,而Dijkstra使用最小优先队列。更准确地说,我们可以使用以下代码来实现BFS、DFS和Dijkstra算法,其中Q是用于BFS的队列或用于DFS的栈或用于Dijkstra的最小优先队列。谢谢!Init...

13得票1回答
MySQL中的深度优先搜索

我正在尝试编写一个 MySQL PROCEDURE,它将边缘e和边集eset作为输入,并输出布尔值iscyclic以确定额外的边是否形成了环。是否有比创建所有顶点的表格并在运行边集时检查任何顶点是否被访问多次更简单的方法?