- 108
- 0
- 约2.29千字
- 约 8页
- 2020-03-17 发布于江西
- 举报
算法分析与设计实验报告 第 7 次实验
姓名
学号
班级
时间
12.26 上午
地点
四合院
实验名称
分支界限法求最短路径
实验目的
(1)掌握并运用分支限界法基本思想
(2)运用分支限界法实现单源最短路径问题。
实验原理
给定下示有向图,利用分支限界法的思想,计算并输出其单源最短路径。
实验步骤
1 算法从图 G 的源顶点 s 和空优先队列开始。结点 s 被扩展后,它的儿子 结点被依次插入堆中;
2 算法每次从堆中取出具有最小当前路长的结点作为当前扩展结点,并依 次检查与当前扩展结点相邻的所有顶点;
3 如果从当前扩展结点 i 到 j 有边可达,且从源出发,途经 i 再到 j 的 所
相应路径长度,小于当前最优路径长度,则将该顶点作为活结点插入到活结 点优先队列中;
4 结点扩展过程一直继续到活结点优先队列为空时为止
void shorest(int v)
{
priority_queueHeapNode heap;
HeapNode enode(v,0);
for(int i=1; i=n; i++) dist[i]=MAX;
dist[v]=0;//搜索问题的解空间
while(1)
{
for(int j=1; j=n; j++)
if(a[enode.i][j]MAX
enode.length+a[enode.i][j]dist[j])//顶点 I 到 J 是可达的,并且满足控 制约束
{
dist[j]=enode.length+a[enode.i][j];
HeapNode node(j,dist[j]);
heap.push(node);//加入活节点优先队列
}
if(heap.empty()) break;//优先队列为空
else
{
enode=heap.top();
heap.pop();
}
}
}
测试结果
随机数产生图的权值:
实验心得
通过这次实验,我回顾了分支界限法求解最短路径问题,在其中加入了 舍伍德随机化取值过程,使数据分布更加均匀,让我熟悉了随机化算法,也 让结果更加公平可靠。
本次实验在书本有详细的算法,很容易实现了上面的图形,同时仿照了 回溯算法中随机取值产生权值的方法生成了一个图,并且通过改进,实现了 随机选择源点的方法进行求解最短路径。
通过这次实验,不仅掌握了分支界限算法,还掌握了随机产生一个图并 计算其最短路径的算法,让我觉得收获颇大。
实验得分
助教签名
附录:完整代码
#include iostream
#include queue
#includestdlib.h
using namespace std;
#define MAX 9999//定义为无限大 #define N 60
int n,dist[N],a[N][N];
class HeapNode//最小堆来存储活节点表 {
public:
int i,length;//顶点编号,当前的路径长度
HeapNode() { }
HeapNode(int ii,int l)
{
i=ii;
length=l;
}
bool operator(const HeapNode node)const
{
return lengthnode.length;
}
};
void shorest(int v)
{
priority_queueHeapNode heap;
HeapNode enode(v,0);
for(int i=1; i=n; i++) dist[i]=MAX;
dist[v]=0;//搜索问题的解空间
while(1)
{
for(int j=1; j=n; j++)
if(a[enode.i][j]MAX enode.length+a[enode.i][j]dist[j])//顶点 I 到 J 是可达的,并且满足控制约束
{
dist[j]=enode.length+a[enode.i][j];
HeapNode node(j,dist[j]);
heap.push(node);//加入活节点优先队列
}
if(heap.empty()) break;//优先队列为空
else
{
enode=heap.top();
heap.pop();
}
}
}
int main ()
{
int v,i;
cout个数:;
cinn;
cout源点:;
cinv;
for(int i=1; i=n; i++)
for(int j=1; j=n; j++)
{
if(i!=j){
if((a[j][i]==0)||(a[j][i]==MAX))
a[i][j]=rand()%100+1;
else a[i][j]=MAX;
if(a[i][j]50) a[i][j]=MAX;
}
}
cout\n 路径:
您可能关注的文档
- 华南理工大学英语B(二)作业及答案.docx
- 华南理工大学高级语言程序设计(C++I)试卷及答案.docx
- 华南理工建筑工程测量第二次作业答案.docx
- 华南理工数电试卷2和答案.docx
- 华南理工数电试卷一和答案.docx
- 华南理工经济学原理随堂练习.docx
- 华南理工网络教育2018年唐诗作业.docx
- 华城小学第二届读书节活动方案.docx
- 华大基因实习生管理办法(草案).docx
- 华容道各种阵型.docx
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 2025年植物源新农药百部碱行业深度研究报告.docx
- 2025年高考英语北京卷真题(解析版).doc VIP
- 高考数学考点与题型全归纳.docx VIP
- (高清版)-B-T 30146-2023 安全与韧性 业务连续性管理体系 要求.pdf VIP
- 高考数学考点题型全归纳.pdf VIP
- 2026年度黑龙江省交通运输厅所属事业单位公开招聘工作人员86人备考题库带答案详解(完整版).docx
- 2026年01月20日路易达孚(青岛)粮油食路易达孚食品科技产业中心青岛董家口一期项目董家口港区港润大道以东、纬十四路以北.pdf VIP
- 【高中物理】题型全总结(16专题),详细总结与归类!.pdf VIP
- 安徽师大附中2026届高二化学第一学期期末综合测试试题含答案.doc
- 化学元素读音及顺口溜大全.doc VIP
原创力文档

文档评论(0)