0%

【知识总结】 中国邮递员问题和旅行商问题

中国邮递员问题

最优邮路

求赋权连通图中含有所有边且权和最小的闭途径

Euler图

  • Euler迹:经过每条边恰好一次的迹
  • Euler闭迹:经过每条边恰好一次的闭迹
  • Euler图:有Euler闭迹的图
  • Euler图的最优邮路:即Euler闭迹

非Euler图的最优邮路

  • 必然要重复经过一些边
  • 重复走过的边作为重边添加到图中 新图一定是Euler图
  • 原图的最优邮路和新图的Euler闭迹一一对应

问题转换

  • 添加重边成为Euler图(如果本身不是的话)
  • 使添加的边权和最小
  • 找Euler闭迹

添加重边成为Euler图

Euler图的充要条件

一个非空连通图是Euler图当且仅当它没有奇度顶点 #### 添加重边的方案 + 奇度顶点 偶度顶点 + 偶度顶点 偶度顶点

使添加的边权和最小

定理

是赋权连通图,中有个奇度顶点。的最优邮路对应的Euler图,令。则是以的奇度顶点为起点和终点的k条无公共边的最短路之并。

重边的添加方法

  • 连接k对奇度顶点的k条无公共边的最短路
  • 且边权和最小

旅行商问题

Hamilton图

  • Hamilton路:经过每个顶点恰一次的路
  • Hamilton圈:经过每个顶点恰一次的圈
  • Hamilton图:有Hamilton圈的图

旅行商问题的难度

  • 找Hamilton圈:NP-complete
  • 找权和最小的Hamilton圈:NP-hard

旅行商问题的近似算法

  • 邻近点法
  • 最小生成树法
  • 最小权匹配法
  • Kernighan-Lin

邻近点法

基本思路

贪心的选择最近的未访问的邻点前行

算法性能

  • 近似比
  • 最终结果只和初始点的选取有关
  • 时间复杂度:

最小生成树法

基本思路

  • 的一颗最小生成树
  • 中的每条边添加重边成为
  • 的一条Euler闭迹
  • 沿前行,跳过已访问过的顶点,直至访问完所有顶点

算法性能

  • 近似比
  • 最终结果和最小生成树、闭迹、闭迹初始点有关
  • 时间复杂度:找最小生成树,添加重边,找Euler闭迹,沿Euler闭迹前行
  • 本算法可以进一步优化

最小权匹配法

基本思路

  • 的一颗最小生成树
  • 中奇度顶点在中异于导出子图的最小权完美匹配
  • 添加到中成为
  • 的一条Euler闭迹
  • 沿前行,跳过已访问过的顶点,直至访问完所有顶点

算法性能

  • 近似比
  • 最终结果和最小生成树、最小权完美匹配、闭迹、闭迹初始点有关
  • 时间复杂度:找最小生成树,找最小权完美匹配添加边,找Euler闭迹,沿Euler闭迹前行
  • 本算法可以进一步优化

Kernighan-Lin

理论近似比差,实际效果好的算法,详略。