我需要编写算法,在定向和加权图中找到最轻的路径树。 (尽可能高效) 我得到一个顶点S,需要建立一个从S到所有顶点的路径树,可以从S接近,所以树中的路径最轻(路径权重是没有端点的路径)
我考虑过首先计算距离S的所有距离然后对于每条路径都会有一个新的权重: 重量减去两端 然后在图表上使用新的权重来运行dijkstra ...
会起作用吗?它足够有效吗?如何计算距离?
答案 0 :(得分:3)
您的评论建议您实际上是在寻找从单一来源到所有顶点的最短路径。
了解Dijkstra's algorithm的工作原理。该算法以大小为1的树(仅源)开始,并迭代地将顶点添加到树中。最后,由dijkstra算法创建的树表示从源到图中每个节点的最短路径。
请注意,dijkstra算法在边缘上需要加权函数,而权重函数在顶点上。通过定义新的权重函数w':E->R
w'(u,v) = w(u)
可以很容易地解决它(它可以工作,因为你不想计算结尾)。
答案 1 :(得分:0)
听起来你要求minimum spanning tree。维基百科页面讨论了算法。