算法设计与分析 课件 第六章 回溯法6.3.4 路线选择问题_第1页
算法设计与分析 课件 第六章 回溯法6.3.4 路线选择问题_第2页
算法设计与分析 课件 第六章 回溯法6.3.4 路线选择问题_第3页
算法设计与分析 课件 第六章 回溯法6.3.4 路线选择问题_第4页
算法设计与分析 课件 第六章 回溯法6.3.4 路线选择问题_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机算法设计与分析第6章回溯法路线选择问题在一个矿场有n个采矿区,矿场每天需要将各个矿区采的矿石运回处理。矿车从矿石处理车间出发,依次经过每个采矿区一次将其采的矿石装车,然后运回到矿石处理车间。矿场各个采矿区之间的距离已知。如何进行路线选择,使得矿石回收的运输路线总长度最短。请用回溯算法求解矿石回收运输路线选择问题。路线选择问题路线选择问题是一个典型的TSP问题图。设矿场各个采矿区的分布如图所示。图中结点A为矿石处理车间,结点B、C、D、E为四个采矿区,图中顶点之间边上权值表示两个点之间的距离。排列树定义v[1]~v[n]为问题的解向量,表示搜索过程中每一次选择经过的顶点。将顶点A~E映射为数字1~5,v[i]=j表示第i次选择经过的顶点为j。第二步:确定搜索结构---排列树

第一步:定义解向量第三步:确定剪枝函数v[1:n]有两重含义:①v[1:i-1]代表前i-1步按顺序经过的顶点②v[i:n]代表还未经过的顶点在第i次选择经过顶点时,只能在未经过顶点序列v[i]~v[n]中进行选择。算法需要判断当前路径长度是否优于已经找到的最优回路长度作为剪枝函数,判断当路径长度小于前面已知最优值时,则继续下一步探索,算法进入排列树下一层搜索,否则被剪枝处理。符号定义edge[n][n]:表示TSP问题图的邻接矩阵。v[n]:表示顶点序列,初值为{1,2,3,4,5},将前面的图中的顶点A,B,C,D,E映射为数字编号1,2,3,4,5。bestv[n]:存储最优路径顶点序列。bestc:表示最优路径长度,初值为INF。cc:表述当前路程长度,初值为0。路线选择问题递归回溯伪码Backtrack(i){if(i==n){if(当前路径长度+点n-1到n和点n到1的边长<当前最优路径长度)){

for(j

1;j<=n;j++)bestv[j]

v[j];

bestc

cc+edge[v[i-1]][v[i]]+edge[v[i]][1];

}}else{

for(j

i;j<=n;jif(当前路径+点i-1到j边长<bestc){//搜索子树

swap(v[i],v[j]);

cccc+

edge[v[i-1]][v[i]];

Backtrack(i+1);

cccc-

edge[v[i-1]][v[i]];

swap(v[i],v[j]);

}}//else}//函数Backtrack()从点i-1扩展点i时,若i为叶子结点n,且edge[n-1][n]+edge[n][1]+cc<bestc则记录最优路径,并将edge[n-1][n]+edge[n][1]+cc记录为新的最优路径值bestc第i步从未经过的顶点i~n中选择一个j且i-1到j边长+当前路径长度<bestc按排列树框架处理递归过程时间复杂度分析回溯算法在最坏情况下需要访问整个解空间排列树全部结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论