【问题标题】:How can I find the distance between 2 nodes given a list of edges (directed) of a graph?给定图形的边列表(有向),如何找到 2 个节点之间的距离?
【发布时间】:2019-01-26 03:46:25
【问题描述】:

假设我将边缘设置为包含边缘的列表,如下所示:

E=[(1, 6), (1, 7), (2, 3), (2, 6), (3, 2), (3, 8), (4, 5), (4, 7), (5, 4), (5, 9), (6, 1), (6, 7), (6, 2), (7, 1), (7, 6), (7, 4), (8, 9), (8, 3), (9, 8), (9, 5)]

在给定距离矩阵的情况下,我想找到节点 8 和 4 之间的最短路径(并且还考虑有 2 条等距离最短路径的情况):

C=[2.5, 5.59, 1.0, 2.0, 1.0, 2.0, 1.0, 2.0, 1.0, 2.0, 2.5, 5.0, 2.0, 5.59, 5.0, 2.0, 5.0, 2.0, 5.0, 2.0]

C 中的每个元素(例如在第 i 个位置)对应于 E(在第 i 个位置)中相应边的 2 个节点之间的距离。

我偶然发现了一些类似的帖子,这些帖子鼓励使用 Dijkstra 的算法,但我还没有找到可以在 Python 3.5x 中执行此操作的帖子(也许有,但我就是找不到……:/)

因此,为了补充我上面的问题,除了找到节点 8 和 4 之间的最小距离外,我还想将其推广到在给定边集和距离矩阵的情况下找到任意 2 个节点之间的最小距离。

【问题讨论】:

  • 我不完全理解这个问题,顺便说一句,想要的输出是什么?
  • @U9-Forward 很抱歉造成混淆,我会相应地编辑它。期望的输出是找到节点 8 和 4 之间的最短距离,并任意将其推广到任意 2 个节点
  • 我还是不清楚
  • 看看优先搜索(优先是负距离)或best-first search。实现它会很有趣(提示:从 BFS 开始,然后将 FIFO 队列与优先级队列交换)。
  • @randomir 谢谢!我会阅读这些参考资料。

标签: python python-3.x shortest-path


【解决方案1】:

尝试使用networkx

import networkx
shortest_path(G, source, target)
  • G 是图表。
  • 来源是起始节点。
  • 目标是路径末端的节点。

shortest_path documentation

【讨论】:

  • G、source和target分别代表什么?它需要什么类型的输入?
  • 刚刚添加了每个参数的描述。希望这会有所帮助!
猜你喜欢
  • 1970-01-01
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
  • 1970-01-01
  • 2017-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多