下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验五 分支限界法实现单源最短路径一 实验题目:分支限界法实现单源最短路径问题二 实验要求:区分分支限界算法与回溯算法的区别,加深对分支限界法的理解。三 实验内容:解单源最短路径问题的优先队列式分支限界法用一极小堆来存储活结点表。其优先级是结点所对应的当前路长。算法从图G的源顶点s和空优先队列开始。结点s被扩展后,它的儿子结点被依次插入堆中。此后,算法从堆中取出具有最小当前路长的结点作为当前扩展结点,并依次检查与当前扩展结点相邻的所有顶点。如果从当前扩展结点i到顶点j有边可达,且从源出发,途经顶点i再到顶点j的所相应的路径的长度小于当前最优路径长度,则将该顶点作为活结点插入到活结点优先队列中。
2、这个结点的扩展过程一直继续到活结点优先队列为空时为止。四 实验代码#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,
3、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 datasi
4、ze;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()
5、 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
6、.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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CPIA 0064-2024光伏封装胶膜表面粗糙度测试方法
- T/TIC 004-2023生态环境监测机构综合能力评价通用规范
- T/FSHW 05-2025道路保洁质量与作业规范
- T/CI 1481-2026农民用水合作组织运行制度设计规程
- T/CAAMTB 191-2024车用70MPa加氢口性能试验方法
- T/CPF 0114-2025温室气体 产品碳足迹量化方法与要求 成型纸盒
- 2025~2026学年安徽省阜阳市临泉县校联考北师大版六年级上册11月期中数学试卷【附答案】
- 2025-2026学年陕西省咸阳市初中政治八年级期末下册自测专项攻坚题附答案
- 人工智能在生物多样性监测中的应用
- Photoshop基础技能考核试题(含详细答案)
- 面料染色工艺质量控制细则
- 衰弱老年住院患者护理专家共识(2026完整版)
- 2026中国高端装备润滑材料技术门槛与军事应用价值报告
- 2026年抗菌药物合理使用全员培训计划表
- 戒烟健康科普 拥抱美好人生
- 2025山东沂蒙山天蒙旅游区社会招聘2人笔试历年备考题库附带答案详解
- 华北科技学院《电力电子技术》2025-2026学年第一学期期末试卷(A卷)
- 2025新初任检察官遴选考试核心题库试题及答案
- 软件测试策略全面模板实例
- 浙江强基联盟2026年3月高一联考化学+答案
- 2025年贵州省12月普通高中学业水平合格性考试化学试卷
评论
0/150
提交评论