STSP中用于记录节点和旅行回路的四种数据结构
对于TSP是是历史悠久的研究问题,直至现在已经有了很多成熟高效的算法来求解问题。在拥有好的求解算法的同时,优秀的数据结构可以同时大幅提升问题的求解速率,简化问题的求解步骤,下面要介绍的就是关于对称TSP问题(STSP)的四种数据结构,四种结构层层递进,且看慢慢道来。(部分图片来自百度百科,部分图片来自参看文献)
双链表结构
双链表结构可能是简单应用比较多的数据结构
双链表的结构核心就在于每个节点有记录它的前驱结点和后继节点,我们分别用pre和suc表示,然后依次来链接起所有节点并组成完成的哈密顿回路。
在具有领先性的弹射算法如LKH中,嘴贱但2-opt move需要对链表进行反转,对于双链表结构,反转操作需要平均的O(n)复杂度进行pre和suc的互换,并且每次进行k-opt move的时候都需要进行O(n)的更新。由此,卫星结构就应运而生,在介绍卫星结构之前,再讲一下2-level tree。
2-level tree
2-