Algorithm python中关键路径的变化
我正在寻找一种方法,以最低的成本确定连接地图上不同坐标的路径。这些坐标表示管网的用户和一个供应商 我第一次搜索stack overflow的GIS部分是为了进行最小成本路径分析,但这不是我需要的(我没有找到一种算法,它只允许有一个起点和终点)。我有一个算法可以确定所有不同坐标之间的最低成本路径,但现在我想对这些数据进行一种关键路径分析。但是,在最终解决方案中必须处理所有坐标,并且不重要的是,除了供应商之外,哪个坐标优先 有人能帮我吗 提前谢谢 示例 好的,主要问题是: 我会有这样一个矩阵:Algorithm python中关键路径的变化,algorithm,sorting,python-2.7,pygraph,Algorithm,Sorting,Python 2.7,Pygraph,我正在寻找一种方法,以最低的成本确定连接地图上不同坐标的路径。这些坐标表示管网的用户和一个供应商 我第一次搜索stack overflow的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您描述的问题是邮递员的问题,不知道哪一个是起点。从你的问题来看,我相信你的图是没有方向的,因此从A到B的距离与从B到A的距离是一致的。在这种情况下,你可以通过迭代所有点的组合并计算总距离(即路径中距离的总和)来解决你的问题。最小值就是问题的解决方案 您可以阅读有关生成组合的更多信息。但不要提前生成它们,这不利于内存管理,只需始终计算下一个组合,测量其总距离,并将其与最小值进行比较。如果其小于最小值,则将最小距离修改为新的最小值,并将组合存储到一个数组中,该数组将在末尾包含最佳路径。如果您的图形是无向的,并且所有节点对都有一个顶点,那么这就是答案的结尾 如果我错了,你的图是有方向的,那么生成所有的组合是不够的,你需要生成所有的变体
请注意,如果出于某种原因,可能会出现节点对不一定具有垂直性的情况。在这种情况下,您需要生成所有有效的变体,其中valid意味着相邻的两个节点有一个顶点。我不理解这个问题。你能重新表述一下吗?一般来说,你可以使用Dijsktra算法,在这里你可以应用几何模型中使用的距离,如果需要,可以根据你的需要修改算法。我不理解你的确切问题,因此,除非你重新表述你的问题(你可以通过点击帖子标签下方的编辑按钮来完成),否则我只能为你做这些。我在问题框架中举了一个例子。希望这能让事情变得更清楚。