回溯问题适合于解由向量的形式来构成的,这个向量空间中使用搜索的方法进行搜索,搜索使用宽度优先的方法。货郎问题又名旅行商问题,但其实更多教科书中更通用的叫法叫旅行商问题,下面来对旅行商问题使用回溯算法证明。

文章目录

    • 一、问题描述
    • 二、数学建模
    • 三、实例
      • 1、传统经典做法
      • 2、回溯算法
  • 四、总结

一、问题描述

有n个城市,已知任两个城市之间的距离,求一条每个城市恰好经过一次的回路,使得总长度最小 。

分析:
有n个城市,城市与城市之前有距离的,任意两个城市之间的距离是已知的,现在需要找一条回路,经过每一个城市1次,使得总长度最小,就相当于这个货郎在路途,或者旅行商的行路,遍历所有的城市去各个城市走一趟,但是城市不能重复,所以怎么走下来才能够使得总长度达到最小。

其实相当于把这些城市做一个排列,第一个城市指向k1所指向的城市,由城市k1走向城市k2,一直往下走,走到kn以后再回到k1形成一个闭环

二、数学建模


数学表达式中的C k1到C k2,这两个城市的距离用d来表示,走到最后一个城市再倒回来(从C kn到C k1),这个距离达到最小,就是我们要做的事情。

这个问题是有选择的,一定程度上讲,TSP也是优化问题,只要是涉及到有选择,选择的不同导致结果的不同,结果的不同要想法设法找出最好的选择,不管是调度问题、背包的装法问题还是这个城市排列的问题,现代的智能优化算法不再使用精确的解,而是找到一个近似最精确的解就可以了。

三、实例

1、传统经典做法

从第1个城市走到第2个城市,从第2个城市走到第4个城市,从第4个城市到第3个城市然后再回来。

C={1,2,3,4}
d(1,2)=5, d(1,3)=9,
d(1,4)=4, d(2,3)=13,
d(2,4)=2, d(3,4)=7

解:< 1,2,4,3 > ,
长度= 5 + 2 + 7 + 9 = 23

这是其中一个解,最后的解得到的是城市的排列向量,上面原始的数据每两个城市之间的距离都是给出的。

2、回溯算法

假定每个城市都有连接,回溯算法的实现也是一种搜索,首先对于第一个城市出发,第1个城市和2,3,4城市相连,这个时候做选择,选择任何一条路径往下走,走到第2个城市,又有两种选择:到第4个城市,或者到第3个城市。每走到一个城市就选相当于前面已经走过的城市就不用再选择了,就从剩下的城市中去选。

一开始选定任何一个出发点出发,接下来又n-1个城市可以去选择,当你走到任何一个点之后,接下来又有n-2个城市可以去选择,……一直到最后只有1种选择,就是唯一的选择:回去。所以总的路径有(n-1)!种,每到叶结点的路径就是城市间的路径。

表示为树,称之为排列树,有(n-1)!片树叶

其实我们要找的就是在所有的排列树叶结点中去找最小的那个,所以搜索空间是相当大的。

四、总结

  • 解:向量
  • 搜索空间:树,可能是n叉树、子集树、排列树等等,树的结点对应于部分向量,可行解在叶结点
  • 搜索方法:深度优先, 宽度优先, …
    跳越式遍历搜索树,找到解

旅行商问题(回溯算法)相关推荐

  1. 【回溯算法】旅行商问题--TSP问题

    [问题描述] 一销售商从n个城市中的某一城市出发,不重复地走完其余n-1个城市并回到原出发点,在所有可能的路径中求出路径长度最短的一条.本题假定该旅行商从第1个城市出发. 输入 对每个测试例,第1行有 ...

  2. 【数据结构与算法】【算法思想】回溯算法

    贪心算法 回溯算法 分治算法 动态规划 回溯算法思想应用广泛,除了用来指导深度优先搜索这种经典算法设计之外,还可以用在如正则表达式匹配,编译原理中的语法分析等. 除此之外,很多经典的数学问题都可以用回 ...

  3. 回溯算法:从电影蝴蝶效应中学习回溯算法的核心思想

    回溯算法:从电影<蝴蝶效应>中学习回溯算法的核心思想 数独.八皇后.0-1背包.图的着色.旅行商问题.全排列问题都能用到 理解"回溯算法" 回溯的思想,类似枚举搜索,枚 ...

  4. 回溯算法:从电影《蝴蝶效应》中学习回溯算法的核心思想

    ------ 本文是学习算法的笔记,<数据结构与算法之美>,极客时间的课程 ------ 我们在深度和广度优先算法提到,深度优先搜索算法利用的是回溯算法思想.这个算法思想非常简单,但是应用 ...

  5. 极客时间——数据结构与算法(39) 回溯算法:从电影《蝴蝶效应》中学习回溯算法的核心思想

    转载地址:https://time.geekbang.org/column/article/74287 我们在第 31 节提到,深度优先搜索算法利用的是回溯算法思想.这个算法思想非常简单,但是应用却非 ...

  6. 数据结构与算法_04_回头是岸依好汉(回溯算法)

    数据结构与算法,系列文章传送地址,请点击本链接. 目录 一.怎么理解回溯算法 二.经典应用 1.0-1 背包问题 2.正则表达式 3.八皇后问题 一.怎么理解回溯算法 回溯算法的理解:回溯算法,顾名思 ...

  7. python回溯算法_回溯算法经典问题及python代码实现

    2. 0-1背包问题 # 0-1 bag problem import sys def f(no, cur_mass, things, num): global cur_max if no == nu ...

  8. 回溯算法,模板,拔河,旅行商,连续邮资问题题解

    文章目录 回溯算法模板 递归回溯 迭代回溯 子集树 排列树 题目 拔河问题 旅行商问题 连续邮资问题 回溯算法模板 递归回溯 回溯法对解空间做深度有限搜索,因此在一般情况下可用递归函数来实现回溯法如下 ...

  9. 算法整理八——回溯算法

    目录 一.概述 二.素数环问题 三.n个数中取出任意r个数进行排列 四.整数划分问题/自然数拆分(递归方法也可以实现,见递归部分) 五.装载问题(最大装载量) 六.0-1背包问题 七.n皇后问题 八. ...

  10. 39.回溯算法:从电影《蝴蝶效应》中学习回溯算法的核心思想

    文章目录 1. 如何理解"回溯算法"? 2. 两个回溯算法的经典应用 2.1 0-1背包 2.2 正则表达式 回溯算法解决,比如数独.八皇后.0-1背包.图的着色.旅行商问题.全排 ...

最新文章

  1. 算法------二叉树的层序遍历
  2. IE6-IE9不支持table.innerHTML的解决方法分享
  3. 五、畸变矫正—让世界不在扭曲
  4. windows远程连接linux-安装xfce界面,ubuntn添加新用户
  5. 也来谈谈这致命的手机充电器
  6. 动态代理的两种方式_一文帮你掌握Java中的动态代理
  7. 手机没信号突然无服务器,OPPO手机没信号怎么办?解决OPPO手机突然没信号的方法...
  8. 12星座哪些人会重友轻爱?
  9. 使用Cisco思科模拟器进行三层交换机配置
  10. MongoDB应用记录
  11. Win10安装应用或打开应用时提示“用户账户控制 为了对电脑进行保护,已经阻止此应用”
  12. php小红针有副作用吗,hph小红针精华液怎么样?hph小红针精华液测评
  13. Premiere Pro CS4\CS5\CS6\CC2015\CC2017\CC2018\CC2019软件安装教程
  14. 烟台大学计算机学院王文学,杨玉军-烟台大学 数学与信息科学学院
  15. Photoshop文字特效——炫彩效果文字
  16. 什么是磁盘阵列 磁盘阵列
  17. 产业安全专家谈 | 数字化转型过程中,企业如何建立顶级反欺诈能力?
  18. JZOJ3238. 超空间旅行
  19. F2FS nat entry涉及的数据结构(linux 5.18.11)
  20. IT十年人生过客2-毕业季

热门文章

  1. 什么是IPFS?(三)
  2. 计算机表格 求差,Excel表格中求差函数公式怎么用
  3. 小程序软件有必要申请软件著作权登记么?
  4. 计算机备份u盘,如何把电脑系统备份到u盘_怎么备份系统到u盘-win7之家
  5. 如何快速开通流量主,提升小程序UV访客
  6. PS常用快捷键 初学者必看
  7. mongodb数据库
  8. iOS学习爬坑记录4:ios8中的搜索栏,使用UISearchController
  9. Scala集合之Seq
  10. Excel随机数生成