【发布时间】:2013-08-17 06:49:51
【问题描述】:
我目前正在解决以下问题:给定一个有向图 G = (V, E) 我使用 Dijkstra 算法找到每个节点 vi ∈ V 的最短距离 di起始节点 v0.
现在我想找到节点*v**,它的所有节点最短距离之和∑di最小化。
在以下示例中,起始节点 v0 是黄色的,显然距离为 0。给出了所有其他节点的最短距离。
在第一个图中(左下角的startnode)所有最短距离的总和是
∑di = 1+2+2+2+3+3+3 = 16
在第二个图中(中间的startnode)所有最短距离的总和是
∑di = 1+1+1+2+2+2+2 = 11
边权重是浮点数,为了简单起见,在示例中它们被选为 1。
我当然可以尝试让每个节点找到最小值,但这当然太慢了。我迫不及待地想听听你的想法! :-)
【问题讨论】:
-
你的边权重总是 1 吗?
-
没有。为了简单起见,我只是选择了 1。
-
经过更多研究,我发现Edmonds' algorithm。这是朝着解决我的问题迈出的一步吗?
-
这可以工作,但您仍然需要为每个节点运行它。我不确定是否有更好的东西,因为您只关心成本而不关心实际的树。
-
@user2033412 请定义道路图是什么意思。您显然正在寻找一种算法来计算图形的中心,并且有一些图形类的线性算法(不仅适用于树)
标签: algorithm optimization graph-algorithm shortest-path