25得票3回答
为什么DFS和BFS的时间复杂度取决于图的表示方式?

该网站http://web.eecs.utk.edu/~huangj/CS302S04/notes/graph-searching.html说明,当使用邻接表时,深度优先搜索和广度优先搜索的复杂度为O(V+E),而如果使用邻接矩阵,则复杂度为O(V2)。为什么会这样呢?

23得票1回答
为什么BFS的复杂度是O(V+E)而不是O(V*E)?

这里有一些伪代码(请忽略我的风格) 从v1(已入队)开始:function BFS(queue Q) v2 = dequeue Q enqueue all unvisited connected nodes of v2 into Q BFS(Q) end // maybe min...

21得票3回答
在BFS中,当出队节点时将其标记为已访问。

仅仅是一个关于图的BFS遍历的快速而有趣的问题。 我在许多网站上发现,BFS的伪代码基本上是这样的:BFS (Graph, root): create empty set S create empty queue Q add root to S //mark as visite...

21得票4回答
'回溯'和'分支限界法'的区别

在回溯算法中,我们同时使用广度优先搜索和深度优先搜索。即使在分支界限算法中,我们也会使用广度优先搜索和深度优先搜索以及最小代价搜索。 那么何时使用回溯算法,何时使用分支界限算法呢? 使用分支界限算法是否会降低时间复杂度? 分支界限算法中的最小代价搜索是什么?

21得票1回答
如何使用双向广度优先搜索来找到最短路径?

如何使用双向 BFS 查找最短路径?假设有一个6x6的网格,起点是 (0,5),终点是 (4,1)。使用双向 BFS 找出最短路径是什么?没有路径成本,且为无向图。

20得票3回答
使用BFS进行拓扑排序

广度优先搜索算法可用于查找图中的拓扑排序和强连通分量吗? 如果可以,应该如何实现?如果不行,为什么? 通常我们在这些问题中使用深度优先搜索,但是如果我尝试使用BFS实现会有什么问题呢? 类似这样的代码可以工作吗?def top_bfs(start_node): queue = [...

19得票2回答
为什么BFS/DFS的时间复杂度不仅仅是O(E),而是O(E+V)?

我知道stackoverflow上有一个类似的问题,其中一个人问为什么BFS/DFS的时间复杂度不仅仅是O(V)。 给出的恰当答案是,在完全图的情况下,E可能达到V^2,因此将E计入时间复杂度是合理的。 但是,如果V不能大于E+1。那么,在这种情况下,不考虑V的时间复杂度应该也能够工作吧?

18得票6回答
在Java或C ++中递归实现广度优先遍历函数?

这是一段Java代码,用于进行广度优先遍历:void breadthFirstNonRecursive(){ Queue<Node> queue = new java.util.LinkedList<Node>(); queue.offer(root);...

18得票3回答
广度优先完备性与深度优先不完备性的问题

根据《人工智能:一种现代方法》中的Norvig所述,深度优先算法不完整(不会始终产生解决方案),因为在下降的子树无限制的情况下,会出现这种情况。 另一方面,如果分支因子不是无限的,广度优先方法被认为是完整的。但是,在DFS中,如果子树是有限的,DFS不能被认为是完整的吗?既然BFS的完整性依...

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

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