精品文档 知识共享
算法分析与设计实验报告
第 七 次实验
姓名
学号
班级
时间
12.26上午
地点
工训楼309
实验名称
分支限界法实验(单源最短路径)
实验目的
掌握并运用分支限界法的基本思想
运用分支限界法实现单源最短路径问题
实验原理
问题描述:
在下图所给的有向图G中,每一边都有一个非负边权。要求图G的从源顶点s到目标顶点t之间的最短路径。
基本思想:
下图是用优先队列式分支限界法解有向图G的单源最短路径问题产生的解空间树。其中,每一个结点旁边的数字表示该结点所对应的当前路长。
为了加速搜索的进程,应采用有效地方式选择活结点进行扩展。按照优先队列中规定的优先级选取优先级最高的结点成为当前扩展结点。
实验步骤
(1)算法从图 G 的源顶点 s 和空优先队列开始。结点 s 被扩展后,它的儿子 结点被依次插入堆中;
(2)算法每次从堆中取出具有最小当前路长的结点作为当前扩展结点, 并依 次检查与当前扩展结点相邻的所有顶点;
(3)如果从当前扩展结点 i 到 j 有边可达,且从源出发,途经 i 再到 j 的所相应路径长度,小于当前最优路径长度,则将该顶点作为活结点插入到活结 点优先队列中;
(4)结点扩展过程一直继续到活结点优先队列为空时为止。
关键代码
//单源最短路径问题的优先队列式分支限界法
templateclass Type
void GraphType::shortest_path(int v)
{
//定义最小堆的容量为1000
MinHeapMinHeapNodeType H(1000);
//定义源为初始扩展结点
MinHeapNodeType E;
//初始化源结点
E.i=v;
E.length=0;
dist[v]=0;
while(true) //搜索问题的解空间
{
for(int j=1;j=n;j++)
if((c[E.i][j]!=0)(E.length+c[E.i][j]dist[j]))
{
//顶点i到顶点j可达,且满足控制约束
//顶点i和j之间有边,且此路径小于原先从源点到j的路径长度
dist[j]=E.length+c[E.i][j]; //更新dist数组
prev[j]=E.i;
//加入活结点优先队列
MinHeapNodeType N;
N.i=j;
N.length=dist[j];
H.Insert(N); //插入到最小堆中
}
try
{
H.DeleteMin(E); // 取下一扩展结点
}
catch (int)
{
break;
}
if(H.currentsize==0) //优先队列空
{
break;
}
}
}
测试结果
上述有向图的结果:
实验分析
在实验中并没有生成多组数据,进行比较,也没有利用随机生成函数,因为在这种有实际有关联的问题中,利用随机生成函数生成的数据是十分的不合适的,在此我们只需要验证该程序是否正确即可。分支限界法求单源最短路径问题与回溯法求单源最短路径问题其大致思想是一致的,都是利用解空间树,搜索子集树,回溯法是利用深度优先搜索子集树,而分支限界法是利用广度优先搜索子集树,然后利用队列或优先队列,最小堆存放可扩展的结点,然后将活结点出堆,从而直到堆空为止,找到最优解。
实验心得
在这一章的分支限界法中,与上一章的回溯法很相似,都是利用解空间树进行搜索,从而找到最优解。不同的是回溯法利用的是深度优先回溯寻找,能够找到所有的最优解;而分支限界法则是利用广度优先搜索子集树或者排序树,利用队列或者优先级队列的数据结构组织所有满足的结点,这样只要找到一种最优解就可以了,想对于回溯法来说时间上相对利用的没有那么多。在这一章的学习上,由于会利用最小堆/最大堆,所以代码看起来比较复杂,堆的实现也比较复杂,这是这一章我学习的一个难点,不过正在渐渐攻克。
实验得分
助教签名
附录:
完整代码(分支限界法)
Shorest_path.cpp
//单源最短路径问题 分支限界法求解
#includeiostream
#includetime.h
#includeiomanip
#includeMinHeap2.h
using namespace std;
templateclass Type
class Graph //定义图类
{
friend int main();
public:
void shortest_path(int);
private:
int n, //图的顶点数
*prev; //
您可能关注的文档
- 方剂学古方版.docx
- 基于STC89C52RC智能避障灭火小车毕业论文设计.doc
- 操作系统实习报告.docx
- 叉车液压系统集成块及其加工工艺的设计.doc
- 消费者品牌忠诚度分析.doc
- 2014苏教版小学美术第四册教案.doc
- 眼镜店新员工专业知识.doc
- 图像处理上机作业题.doc
- 基于PHP的新闻发布系统设计与实现(论文).doc
- 单片机课程设计--动态数码显示技术.doc
- 浙江省温州市2024-2025学年七年级上学期语文期末考查卷.docx
- 精品解析:北京市建华实验学校2024-2025学年七年级下学期期中英语试题(原卷版).docx
- 精品解析:北京市通州区2024-2025学年七年级下学期期末考试英语试卷(原卷版).docx
- 精品解析:北京市回民学校2024-2025学年九年级上学期期中语文试题(解析版).docx
- 精品解析:北京市海淀区2025-2026学年九年级上学期期末语文试题(解析版).docx
- 精品解析:北京市东城区汇文中学2025-2026学年八年级上学期期中语文试题(原卷版).docx
- 精品解析:北京市回民学校2024-2025学年九年级上学期期中语文试题(原卷版).docx
- 精品解析:2024-2025学年广东省广州市从化区街口镇中心小学人教版五年级上册期中测试数学试卷(解析版).docx
- 精品解析:北京市通州区2024-2025学年七年级下学期期末考试英语试卷(解析版).docx
- 精品解析:北京市建华实验学校2024-2025学年七年级下学期期中英语试题(解析版).docx
最近下载
- CJ_T 553-2024 城市数字公共基础设施统一识别代码编码规则.docx VIP
- 基于esp32的智能家居系统.docx VIP
- 征兵政治考核培训课件.ppt VIP
- 你好法语1课文unité2-4.pdf VIP
- 京东合规专员岗面试题库参考答案和答题要点.docx VIP
- 福建省泉州市2024-2025学年高二上学期期末教学质量监测生物试卷(含答案).pdf VIP
- 2025.4.11 装修改造项目加固工程施工方案,六大加固方法施工要点集齐了!94页Word可下载!.docx VIP
- 2024-2025学年河南省商丘市柘城县九年级上学期期末考试数学试题(含答案).pdf VIP
- 某水泥厂施工组织方案总方案.doc VIP
- 广东省中山市2023-2024八年级上学期期末考试数学试卷 .pdf VIP
原创力文档

文档评论(0)