实验11图的最短路径实验报告1.docx

上传人:b****7 文档编号:9491904 上传时间:2023-02-04 格式:DOCX 页数:12 大小:54.08KB
下载 相关 举报
实验11图的最短路径实验报告1.docx_第1页
第1页 / 共12页
实验11图的最短路径实验报告1.docx_第2页
第2页 / 共12页
实验11图的最短路径实验报告1.docx_第3页
第3页 / 共12页
实验11图的最短路径实验报告1.docx_第4页
第4页 / 共12页
实验11图的最短路径实验报告1.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

实验11图的最短路径实验报告1.docx

《实验11图的最短路径实验报告1.docx》由会员分享,可在线阅读,更多相关《实验11图的最短路径实验报告1.docx(12页珍藏版)》请在冰豆网上搜索。

实验11图的最短路径实验报告1.docx

实验11图的最短路径实验报告1

 

深圳大学实验报告

 

课程名称:

数据结构实验与课程设计

实验项目名称:

图的最短路径实验

学院:

计算机与软件学院

专业:

网络工程

指导教师:

杨芳

报告人:

李楚煌学号:

2013150383班级:

8

实验时间:

2014-11-6

实验报告提交时间:

2014-11-6

教务处制

一、实验目的

1、掌握图结构的(邻接矩阵)输入方法

2、掌握图结构的说明、创建以及图的存储表示(邻接矩阵)

3、掌握最短路径算法原理

4、掌握最短路径算法的编程实现方法

二、实验要求

1、熟悉C++语言编程

2、熟悉图的邻接矩阵存储表示

3、熟悉最短路径算法原理

4、熟练使用C++语言,实现最短路径算法

三、实验内容

本次实验有两项内容:

(一)图的最短路径实验

1、问题描述

给定一个顶点(始点),求该顶点(始点)到(连通)图中其它顶点的最短路径。

2、算法

⑴、初始化:

S←{v1};//始点送S

D[i]←arc[1][i],i=2,3,…,n;//从v1到vi的距离

P[i]={1,i}//从v1到vi的路径

⑵、求出最短路径的长度:

D[j]←min{D[i]},iV-S;S←SU{j};

⑶、修改:

if(D[i]>D[j]+arc[j][i]){

D[i]=D[j]+arc[j][i];

P[i]=P[j]U{i};}iV-S//更新从v1到vi的路径

⑷、判断:

若S=V,则算法结束,否则转⑵。

3、输入

第一行:

样本顶点个数,假设为n。

第二行,n个顶点(用空格隔开)

第三行开始到n+2行:

每一行是某顶点(按第二行的输入为序)与其它顶点的距离(-1表示无穷大)

第n+3行:

开始顶点

4、输入样本

5

abcde

-15-1715

-1-15-1-1

-1-1-1-11

-1-12-1-1

-1-1-1-1-1

a

5、输出

共计n行(图中顶点数目)

每行是(与输入顺序相同)某顶点(距离):

路径(顶点序列,用空格隔开,回车前无空格)

6、输出样本

a(0):

b(5):

ab

c(9):

adc

d(7):

ad

e(10):

adce

(二)拓扑排序(选作)

1、问题描述

已知有向图,顶点从0开始编号,求它的求拓扑有序序列。

2、拓扑排序算法:

给出有向图邻接矩阵

(1)逐列扫描矩阵,找出入度为0且编号最小的顶点v

(2)输出v,并标识v已访问

(3)把矩阵第v行全清0

重复上述步骤,直到所有顶点输出为止

3、输入

第一行输入一个整数t,表示有t个有向图

第二行输入n,表示图有n个顶点

第三行起,输入n行整数,表示图对应的邻接矩阵

以此类推输入下一个图的顶点数和邻接矩阵

4、输出

每行输出一个图的拓扑有序序列

5、样本输入

2

5

01011

00100

00001

00100

00000

7

0000000

1011000

1000000

1010000

0000011

0100000

0001010

6、样本输出

01324

4651320

四、程序清单

1:

#include

usingnamespacestd;

#defineMAX10

#defineIni100

charPath[MAX][MAX];

intDest[MAX];

typedefstruct{

charVertex[MAX];

intVertexNum;

intAdj[MAX][MAX];

}Graph;

GraphG;

voidCreateGraph(Graph&G){

inti;

cin>>G.VertexNum;

for(i=1;i<=G.VertexNum;i++){

cin>>G.Vertex[i];

}

for(i=1;i<=G.VertexNum;i++){

for(intj=1;j<=G.VertexNum;j++){

cin>>G.Adj[i][j];

if(G.Adj[i][j]==-1)

G.Adj[i][j]=Ini;

}

}

}

voidCreatePath(Graph&G,charStartVertex){

intStartVex,MinDest,i,j,m,CurrentVex;

charFinal[MAX];

for(i=1;i<=G.VertexNum;i++){

if(G.Vertex[i]==StartVertex){

StartVex=i;

break;

}

}

for(i=1;i<=G.VertexNum;i++){

Path[i][0]=0;

Dest[i]=Ini;

if(G.Adj[StartVex][i]

Dest[i]=G.Adj[StartVex][i];

Path[i][1]=G.Vertex[StartVex];

Path[i][2]=G.Vertex[i];

Path[i][0]=2;

}

Final[i]='F';

}

Dest[StartVex]=0;

Final[StartVex]='T';

for(i=1;i<=G.VertexNum;i++){

MinDest=Ini;

for(j=1;j<=G.VertexNum;j++){

if(Final[j]=='F'){

if(Dest[j]

CurrentVex=j;

MinDest=Dest[j];

}

}

}

Final[CurrentVex]='T';

for(j=1;j<=G.VertexNum;j++){

if((Final[j]=='F')&&(MinDest+G.Adj[CurrentVex][j]

Dest[j]=MinDest+G.Adj[CurrentVex][j];

for(m=0;m<=Path[CurrentVex][0];m++)

Path[j][m]=Path[CurrentVex][m];

Path[j][0]++;

Path[j][m]=G.Vertex[j];

}

}

}

}

voidShow(Graph&G){

inti;

intj;

for(i=1;i<=G.VertexNum;i++)

{

cout<

";

for(j=1;j<=Path[i][0];j++)

{

cout<<""<

}

cout<

}

}

intmain()

{

//freopen("cjin.txt","r",stdin);

chara;

CreateGraph(G);

cin>>a;

CreatePath(G,a);

Show(G);

return0;

}

 

2:

#include

usingnamespacestd;

constintMAX_VERT=10;

structGraphic{

intvertNum;

intVertValue[MAX_VERT];

intAdjMatrix[MAX_VERT][MAX_VERT];

boolvisited[MAX_VERT];

};

voidinitGraphic(Graphic&G,intn){

G.vertNum=n;

inti,j;

for(i=0;i

for(j=0;j

cin>>G.AdjMatrix[i][j];

}

for(i=0;i

G.VertValue[i]=i;

G.visited[i]=false;

}

}

voidTopoSort(GraphicG){

inti,j,k,m;

for(m=0;m

for(i=0;i

for(j=0;j

if(G.AdjMatrix[j][i])

break;

}

if(j==G.vertNum&&!

G.visited[i])

break;

}

cout<

for(k=0;k

G.AdjMatrix[i][k]=0;

G.visited[i]=true;

}

cout<

}

intmain()

{

intt,n,i;

GraphicG[2];

freopen("tin1.txt","r",stdin);

cin>>t;

for(i=0;i

cin>>n;

initGraphic(G[i],n);

TopoSort(G[i]);

}

return0;

}

 

五、程序运行时截图

 

6、实验心得与体会(实验中遇到的问题及解决方案,或写点感想)

 

2:

1:

 

指导教师批阅意见:

成绩评定:

指导教师签字:

年月日

备注:

注:

1、报告内的项目或内容设置,可根据实际情况加以调整和补充。

2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1