我知道它可以在O(V + E)中使用拓扑排序完成。但我认为它也可以使用BFS以相同的复杂度完成。我们可以使用BFS(以最优方式)查找加权有向非循环图中从源节点到所有其他节点的最短路径吗?
0
A
回答
0
除了它是一个DFS运行外,拓扑排序没有任何意义。然后,当每个顶点完成后,将它放到链表的前面。它的运行时间为O(V + E)。正如我之前所说的,我认为在这里更自然地问“我们可以使用BFS进行拓扑排序吗?”。这已经被问及和回答。
如果你的意思是纯粹的BFS,那么我会说不。看看这个example。拓扑排序是所有顶点的线性排序,因此如果图G包含边(u,v),则u在排序中出现在v之前。在这个例子中你可以看到从c到d有一条边,但是d出现在c之前。我认为你可以更新BFS来查找拓扑排序,但它又像运行DFS一样复杂。我建议你看看这篇文章Using BFS for topological sort
+0
让我们忘了一段时间的拓扑排序。如果我使用广度优先遍历DAG,从一个源节点s开始,那么我可以通过维持一个距离数组(初始化为无穷大)并在O(V + E)时间内找到所有其他节点的最短距离,并在我们得到的值小于当前存储的节点值。因此,回到我原来的问题,是不是这种方法具有与使用拓扑顺序遍历DAG中的节点以找到最短路径相同的复杂性? –
相关问题
- 1. 使用BFS查找2个节点之间的最短路径
- 2. 查找有向图中源到所有顶点的所有最短路径
- 3. 在加权图中找到从节点到所有其他节点的距离
- 4. 有约束节点通过的有向图加权图最短路径
- 5. 使用BFS查找两个节点之间的所有路径
- 6. 如何找到覆盖有向循环图中所有节点的最短路径?
- 7. 找到有向未加权图中两个节点之间的所有最短路径的数量
- 8. 有向无环图:找到特定节点的所有路径
- 9. 未加权图的最短路径(最少节点)
- 10. 查找有向图中节点数最多的路径
- 11. neo4j - 找到两个以上节点之间的所有最短路径
- 12. 通过所有其他节点(NP-Hard?)从节点A到B的最短路径
- 13. xquery - BFS查找两个节点之间的所有路径
- 14. Neo4J找到使用所有节点(无序)的最短路径密码
- 15. 使用BFS算法在未加权的有向图中找到两个节点之间的所有最短路径
- 16. 查找图中一对节点之间的K-最短路径?
- 17. 图中有多个“必须有”节点的最短路径
- 18. 如何在有向循环图中找到最长的简单路径(包括所有中间节点)?
- 19. 使用BFS找到最短路径
- 20. 加权有向非循环图的最长路径
- 21. 在有向加权图中找到给定节点的n个最接近节点的最快方法
- 22. 如何确定特定节点是否可以找到所有其他节点?
- 23. BFS,试图找到节点之间最长的方式
- 24. 找到有向图的最短路径
- 25. 如何在有向图中找到最小的一组顶点,以便可以达到所有其他顶点
- 26. 检查节点是否在有向图的节点路径中
- 27. 可达性计数在向非循环图的所有节点
- 28. 在未知大小的加权有向图上,如何迭代两个顶点之间从最短到最长的所有可能的非循环路径?
- 29. 在mysql和php中的无向,未加权图形中的2个节点之间的所有最短路径
- 30. 使用shortestPath()查找两步查询是找到从一个节点到多个节点的最短路径的最有效解决方案?
你能详细说明一下你的意思吗(以最优方式)?如果你的意思是复杂性,那么是的。拓扑排序是DFS的应用,这就是为什么它具有O(V + E)的复杂性。我认为询问“我们可以使用BFS做拓扑排序吗?”更自然。这个问题已经被问到。 – Abdulhakeem
我的意思是我们可以只使用BFS而不是以拓扑顺序访问节点。 –