- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
求单源最短路径Dijkstra算法实验报告
本科学生综合性实验报告
项目组长 杨滨 学号_ 0123707 _
成 员 杨滨
专 业_软件工程 班级 12软件 2班
实验项目名称 求单源最短路径—Dijkstra算法
指导教师及职称_赵晓平 讲师_ _ _
开课学期 13 至_14 学年_一_学期
上课时间 2013 年 9 月 1 日
学生实验报告三(综合性实验)
学生姓名 杨滨 学号 0123707 同组人 实验项目 求单源最短路径——Dijkstra算法 □必修 □选修 □演示性实验 □验证性实验 □操作性实验 □综合性实验 实验地点 W101 实验仪器台号 指导教师 赵晓平 实验日期及节次 2013.12.17(二) 12节
2013.12.19(一) 89A节 一、实验综述
1、实验目的及要求
(1)了解求最优化问题的贪心算法,了解贪心法的基本要素,学会如何使用贪心策略设计算法;
(2)了解单源最短路径问题,掌握Dijkstra算法的思想;
(3)编写程序,利用Dijkstra算法实现,求任意两点间的单源最短路径。
实验题:
给出如右有向图的边权图,求任意两点间的单源最短路径。
实验要求:
认真完成实验题,能正确运行,提交实验报告并上传程序,实验报告要求写出操作步骤、结果、问题、解决方法、体会等。
2、实验仪器、设备或软件
计算机、VC++6.0、office、相关的操作系统等。
二、实验过程(实验步骤、记录、数据、分析)
#includeiostream
using namespace std;
/*void Graph(int n,bool *inS,int a[6][6],int *d)
{
inS=new bool[n];
inS[0]=0;
for(int i=1;in;i++)
inS[i]=1;
a=new int*[n];
for(i=0;in;i++)
a[i]=new int[n];
coutinput endl;
for(i=0;in;i++)
for(int j=0;jn;j++)
cina[i][j];
d=new int[n];
for(i=0;in;i++)
d[i]=a[0][i];
}*/
int Choose(int n,int *d,bool *s)
{
int i,minpos=-1,min=500;
for(i=1;in;i++)
if(d[i]min !s[i])
{ min=d[i];minpos=i; }
return minpos;
}
void Dijkstra(int s,int n,bool *inS,int *d,int *path,int a[6][6])
{
int k,i,j;
for(i=0;in;i++)
{
inS[i]=false;d[i]=a[s][i];
if(i!=s d[i]500) path[i]=s;
else path[i]=-1;
}
inS[s]=true;d[s]=0;
for(i=0;in-1;i++)
{
k=Choose(n,d,inS);
inS[k]=true;
for(j=0;jn;j++)
if(!inS[j] d[k]+a[k][j]d[j])
{ d[j]=d[k]+a[k][j];path[j]=k; }
}
}
void Display(int s,int n,int a[6][6],int *d,int *path)
{
int t,m;
couta[n][n]: endl;
for(int i=0;in;i++)
{
for(int j=0;jn;j++)
couta[i][j] ;
coutendl;
}
cout输入终点: ;
cint;
cout距离为 d[t]: d[t] ;
cout路径为: t;
while(t!=s)
{
m=path[t];
coutm;
t=m;
}
coutendl;
}
int main()
{
int n,*d,*path;//**a,
bool *inS;
int a[6][6]={0,50,10,500,70,500,500,0,15,500,10,500,20,500,0,15,500,500,
500,20,500,0,35,500,500,5
您可能关注的文档
最近下载
- (2025秋)人教版二年级数学上册全册教案(新教材).pdf
- 第二单元大单元教学设计 高一语文必修上册.docx VIP
- 2025年燃气安全生产管理人员模拟考试题库及答案.docx VIP
- 高中音乐 人音版 必修《音乐鉴赏》《舞动心弦——舞蹈音乐》 第四课时.pptx VIP
- 住院医师临床思维培养ppt模板.pptx VIP
- 反渗透纳滤组合工艺高盐废水深度处理及零排放预浓缩.pdf VIP
- 超声成像系统数字扫描变换器(参考).pptx VIP
- JTG3441-2024 公路工程无机结合料稳定材料试验规程.pdf VIP
- 腹腔镜下卵巢囊肿剥除术配合.pptx VIP
- 2026届高三语文一轮复习教学计划.docx
文档评论(0)