我的朋友把这个给我当脑筋急转弯,但我不知道如何在不使用暴力的情况下解决这个问题。
假设我们得到了一个哈密顿循环,在通过m个其他顶点v1到vm之后,这个哈密顿循环开始和结束于p0但现在我们想把这个周期分成两个基本上不相交的周期。两个循环的起始点和结束点都在p0处,但是v1到vm在这两个循环之间被分割,以最小化总行驶距离。唯一的条件是,如果i我知道这是可能的,如果我们检查所有的潜在划分顶点之间的两个周期。但这似乎很慢。

最佳答案

您可以在O(m^2)时间内使用动态编程来解决这个问题(甚至更快我没有试着改进它)。其思想是,对于每个iji < j使用W[i][j],您可以计算最佳的v[i]方法来构造一条到v[j]的路径和另一条到v[1]的不相交路径,其中这两条路径将使用从v[j]v[j]的所有顶点。只需查看路径中以W[i][m]结尾的第二个到最后一个顶点的可能性,就可以有效地计算这些值。
最后,考虑每个ip[0],然后返回,关闭两条路径,就可以看到结果。然后你选最好的。

关于algorithm - 最优地划分哈密顿周期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26962178/

10-12 18:49