一种基于类的最短路径算法

时间:2016-02-08 18:06:37

标签: algorithm time-complexity complexity-theory shortest-path

给定 n 个类的位置,每个类可能在每个类中包含最少1个形式(x,y)的位置,如何找到包含一个这样的位置的路径(x,y) )从每个班级开始,这条路径是所有选择中距离最短的路径。

例如:
A类: [(1,1),(10,1)]
B类: [(20,1),(2,2),(1,15)]
C类: [(4,4)]
D类: [(8,8),(5,5),(3,3)]

解决方案是(1,1) - > (2,2) - > (3,3) - > (4,4)点。

我确实理解这可以通过应用最短路径算法和计算每个组合的成本来实现,但这在计算上是不可行的,因为可能的解决方案的数量随着类的数量和每个类中的位置而成倍增加(在例如,2 * 3 * 1 * 3个可能的路径)。

1 个答案:

答案 0 :(得分:1)

你可以将Euclidean空间中的哈密顿路径减少到这个问题。你只需要让每个班级都有一个点。

使用它,您可以轻松证明您的问题是NP难的,即没有解决方案比回溯更好。