【问题标题】:Find center of a sparse graph查找稀疏图的中心
【发布时间】:2013-08-17 06:49:51
【问题描述】:

我目前正在解决以下问题:给定一个有向图 G = (V, E) 我使用 Dijkstra 算法找到每个节点 viV 的最短距离 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


【解决方案1】:

在社交网络的背景下,您描述的中心性指标是由 Sadibussi 在 1966 年定义的(参见 here 或在非官方链接中 here Freeman here 也描述和推荐了它(p.225 ) 作为去中心化的衡量标准)。它有时被称为farness(见here)。

广度优先搜索允许计算从图上每个顶点到其他顶点的最短路径的长度。请参阅接受的答案 herehere。其他计算 All-Pairs Shortest Paths 的方法见here

编辑:

既然您注意到您对近似解决方案感兴趣,请查看 Baswana 和 Kavitha 的 following paper。表 1.1 总结了已知结果。迄今为止最好的近似解需要 O(n^(3/2)) 空间来进行 3 拉伸解(这意味着估计的距离将大于实际距离,但小于实际距离的 3 倍)。我想这对于大多数实际目的来说还不够好。没有已知的 APASP(All-Pairs Approximate Shortest Paths)算法具有伸展

实用解决方案:

大多数实现都利用了现实世界道路网络中固有的层次结构。参见例如thisthisthis

【讨论】:

  • 我不能使用 APSP,因为它的内存消耗 O(|V|²)。该图有大约 250000 个节点。是否有任何近似或其他解决方案?
  • 感谢您的编辑——我想我会尝试使用其中一种 APASP 方法,我不必存储 |V|² 距离值,但可以在需要时查询它们短时间内。
猜你喜欢
  • 2019-04-11
  • 2017-12-12
  • 1970-01-01
  • 2016-01-25
  • 1970-01-01
  • 2016-05-31
  • 2019-12-09
  • 1970-01-01
  • 2010-11-14
相关资源
最近更新 更多