- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
迪杰斯特拉算法要点
[日期]
迪杰斯特拉算法
姓名:陈应
学号专业:软件工程
语言:c++
系统:win8
日期:2014.11.28
指导老师:赵宏宇
实验内容描述:建立字符文件,在文件内输入如下数据:
m(为顶点数)
i1 j1 k1(i1,j1构成一条边,k1为权重)
i2 j2 k2
.
.
.
利用文件内的数据,使用邻接矩阵,建立又向连通网,采用迪杰斯特拉算法,得到有向连通网单源最短路经。输出指定顶点到其余顶点的最短路径及路径长度。
输入与输出设计:
用标志数组flag[N+1]表示两个集合,当flag[i]=0时表示顶点在集合V-S内,否则在集合S内
为集合S和集合V-S内的每个顶点设置一个距离值,集合S内顶点的距离值就为每个顶点的最短路径,而集合V-S内的顶点距离值为其顶点通过集合S内的顶点到达源点的最短路径
每次从集合V-S中选取距离值最小的顶点,加入到集合S中,此顶点的最短路径即为通过S中的顶点到达源点的最短路径,长度为??的此时的距离值。
每加入一个顶点到S中后,都要调整集合V-S中顶点的距离值
关键数据结构与算法:
邻接表存储网
迪杰斯特拉算法求最短路径
测试与结论
结论:测试正常,符合要求
源代码:
#includeiostream
#includefstream
using namespace std;
#define N 20
#define MAX 32767 /*MAX代表无穷大*/
typedef int AdiType;
AdiType matrix[N+1][N+1]; //邻接矩阵
typedef struct
{
int prenode;//表示前点顶点;
int pathlength;
}shortestPath;
shortestPath sp[N+1];
int flag[N+1]={0};//标志数组
/****求源点V到其余顶点的最短路径及长度***/
void dijisktra(int v,int n)
{
int i,j,m,k,min;
flag[v]=1;//源点v进入集合S
for(i=1;i=n;i++)
{
sp[i].pathlength=matrix[v][i];//置距离值
if((sp[i].pathlength!=0)sp[i].pathlength!=MAX)
sp[i].prenode=v;//置前点序号
}//初始化路径长度及路径数组sp
for(i=1;i=n;i++)
{
min=MAX;
for(j=1;j=n;j++)
{
if((flag[j]==0)(sp[j].pathlengthmin))
{min=sp[j].pathlength;m=j;}//m点距离值最小
}//从集合V-S中找到距离值最小的点
flag[m]=1;//m点加入集合S
for(k=1;k=n;k++)
{
if(flag[k]==0sp[m].pathlength+matrix[m][k]sp[k].pathlength)
{
sp[k].pathlength=sp[m].pathlength+matrix[m][k];
sp[k].prenode=m;
}
}//修改边集数组,调整距离值
}
}
/*****由前点数组求最短路径****/
void path(int v)
{
if(!sp[v].prenode)return;
path(sp[v].prenode);
coutsp[v].prenode-;
}
int main()
{
fstream file(D:\\tt.txt);
int n,i,j,w,v;
filen;//读入顶点数
for(i=1;i=n;i++)
for(j=1;j=n;j++)
if(i==j ) matrix[i][j]=0;
else matrix[i][j]=MAX;
while(fileijw)
matrix[i][j]=w;
cout请输入源点v:;cinv;
dijisktra(v,n);
cout源点v到各顶点最短路径及路径长度为:endl;
for(i=1;i=n;i++)
{
if(i!=v)
{
path(i);
couti:sp[i].pathlengthendl;
}
}
coutendl;
return 0;
}
您可能关注的文档
- 远程西安交通大学17年3月课程考试《金融期货》作业考核试题.doc
- 远程教育《未成年人保护法》题目答案.doc
- 违反财务会计管理制度行为及处理.doc
- 2016年秋七年级英语上册 Module 5 My school day Unit 3 Language in use教学案例课件.ppt
- 违规经营处方药处罚依据解析.ppt
- 2016年秋七年级英语上册 Module 5 My school day Unit 2-3新课落实课件.ppt
- 违约与违约责任(16必威体育精装版).ppt
- 连云港市2016年中考数学试题及答案(文字版).docx
- 连云港市2016年中考英语试题及答案(文字版).docx
- 连云港市2016年中考语文试题及答案(文字版).docx
最近下载
- 手拉手 心连心 2024——2025学年湘教版初中美术七年级上册.pptx VIP
- 人教版2023-2024学年六年级上册数学 第五单元 圆(学生版)-(复习讲义)单元速记·巧练.docx VIP
- 《凝聚的力量》精品课件.pptx VIP
- BridgeConex使用帮助.pdf
- 附件教育部理工科非物理类专业大学物理课程教学基本要求A类要求.doc
- 建筑十大新技术应用总结.docx VIP
- 中药制剂技术 汤剂认知 汤剂认知.ppt
- 第一单元+第一课+我们走在大路上 课件2024——2025学年+湘美版(2024)初中美术七年级上册.pptx VIP
- 第二单元第3课《创意改善生活》课件++2024—2025学年湘美版(2024)初中美术七年级上册.pptx VIP
- 龟兔赛跑儿童绘本故事PPT课件.pptx VIP
文档评论(0)