问题:

  旅行商从 a 开始周游下图所有的城市一次,然后回到 a,城市之间的旅行代价在图中标明。

  请选择一个最优的行走顺序使得周游所有城市的代价最小。

      

思路:

  随便怎么周游,对于一个城市来说,一定有一条进的路和一条出的路。

  对于每个城市来说,暂时都选取代价最小的两条路来作为理想的路线,就算这些路不合理。

  比如对于 a 来说,选择 a<->c(1) & a<->b(3) ;对于 e 来说,选择 e<->c(2) & e<->d(3)。

  把所有的这些值加起来除以2,

  本题即 lb=[(a<->c+a<->b)+(b<->a+b<->c)+(c<->a+c<->e)+(d<->e+d<->c)+(e<->c+e<->d)]/2=[(1+3)+(3+6)+(1+2)+(3+4)+(2+3)]/2=14 .

   把这个值当成是理想的最小代价,然后接下来搜索解空间树的时候,都在该基础上进行。

  下面画出搜索解空间树的过程,其中方框上面的是点的名称,下面是假设的理想周游代价,方框头顶是搜索顺序:

  刚开始从 a 走

  

  从 a 可以到达 b、c、d、e,

  

  这里有一个小细节,就是图中的 2 节点。想想如果周游路线 a<->b<->d<->e<->a 和 a<->e<->d<-><->c<->b<->a ,这两条路线其实是一样的,但是如果不加处理的话,可能两条路线会在搜索的时候都被搜索过,这样浪费了时间。因此,我们这里做个小约定,约定 b 要在 c 之前出现。因此,图中节点 2 就被抛弃了。

  继续上面的,从 a 走到那些点后,怎么计算理想代价呢,也就是说怎么计算 lb 呢。

  我们用 a 到 d 来举例子吧。

  最开始 lb 是选取每个点的代价最小的两条路, lb=[(a<->c+a<->b)+(b<->a+b<->c)+(c<->a+c<->e)+(d<->e+d<->c)+(e<->c+e<->d)]/2。a 走的是c 和 b 这两个,d 走的是e 和 c 。

  现在我们选择 a<->d ,那 d 的一条路要被改成 a 了。我们选择将原来的 a<->b 改成 a<->d,因为要使代价最小,所以选择代价大的来替换。那么 d<->c 就被替换成 d<->a了。这时再计算就可以得到新的 lb 了。  

  我们应该选择 lb 最小的往下搜索,较大的等下再搜索。于是

  

  继续向下

  

  这时已经找出两个周游路程了(因为最后肯定要回到 a 就没向下画了),我们继续搜索,看看有没再好点的解。向上退一层,就是 节点 6 了,所以

  

  继续搜索,发现节点 7 才走到 e 就要 19,而 节点 11 走完了只需要 16,所以把它抛弃,继续退回,发现 3,4 都不行

  

  得到了最优解。

  

代码:

  代码我不会写,哈哈哈哈哈哈哈哈哈。。。。

TSP问题(旅行商问题)[分支限界法]的更多相关文章

  1. Hopfield神经网络和TSP问题

    一.TSP问题 旅行商问题,又叫货郎担问题.它是指如下问题:在完全图中寻找一条最短的哈密尔顿回路. 哈密尔顿回路问题:给定一个图,判断图中是否存在哈密尔顿回路. 哈密尔顿回路:寻找一条回路,经过图中所 ...

  2. 蚁群算法(Java)tsp问题

      1.理论概述 1.1.TSP问题 旅行商问题,即TSP问题(旅行推销员问题.货郎担问题),是数学领域中著名问题之一.假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只 ...

  3. TSP问题之状压dp法

    首先,我们先来认识一下什么叫做TSP问题 旅行商问题,即TSP问题(Traveling Salesman Problem)又译为旅行推销员问题.货郎担问题,是数学领域中著名问题之一.假设有一个旅行商人 ...

  4. 蚁群算法解决TSP问题

    代码实现 运行结果及参数展示 alpha=1beta=5 rho=0.1  alpha=1beta=1rho=0.1 alpha=0.5beta=1rho=0.1 概念蚁群算法(AG)是一种模拟蚂蚁觅 ...

  5. 赋能时空云计算,阿里云数据库时空引擎Ganos上线

    随着移动互联网.位置感知技术.对地观测技术的快速发展,时空信息已从传统GIS行业渗透到大众应用及各行各业.从静态POI(兴趣点)到APP位置信息,从导航电子地图到车辆行驶轨迹,从卫星影像到三维城市建模 ...

  6. 「算法笔记」状压 DP

    一.关于状压 dp 为了规避不确定性,我们将需要枚举的东西放入状态.当不确定性太多的时候,我们就需要将它们压进较少的维数内. 常见的状态: 天生二进制(开关.选与不选.是否出现--) 爆搜出状态,给它 ...

  7. 基于分支限界法的旅行商问题(TSP)一

    旅行推销员问题(英语:Travelling salesman problem, TSP)是这样一个问题:给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路.它是组合优化 ...

  8. 基于分支限界法的旅行商问题(TSP)二

    和上篇一样,考前写写伪代码,考完了补上具体的解释和代码. 状态{矩阵,结果集,下界} 全局结果集列表,全局上界初始为Infinite 建立一个heap,存储状态,出堆规则为拥有最小的下界. 利用red ...

  9. 贪心算法:旅行商问题(TSP)

    TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出.问题描述如下: 有若干个城市,任何两个城市之间 ...

随机推荐

  1. jq中的移除事件

    unbind([type],[data]); 第一个参数是事件类型,第二个参数是将要移出的函数 说明: 1,如果没有参数,则删除所有绑定的事件 2,如果只提供了事件类型作为参数,则只删除该类型的绑定事 ...

  2. php获取文件名

    php获取文件名$phpself =$_SERVER['PHP_SELF']; //获取当前文件名$str = end(explode("/",$phpself)); //去掉'/ ...

  3. Zabbix之配置文件详解

    zabbix的配置文件一般有三种:zabbixserver的配置文件zabbix_server.confzabbixproxy的配置文件zabbix_proxy.confzabbix_agentd的配 ...

  4. 这丫头也的还真清楚,但是跑不通呢,换3.0.3的mybatis也不行

    http://java.dzone.com/articles/ibatis-mybatis-handling-joins http://mybatis.github.io/spring/mappers ...

  5. zf-监察系统的左侧菜单树的表

    Sys_Right 这个表

  6. 【记录】haphost免费vps初始配置

    1.配置德国epel源 yum install yum-priorities rpm -Uvh http://ftp-stud.hs-esslingen.de/pub/epel/6/i386/epel ...

  7. 创业手记 Mr.Hua

    <MR.HUA 创业手记>这本书期盼了很久,也看了很久,每每回味都是意犹未尽,仔细研读,真有醍醐灌顶之意.如果说没有跟Mr.Hua结识,那真该庆幸自己得以拜读.我把自己觉得华哥不错的句子摘 ...

  8. Tower Defense Game

    Tower Defense Game 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 There is a tower defense game with n level ...

  9. 考分鄙视(exam)

    考分鄙视(exam) 题目描述 Whence这个学期考了n次试,每一次都有一个0-20000之间的整数分数.Whence本来的状态应该是每一次考试都比前一次多一分(除第一次),但由于他很不稳定,偏差可 ...

  10. js优化与注意点

    1.使用尽可能少的全局变量.尽量用var来声明变量,避免隐式使用全局变量. 隐式全局变量和明确定义的全局变量间有些小的差异,就是通过delete操作符让变量未定义的能力. 通过var创建的全局变量(任 ...