



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验五 分支限界法实现单源最短路径一 实验题目:分支限界法实现单源最短路径问题二 实验要求:区分分支限界算法与回溯算法的区别,加深对分支限界法的理解。三 实验内容:解单源最短路径问题的优先队列式分支限界法用一极小堆来存储活结点表。其优先级是结点所对应的当前路长。算法从图G的源顶点s和空优先队列开始。结点s被扩展后,它的儿子结点被依次插入堆中。此后,算法从堆中取出具有最小当前路长的结点作为当前扩展结点,并依次检查与当前扩展结点相邻的所有顶点。如果从当前扩展结点i到顶点j有边可达,且从源出发,途经顶点i再到顶点j的所相应的路径的长度小于当前最优路径长度,则将该顶点作为活结点插入到活结点优先队列中。这个结点的扩展过程一直继续到活结点优先队列为空时为止。四 实验代码#includeusing namespace std;const int size = 100;const int inf = 5000; /两点距离上界const int n = 6; /图顶点个数加1int prevn; /图的前驱顶点int dist = 0,0,5000,5000,5000,5000; /最短距离数组int cnn = 0,0,0,0,0,0,0,0,2,3,5000,5000, /图的邻接矩阵 0,5000,0,1,2,5000,0,5000,5000,0,9,2, 0,5000,5000,5000,0,2,0,5000,5000,5000,5000,0;const int n = 5; /图顶点个数加1int prevn; /图的前驱顶点int dist = 0,0,5000,5000,5000;int cn = 0,0,0,0,0,0,0,2,3,5000,0,5000,0,1,2,0,5000,5000,0,9,0,5000,5000,5000,0;class MinHeapNodepublic : int i; /顶点编号 int length; /当前路长;/循环队列class CirQueueprivate: int front,rear; MinHeapNode datasize;public: CirQueue() front = rear = 0; /元素入队操作 void queryIn(MinHeapNode e) if(rear +1)%size != front) rear = (rear+1)%size; /队尾指针在循环意义下加1 datarear = e; /在队尾插入元素 /元素出队操作 MinHeapNode queryOut() if(rear != front) front = (front+1)%size; /队列在循环意义下加1 return datafront; /读取队头元素,但不出队 MinHeapNode getQuery() if(rear != front) return data(front+1)%size; /判断队列是否为空bool empty() return front = rear; /判断队列是否为满bool full() return (rear +1)%size = front; ;/CirQueue结束class Graphpublic: /* * 单源最短路径问题的优先队列式分支限界法 */ void shortestPath(int v) CirQueue qq;/定义源为初始扩展结点 MinHeapNode e; e.i = v; e.length = 0; distv = 0; qq.queryIn(e); /搜索问题的解空间 while(true) for(int j = 1;j=n) break; MinHeapNode m = qq.getQuery();if(cm.ijinf)&(m.length + cm.ij distj) /顶点i到顶点j可达,且满足控制约束 distj = m.length + cm.ij; prevj = m.i; /加入活结点优先队列 MinHeapNode mi; mi.i = j; mi.length = distj; if(qq.full() break; qq.queryIn(mi); /元素入队 /for循环结束 if(qq.empty() break; qq.queryOut(); /当该结点的孩子结点全部入队后,删除该结点 /while循环结束 /方法结束;/类结束int main() Graph g; g.shortestPath(1); cout最短路径长为 distn-1endl; cout中间路径为: ; for(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安装水电施工合同范本
- 房屋租赁家具合同范本
- 种子种苗合同范本
- 专利转让免税合同范本
- 门店合伙合同范本6
- 航空航天装备钣金制造基地项目可行性研究报告模板-立项备案
- 保险中标合同范本
- 活动策划举办合同范本
- 铝单板补充合同范本
- 保洁公司雇佣合同范本
- 2025招标代理试题及答案
- 2025年9月新版用工合同(合作协议书)范本(可规避风险)
- 人民调解员培训课件
- 中国心房颤动管理指南(2025)解读
- 2025重庆机场集团有限公司社会招聘202人考前自测高频考点模拟试题及完整答案详解1套
- 福建省漳州地区2024-2025学年七年级下学期期末质量检测道德与法治试卷(含答案)
- 叉车生产安全知识培训课件
- 闭店协议如何签订合同模板
- 【课件】新高三启动主题班会:启航高三逐梦未来
- (正式版)JBT 7248-2024 阀门用低温钢铸件技术规范
- 软件无线电原理与应用第3版楼才义部分习题答案
评论
0/150
提交评论