【问题标题】:Variation on critical path in pythonpython中关键路径的变化
【发布时间】:2014-04-01 11:33:11
【问题描述】:

我正在寻找一种方法来确定连接地图上不同坐标的成本最低的路径。这些坐标代表管道网络的消费者和一个供应商

我首先搜索堆栈溢出的 GIS 部分以进行成本最低的路径分析,但这不是我所需要的(我没有找到一种算法,它允许不仅仅是一个起点和终点)。我有一个算法可以确定所有不同坐标之间的最低成本路径,但现在我想对这些数据进行一种关键路径分析。但是,所有坐标都必须在最终解决方案中得到解决,除了供应商需要成为第一个坐标之外,哪个坐标首先出现并不重要。

谁能帮我解决这个问题?

提前致谢

示例

好的,主要问题是:

我会有一个这样的矩阵:

  A  B  C  D

A x  3  4  2

B 3  x  7  5

C 4  7  x  9

D 2  5  9  x

在这个矩阵中,A、B、C 和 D 将代表地图上的一个位置(仅通过 X 和 Y 坐标),数字是在 A 和 B 之间建立连接的价格(例如:这些成本基于我将拥有的数据)。我的目标是以最便宜的方式将所有这些点连接起来。

为此,我正在考虑进行关键路径分析(您可能从业务课程中知道),但显然这不起作用,因为这些算法未编写导致包含所有位置的路径。但我需要连接所有这些 (4) 个节点,但只是以最便宜的方式。

例如:当我以 A 为起点时,我需要这个结果:

建立连接 A-D-B-C(这将花费 2+5+7 = 14)

而不是

ABCD = 19

ACBD = 16

ADCB = 18

ABDC = 17

ACDB = 18

【问题讨论】:

  • 我不明白这个问题。你能改写一下吗?
  • 一般情况下,您可以使用 Dijsktra 算法,在该算法中应用几何模型中使用的距离,如有必要,根据需要修改算法。我不明白你的确切问题,所以除非你改写你的问题(你可以通过点击帖子中标签下方的编辑按钮来做到这一点)这就是我能为你做的一切。
  • 我在问题框架中举了一个例子。希望这会让它更清楚。

标签: algorithm sorting python-2.7 pygraph


【解决方案1】:

您描述的问题是邮递员的问题,不知道哪个是起点。根据您的问题,我相信您的图表不是定向的,因此从 A 到 B 的距离与从 B 到 A 的距离一致。在这种情况下,您可以通过迭代所有点的组合并计算总距离来解决您的问题(即路径中距离的总和)。最小值就是问题的解。

Here 你可以阅读更多关于生成组合的信息。但是不要预先生成它们,这对内存管理不利,只是总是计算下一个组合,测量它的总距离并将其与最小值进行比较。如果它低于最小值,则将最小距离修改为新的最小值并将组合存储到一个数组中,该数组将在最后包含最佳路径。如果您的图形是无向的并且所有节点对都有一个顶点,那么这就是答案的结尾。

如果我错了并且您的图表是有向的,那么生成所有组合是不够的,您需要生成所有变体。

请注意,如果由于某种原因,可能是节点对不一定具有顶点的情况。在这种情况下,您需要生成所有有效的变体,其中有效意味着彼此靠近的两个节点有一个顶点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多