算法设计中最有名的问题恐怕非TSP(旅行售货商问题)莫属了,又名为Hamilton环游问题。
对此问题感兴趣的可以阅读下面的网站:
http://www.seas.gwu.edu/~simhaweb/champalg/tsp/tsp.html
http://www.akira.ruc.dk/~keld/research/LKH/
个人认为,K. Helsgaun 的 LKH (Lin-Kernighan-Helsgaun)方法是目前求解 TSP 问题的最有效方法。令人敬佩的是,为了促进研究,K. Helsgaun 在网站上发布了其算法的完整代码和他自己的研究论文。如果有时间和精力的话,好好的读读他的论文,将会很有收获的。感觉他的论文和在人脸识别中 P.Viola 的论文 “Robust Real-Time Face Detection” 一样的经典和让人兴奋。
K. Helsgaun 在其论文中,揭示了 TSP 最优解的若干特点:
最小生成树上的边出现在最优解中的概率非常高;
一个测试例子(532-city problem)发现,其最优解中有一条边e(from,to), 节点to 是 from 的第22个最近邻接点;
为了较好的度量一条边出现在最优解中的可能性,K. Helsgaun 引入了 1-tree 的概念并由此定义了边的 alpha-measure(测度);
对于上面的 532-city 例子,若使用 alpha-measure 则最优解上的边最多为第14个alpha-nearest。
进一步,K. Helsgaun 考虑了距离矩阵 C=(cij) 的一种变换(每个节点 i 的关联边长增加一个常量pi):
C=(cij) => D=(dij): dij= cij + pi + pj
这种变换使得TSP最优解保持不变,但却会改变最小生成树和 1-tree。选取合适的这种变换,alpha-measure 可以表现的更好。例如上面的 532-city 例子,适当变换后其最优解上的边最多为第5个alpha-nearest。这正如矩阵计算中的条件数那样,适当的变换后条件数会好的多。K. Helsgaun 使用 subgradient optimization 方法来选取这种变换,并且在变换的过程中,有可能发现TSP问题的真实最有解。这是因为如果计算得到的最小的 1-tree 正好是个环游(tour)的话,那么这个tour就是最优解。
关于 1-tree 和 alpha-measure(测度)的高效计算也值得注意,展示了图论的灵活应用。
总之,对于研究TSP问题而言,LKH方法非常值得大家关注。
————————————————
版权声明:本文为CSDN博主「xlh9718」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xlh9718/article/details/26960849