算法设计与分析 课件 8.4-分支限界 - 典型应用 - 旅行售货员问题.pptx

算法设计与分析 课件 8.4-分支限界 - 典型应用 - 旅行售货员问题.pptx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

算法设计与分析

分支限界—旅行售货员问题;问题描述:某售货员要到若干城市去推销商品,已知各城市之间的路程(或旅费)。他要选定一条从驻地出发,经过每个城市一遍,最后回到驻地的路线,使得总的路程(或总旅费)最小。

问题抽象:设G=(V,E)是一个带权图。

图中各边的权值为正数。图中一条周游路线是包括V中每个顶点在内的一条回路。周游路线的费用是这条回路上所有边的权值之和。旅行售货员问题就是要在图G中找出费用最小的回路。;实例分析:

优先队列:

小根堆,用于表示活结点优先队列

优先级=下界lcost

lcost=cc+顶点的最小费用出边和(未来最小的花费);;;输入:图结点数n,图邻接矩阵a[][]

输出:最优值bestc,最优解v[]

1BBTSP(){

2若图中存在没有出边的结点,则退出;

3计算各顶点最小出边和MinSum;

4定义最优值bestc=∞;

5创建根结点E,令其s=0,cc=0,lcost=cc+MinSum,

6x={1,2,…,n};

7while(E不是叶结点){//遇到叶子时结束

8if(E是叶子的父结点){//E的层次为n-2

9c=E-cc+a[E-x[n-2]][E-x[n-1]]+

10a[E-x[n-1]][1];

11if(cbestc){

12bestc=c;改造E为扩展的叶结点,

13E-s++,E-cc=bestc;E入队;

14}

15else释放E;

16};17else{//扩展E的儿子结点

18for(i=E-s+1;i=n-1;i++){

19cc=E-cc+a[E-x[E-s]][E-x[i]];

20lcost=cc+E-lcost-MinOut[E-x[E-s]];

21if(lcostbestc){

22申请结点N;把E中x复制到N;

23N-s=E-s+1;交换N-x[N-s]与N-x[i];

24N-cc=cc;N-lcost=lcost;

25N入队;}

26}

27释放E;

28}

29从队列取下一个扩展结点E;

30if(E不存在)break;

31}

32if(bestc==∞)return∞;//无回路

33从E中复制x到解v中;

34释放E及优先队列中剩余结点;

35returnbestc;};

您可能关注的文档

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档