我在三维空间中有大约100个原子。每个原子都是一个节点。当边距小于0.32 nm且重量等于距离时,在两个节点之间添加边缘。我想找到从源节点到目标节点的路径。由于100个原子没有完全连接,有时我找不到路径。
我想要做的是添加一条或多条边以连接源和目标。同时,我还希望最小化新添加边缘的总重量。同样,权重是根据两个节点的距离计算的。
这是最小切割的反向问题。有没有算法有助于做到这一点?
非常感谢!
答案 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的边都是零长度,或者只是更短(因为它们变得不那么重要)。如果最后一位不起作用,那么它会变得有点棘手。