如何通过添加具有最小总重量的边来找到从源到目的地的路径

时间:2013-04-19 21:30:10

标签: graph connectivity

我在三维空间中有大约100个原子。每个原子都是一个节点。当边距小于0.32 nm且重量等于距离时,在两个节点之间添加边缘。我想找到从源节点到目标节点的路径。由于100个原子没有完全连接,有时我找不到路径。

我想要做的是添加一条或多条边以连接源和目标。同时,我还希望最小化新添加边缘的总重量。同样,权重是根据两个节点的距离计算的。

这是最小切割的反向问题。有没有算法有助于做到这一点?

非常感谢!

1 个答案:

答案 0 :(得分:0)

似乎有一种方法是使用图搜索算法来寻找最短路径,例如Dijkstra算法,并且可能从两端(源和目的地)工作。

唯一的区别是你无法知道是否存在任何边缘,所以你要随时创建图形。因此,如果从A开始,图表的节点是A,B,C,D,E。那么您需要检查是否存在A-B,A-C,A-D和A-E。如果仅存在A-B,则检查B-C,B-D和B-E。

这将是O(| V | ^ 2),但实际上取决于探索的边数。

如果您只想添加长度超过0.32 nm的边缘,则同样适用。只是路径长度计算发生了变化。任何小于.32 nm的边都是零长度,或者只是更短(因为它们变得不那么重要)。如果最后一位不起作用,那么它会变得有点棘手。