我给出了一个无向图G = (V, E)
,顶点s
的V
和函数w:E->{0,1}
。给定任何v
在V
,我需要返回一个路径的权重(路径的权重=路径的边的权重的总和)与最小权重从s
到v
在O(|V| + |E|)
时间。
。
这听起来像是一个我懒得解决的家庭作业问题(我时常得到这些答案),但我一直在努力解决这个问题,我非常感谢您的帮助或指导可能对我有用。找到给定函数的最小权重的路径
0
A
回答
0
这个问题可以通过模拟BFS算法来解决,但是用deque(D)而不是队列。 Algo使用标记列表“为每个顶点标记”,初始化为false。 s的距离将出现,因此您可以存储它们或使用“实时”。 D将存储对(顶点,distance_label)。
Algo开始:
D由(s,0)初始化。
在每次迭代中,从距离标签d的D(顶点v)中提取前(头)顶点。
如果v已经标记为已到达,则跳至下一次迭代。
否则,将v标记为已达到。现在,d是s和v之间的正确距离,对于每个未到达的邻居(顶点w),更新它的距离标签(d_w = d + dist(v,w)),并将pair(w,d_w) (v,w)= 0或放到尾部,否则。
Algo结束。
当您将它们标记为已到达时,您可以存储到所有顶点的距离。可能所有未达到的顶点都有无穷远的距离。
工作时间为O(| V | + | E |),因为您将每个顶点和每个边(在连接的组件中都用s)精确地处理一次。
算法的正确性可以通过距离s的归纳证明。
相关问题
- 1. 查找树中的路径/子路径,使得权重之和小于给定的整数
- 2. Dijkstra的算法找到最权重的路径
- 3. 找到顶点之间给定路线的最短路径python
- 4. 查找给定路径的根路径
- 5. 找到一个图的最小权重
- 6. 在C++中找到最短路径权重
- 7. OrientDB动态权重的最短路径?
- 8. 计算NetworkX多重图中给定路径的权重总和
- 9. 在给定路径找不到文件
- 10. 谜题:找到权重的最小数量
- 11. 地图API:在两个给定路径中查找最长的公共路径
- 12. 找到总和到给定值的最小素数
- 13. 算法在一个连接所有顶点的图中找到最小权重的线性路径
- 14. 找到给定整数的最小Antiprime的更好算法
- 15. 找到最深的嵌套路径?
- 16. 找到沿路径最近的瓷砖
- 17. 找到彼此最近的路径?
- 18. 找到有向图的最短路径
- 19. 路径不是真的给定的路径到Python
- 20. 寻找最短路径数的算法
- 21. 在非加权图中找到最短路径
- 22. 要找到两个给定节点/顶点之间的最大路径
- 23. 在图中找到最小数量的红色顶点的路径
- 24. 查找给定矢量的最小值
- 25. 算法找到最小削减给定的最大流量
- 26. 给定无向加权连通图s,t。查找从s到t的路径,它的权重最高的边缘尽可能低
- 27. 非循环图 - 顶点之间每条路径的最小权重
- 28. 需要检测图形中具有最小权重的结束路径
- 29. 找到给定输入的唯一路径名称
- 30. 如何在路径的给定部分下找到文件夹?
M. Thorup有一个线性算法,但我找不到它的(不支付)描述... – fjardon