求单源最短路径—Dijkstra算法实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科学生综合性实验报告
项目组长杨滨学号_******* _
成员杨滨
专业_软件工程班级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 、相关的操作系统等。
二、实验过程(实验步骤、记录、数据、分析)
#include
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;i inS[i]=1; a=new int*[n]; for(i=0;i a[i]=new int[n]; cout<<"input "< for(i=0;i for(int j=0;j √ √ cin>>a[i][j]; d=new int[n]; for(i=0;i d[i]=a[0][i]; }*/ int Choose(int n,int *d,bool *s) { int i,minpos=-1,min=500; for(i=1;i if(d[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;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;i { k=Choose(n,d,inS); inS[k]=true; for(j=0;j if(!inS[j] && d[k]+a[k][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;