《数据结构课程设计》最短路径问题实验报告要点 (1)

《数据结构课程设计》最短路径问题实验报告要点 (1)
《数据结构课程设计》最短路径问题实验报告要点 (1)

数据结构

课程设计报告设计题目:最短路径的应用

专业:软件工程

班级:软件182

姓名:阿力木·艾尔肯

学号:3180921065

指导教师:罗作民

起止时间:2019.12.30-2020.1.3

2019 年秋季学期

数据结构课程设计任务书14

题目:最短路径的应用

问题描述:

现有10个城市之间的交通信息,若有火车,则提供两个城市之间火车票价格。

(1)有旅客A,准备从城市A出发到城市B,他希望总想花费最少。试设计一种方案。

(2)有旅客B,准备从城市A出发到城市B,他想转车次数

最少。试设计一种方案。

目录

一、概述 (1)

二、系统分析 (1)

三、概要设计 (2)

四、详细设计 (5)

4.1建立图的存储结构 (5)

4.2单源最短路径 (6)

4.3任意一对顶点之间的最短路径 (7)

五、运行与测试 (8)

参考文献 (12)

附录 (13)

交通咨询系统设计(最短路径问题)一、概述

在交通网络日益发达的今天,针对人们关心的各种问题,利用计算机建立一个交通咨询系统。在系统中采用图来构造各个城市之间的联系,图中顶点表示城市,边表示各个城市之间的交通关系,所带权值为两个城市间的耗费。这个交通咨询系统可以回答旅客提出的各种问题,例如:如何选择一条路径使得从A城到B城途中中转次数最少;如何选择一条路径使得从A城到B城里程最短;如何选择一条路径使得从A城到B城花费最低等等的一系列问题。

二、系统分析

设计一个交通咨询系统,能咨询从任何一个城市顶点到另一城市顶点之间的最短路径(里程)、最低花费或是最少时间等问题。对于不同的咨询要求,可输入城市间的路程、所需时间或是所需费用等信息。

针对最短路径问题,在本系统中采用图的相关知识,以解决在实际情况中的最短路径问题,本系统中包括了建立图的存储结构、单源最短问题、对任意一对顶点间最短路径问题三个问题,这对以上几个问题采用了迪杰斯特拉算法和弗洛伊德算法。并未本系统设置一人性化的系统提示菜单,方便使用者的使用。

三、概要设计

可以将该系统大致分为三个部分:

① 建立交通网络图的存储结构; ② 解决单源最短路径问题;

③ 实现两个城市顶点之间的最短路径问题。

交通咨询系统

费洛依德算法(任意顶点对间最短路径)

建立图的存储结构义

迪杰斯特拉算法(单源最短路径)

迪杰斯特拉算法流图:

弗洛伊德算法流图:

四、详细设计

4.1建立图的存储结构

定义交通图的存储结构。邻接矩阵是表示图形中顶点之间相邻关系的矩阵。设G=(V,E)是具有n 个顶点的图,则G 的邻接矩阵是具有如下定义的n 阶方阵。

??

?

?

?∞>∈<=,其他情况或或,若0E(G)V ,V )V ,(V ],[j i j i ij W j i A 注:一个图的邻接矩阵表示是唯一的!其表示需要用一个二维数组存储顶点之间相邻关系的邻接矩阵并且还需要用一个具有n 个元素的一维数组来存储顶点信息(下标为i 的元素存储顶点i V 的信息)。 邻接矩阵的存储结构:

#define MVNum 100 //最大顶点数 typedef struct {

VertexType vexs[MVNum];//顶点数组,类型假定为char 型 Adjmatrix arcs[MVNum][MVNum];//邻接矩阵,假定为int 型 }MGraph;

注:由于有向图的邻接矩阵是不对称的,故程序运行时只需要输入所有有向边及其权值即可。

4.2单源最短路径

单源最短路径问题:已知有向图(带权),期望找出从某个源点S ∈V到G中其余各顶点的最短路径。

迪杰斯特拉算法即按路径长度递增产生诸顶点的最短路径算法。

算法思想:设有向图G=(V,E),其中V={1,2,……n},cost是表示G的邻接矩阵,

cost[i][j]表示有向边的权。若不存在有向边,则cost[i][j] 的权为无穷大(这里取值为32767)。设S是一个集合,集合中一个元素表示一个顶点,从源点到这些顶点的最短距离已经求出。设顶点V1为源点,集合S的初态只包含顶点V1。数组dist记录从源点到其它各顶点当前的最短距离,其初值为dist[i]= cost[i][j],i=2,……n。从S之外的顶点集合V-S中选出一个顶点w,使dist[w] 的值最小。于是从源点到达w只通过S中的顶点,把w加入集合S中,调整dist中记录的从源点到V-S中每个顶点v的距离:从原来的dist[v]和dist[w]+cost[w][v]中选择较小的值作为新的dist[v]。重复上述过程,直到S中包含V中其余顶点的最短路径。

最终结果是:S记录了从源点到该顶点存在最短路径的顶点集合,数组dist记录了从源点到V中其余各顶点之间的最短路径,path是最短路径的路径数组,其中path[i]表示从源点到顶点i之间的最短路径的前驱顶点。

4.3任意一对顶点之间的最短路径

任意顶点对之间的最短路径问题,是对于给定的有向网络图G=(V,E),要对G中任意一对顶点有序对,“V,W(V≠W)”,找出V到W 的最短路径。而要解决这个问题,可以依次把有向网络图中每个顶点作为源点,重复执行前面的迪杰斯特拉算法n次,即可求得每对之间的最短路径。

费洛伊德算法的基本思想:假设求从V i到V j的最短路径。如果存在一条长度为arcs[i][j]的路径,该路径不一定是最短路径,还需要进行n次试探。首先考虑路径是否存在。如果存在,则比较路径的路径长度,取长度较短者为当前所求得。该路径是中间顶点序号不大于1的最短路径。其次,考虑从v i到v j是否包含有顶点v2为中间顶点的路径< v i,…,v2,…,v j>,若没有,则说明从v i到v j的当前最短路径就是前一步求出的;若有,那么可分解为,而这两条路径是前一次找到的中间点序号不大于1的最短路径,将这两条路径长度相加就得到路径的长度。将该长度与前一次中求得的从v i到v j的中间顶点序号不大于1的最短路径比较,取其长度较短者作为当前求得的从v i到v j的中间顶点序号不大于2的最短路径。依此类推……直至顶点v n加入当前从v i到v j的最短路径后,选出从v i到v j的中间顶点序号不大于n的最短路径为止。由于图G中顶点序号不大于n,所以v i到v j的中间顶点序号不大于n的最短路径,已考虑了所有顶点作为中间顶点的可能性,因此,它就是v i到v j的最短

路径。

五、运行与测试数据:

1,3,695

3,1,695

1,4,704

4,1,704

1,2,1084

2,1,1084

2,3,511

3,2,511

2,5,812

5,2,812

3,4,349

4,3,349

3,6,1579

6,3,1579

4,7,651

7,4,651

5,6,1576

6,5,1576

6,7,1385

7,6,1385

2,8,690

8,2,690

5,8,1000

8,5,1000

8,9,1922

9,8,1922

5,9,2862

9,5,2862

9,10,1462

10,9,1462

测试实例2:利用下图求交通网络图(无向图)的最短路径。

1922

2862

实例1运行结果:

5

4

7

3

6

1

2

704

812 511

1576 1385

1579

695

349

651

成都

广州

西安

北京

郑州

上海

徐州

1084

8

9

10

00

兰州

乌鲁木齐

喀什

1462 690

1000

实例2运行结果:

六、总结与心得

该课程设计主要是从日常生活中经常遇到的交通网络问题入手,进而利用计算机去建立一个交通咨询系统,以处理和解决旅客们关心的各种问题(当然此次试验最终主要解决的问题是:最短路径问题)。

这次试验中我深刻的了解到了树在计算机中的应用是如何的神

奇与灵活,对于很多的问题我们可以通过树的相关知识来解决,特别是在解决最短路径问题中,显得尤为重要。

经过着次实验,我了解到了关于树的有关算法,如:迪杰斯特拉算法、弗洛伊德算法等,对树的学习有了一个更深的了解。

参考文献

【1】《数据结构》严蔚敏.清华大学出版社.

【2】《数据结构课程设计》苏仕华.极械工业出版社.

【3】《数据结构课程设计》中国工信出版社电子工业出版社

【4】百度文库

【5】CSDN 论坛

附录

#include

#include

#define MVNum 1000

#define Maxint 32767

enum boolean{FALSE,TRUE};

typedef char VertexType;

typedef int Adjmatrix;

typedef struct{

VertexType vexs[MVNum];

Adjmatrix arcs[MVNum][MVNum];

}MGraph;

int D1[MVNum],p1[MVNum];

int D[MVNum][MVNum],p[MVNum][MVNum]; void CreateMGraph(MGraph * G,int n,int e)

{

int i,j,k,w,v=1;

for(i=1;i<=n;i++)

G->vexs[i]=(char)i;

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

G->arcs[i][j]=Maxint;

printf("输入%d条边的i.j及w:\n",e);

for(k=1;k<=e;k++){

scanf("%d,%d,%d",&i,&j,&w);

G->arcs[i][j]=w;

}

printf("有向图的存储结构建立完毕!\n"); }

void Dijkstra(MGraph *G,int v1,int n)

{

int D2[MVNum],p2[MVNum];

int v,i,w,min;

enum boolean S[MVNum];

for(v=1;v<=n;v++){

S[v]=FALSE;

D2[v]=G->arcs[v1][v];

if(D2[v]

p2[v]=v1;

else

p2[v]=0;

}

D2[v1]=0; S[v1]=TRUE;

for(i=2;i

min=Maxint;

for(w=1;w<=n;w++)

if(!S[w] && D2[w]

{v=w;min=D2[w];}

S[v]=TRUE;

for(w=1;w<=n;w++)

if(!S[w] && (D2[v]+G->arcs[v][w]

D2[w]=D2[v]+G->arcs[v][w];

p2[w]=v;

}

}

printf("路径长度票费路径\n");

for(i=1;i<=n;i++){

printf("%5d",D2[i]);

printf(" %5d",D2[i]/2);

printf("%5d",i);v=p2[i];

while(v!=0){

printf("<-%d",v);

v=p2[v];

}

printf("\n");

}

}

void Floyd(MGraph *G,int n)

{

int i,j,k,v,w;

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

{

if( G->arcs[i][j]!=Maxint)

p[i][j]=j;

else

p[i][j]=0;

D[i][j]=G->arcs[i][j];

}

for(k=1;k<=n;k++)

{

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

{

if(D[i][k]+D[k][j]

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

p[i][j]=p[i][k];

}

}

}

}

void main()

{

system("color 3f");

MGraph *G;

int m,n,e,v,w,k;

int xz=1;

G=(MGraph *)malloc(sizeof(MGraph));

printf("\n中国铁路12306\n");

printf("___________________________________________________________ _____________________________________________\n");

printf("设计地图\n\n\n");

printf("输入图中顶点个数和边数n,e:");

scanf("%d,%d",&n,&e);

CreateMGraph(G,n,e);

while(xz!=0){

printf(" ************求城市之间最短路径***********\n");

printf("=========================================\n");

printf(" 1.求一个城市到所有城市的最短路径\n");

printf(" 2.求任意的两个城市之间的最短路径\n");

printf("=========================================\n");

printf("请选择:1或2,选择0退出:\n");

scanf("%d",&xz);

if (xz==2){

Floyd(G,n);

printf("输入源点(或起点)和终点:v,w:");

scanf("%d,%d",&v,&w);

k=p[v][w];

if (k==0)

printf("顶点%d 到%d 无路径!\n",v,w);

else

{

printf("从顶点%d 到%d 最短路径路径是:%d",v,w,v);

while (k!=w){

printf("--%d",k);

k=p[k][w];

}

printf("--%d",w);

printf("径路长度:%d\n",D[v][w]);

}

}

else

if(xz==1)

printf("求单源路径,输入源点v :");

scanf("%d",&v);

Dijkstra(G,v,n);

}

printf("结束求最短路径,再见!\n");

}

实验三 最短路径的算法(离散数学实验报告)

实验3:最短路径算法 一、实验目的 通过本实验的学习,理解Floyd(弗洛伊得)最短路径算法的思想 二、实验内容 用C语言编程实现求赋权图中任意两点间最短路径的Floyd算法,并能对给定的两结点自动求出最短路径 三、实验原理、方法和手段 1、Floyd算法的原理 定义:Dk[i,j] 表示赋权图中从结点vi出发仅通过v0,v1,┉,vk-1中的某些结点到达vj的最短路径的长度, 若从vi到vj没有仅通过v0,v1,┉,vk-1 的路径,则D[i,j]=∝即 D-1[i,j] 表示赋权图中从结点vi到vj的边的长度,若没有从结点vi到vj的边,则D[i,j]=∝ D0[i,j] 表示赋权图中从结点vi到vj的”最短”路径的长度, 这条路上除了可能有v0外没有其它结点 D1[i,j] 表示赋权图中从结点vi到vj的”最短”路径的长度, 这条路上除了可能有v0,v1外没有其它结点 ┉┉┉ 根据此定义,D k[i,j]=min{ D k-1[i,j] , D k-1[i,k-1]+D k-1[k-1,j] } 定义:path[i,j]表示从结点vi到vj的“最短”路径上vi的后继结点 四、实验要求 要求输出每对结点之间的最短路径长度以及其最短路径 五、实验步骤 (一)算法描述 Step 1 初始化有向图的成本邻矩阵D、路径矩阵path 若从结点vi到vj有边,则D[i,j]= vi到vj的边的长度,path[i,j]= i; 否则D[i,j]=∝,path[i,j]=-1 Step 2 刷新D、path 对k=1,2,┉n 重复Step 3和Step 4 Step 3 刷新行对i=1,2,┉n 重复Step 4 Step 4 刷新Mij 对j=1,2,┉n 若D k-1[i,k]+D k-1[k,j]

统计学实验报告汇总

本科生实验报告 实验课程统计学 学院名称商学院 专业名称会计学 学生姓名苑蕊 学生学号0113 指导教师刘后平 实验地点成都理工大学南校区 实验成绩 二〇一五年十月二〇一五年十月

依据上述资料编制组距变量数列,并用次数分布表列出各组的频数和频率,以及向上、向下累计的频数和频率, 并绘制直方图、折线图。 学生 实验 心得

2.已知2001-2012年我国的国内生产总值数据如表2-16所示。 学生 实验 心得 要求:(1)依据2001-2012年的国内生产总值数据,利用Excel软件绘制线图和条形图。

(2)依据2012年的国内生产总值及其构成数据,绘制环形图和圆形图。 学生 实验 心得 3.计算以下数据的指标数据 1100 1200 1200 1400 1500 1500 1700 1700 1700 1800 1800 1900 1900 2100 2100 2200 2200 2200 2300 2300 2300 2300 2400 2400 2500 2500 2500 2500 2600 2600 2600 2700 2700 2800 2800 2800 2900 2900 2900 3100 3100 3100 3100 3200 3200 3300 3300 3400 3400 3400 3500 3500 3500 3600 3600 3600 3800 3800 3800 4200

4.一家食品公司,每天大约生产袋装食品若干,按规定每袋的重量应为100g。为对产品质量进行检测,该企业质检部门采用抽样技术,每天抽取一定数量的食品,以分析每袋重量是否符合质量要求。现从某一天生产的一批食品8000袋中随机抽取了25袋(不重复抽样),测得它们的重量分别为: 学生实验心得 101 103 102 95 100 102 105 已知产品重量服从正态分布,且总体方差为100g。试估计该批产品平均重量的置信区间,置信水平为95%.

实验报告

算法与数据结构 实验报告 系(院):计算机科学学院 专业班级:软工11102 姓名:潘香杰 学号: 201104449 班级序号: 18 指导教师:詹泽梅老师 实验时间:2013.6.17 - 2013.6.29 实验地点:4号楼5楼机房

目录 1、课程设计目的...................................... 2、设计任务.......................................... 3、设计方案.......................................... 4、实现过程.......................................... 5、测试.............................................. 6、使用说明.......................................... 7、难点与收获........................................ 8、实现代码.......................................... 9、可改进的地方.....................................

算法与数据结构课程设计是在学完数据结构课程之后的实践教学环节。本实践教学是培养学生数据抽象能力,进行复杂程序设计的训练过程。要求学生能对所涉及问题选择合适的数据结构、存储结构及算法,并编写出结构清楚且正确易读的程序,提高程序设计基本技能和技巧。 一.设计目的 1.提高数据抽象能力。根据实际问题,能利用数据结构理论课中所学到的知识选择合适的逻辑结构以及存储结构,并设计出有效解决问题的算法。 2.提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。 3.初步了解开发过程中问题分析、整体设计、程序编码、测试等基本方法和技能。二.设计任务 设计一个基于DOS菜单的应用程序。要利用多级菜单实现各种功能。内容如下: ①创建无向图的邻接表 ②无向图的深度优先遍历 ③无向创建无向图的邻接矩阵 ④无向图的基本操作及应用 ⑤图的广度优先遍历 1.有向图的基本操作及应用 ①创建有向图的邻接矩阵 ②创建有向图的邻接表 ③拓扑排序 2.无向网的基本操作及应用 ①创建无向网的邻接矩阵 ②创建无向网的邻接表 ③求最小生成树 3.有向网的基本操作及应用 ①创建有向网的邻接矩阵 ②创建有向网的邻接表 ③关键路径 ④单源最短路径 三.设计方案 第一步:根据设计任务,设计DOS菜单,菜单运行成果如图所示:

统计学实验报告

实验二用EXCEL计算描述统计量 一. 实验目的: 1.掌握Excel中基本的数据处理方法; 2.学会使用Excel进行统计分组,能以此方式独立完成相关作业。 二.实验要求: 1.已学习教材相关内容,理解数据整理中的统计计算问题;已阅读本次实验导引,了解Excel中相关的计算工具。 2.准备好一个统计分组问题及相应数据(可用本实验导引所提供问题和数据)。三.实验内容: 1.熟练运用进行统计分组。 2.了解Excel的图表功能:创建图表、增强图表; 四. 实验步骤 1. 按照题目把数据输入excel中,如下图所示。 2.制作频数(率)分布表,如下面两个图所示。

3.根据频数(率)分布表在分别制作直方图,折线图和曲线图,如下三个图所示。

实验五用EXCEL进行假设检验 一.实验目的:用EXCEL进行参数估计和假设检验 二.实验步骤: 在EXCEL中,进行参数估计只能使用公式和函数的方法,而假设检验除以上两种方法外,还可以使用假设检验工具。 1、假设检验公式 ⑴构造工作表。如图所示,首先在各个单元格输入以下内容,其中左边是变量名,右边是相应的计算公式。

数据可使用实验三的样本数据 ⑵将A列的名称定义成为B列各个公式计算结果的变量名。选定A3:B4,A6:B8, A10:B11,A13:B15和A17:B19单元格,选择“公式”菜单的“定义的名称”子菜单的“根据所选内容创建”选项,用鼠标点击“最左列”,点击“确定”按钮即可。如下图所示: ⑶输入样本数据,以及总体标准差、总体均值假设、置信水平数据。 ⑷为样本数据指定名称。选定C1:C11单元格,选择“公式”菜单的“定义的名

MATLAB实验报告,遗传算法解最短路径以及函数最小值问题讲解

硕士生考查课程考试试卷 考试科目:MATLAB教程 考生姓名:考生学号: 学院:专业: 考生成绩: 任课老师(签名) 考试日期:20 年月日午时至时

《MATLAB 教程》试题: A 、利用MATLA B 设计遗传算法程序,寻找下图11个端点的最短路径,其中没有连接的端点表示没有路径。要求设计遗传算法对该问题求解。 a d e h k B 、设计遗传算法求解f (x)极小值,具体表达式如下: 3 21231(,,)5.12 5.12,1,2,3 i i i f x x x x x i =?=???-≤≤=? ∑ 要求必须使用m 函数方式设计程序。 C 、利用MATLAB 编程实现:三名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自己划行,随从们密约,在河的任一岸,一旦随从的人数比商人多,就杀人越货,但是如何乘船渡河的大权掌握在商人手中,商人们怎样才能安全渡河? D 、结合自己的研究方向选择合适的问题,利用MATLAB 进行实验。 以上四题任选一题进行实验,并写出实验报告。

选择题目: A 一、问题分析(10分) 1 4 10 11 如图如示,将节点编号,依次为 1.2.3.4.5.6.7.8.9.10.11,由图论知识,则可写出其带权邻接矩阵为: 0 2 8 1 500 500 500 500 500 500 500 2 0 6 500 1 500 500 500 500 500 500 8 6 0 7 500 1 500 500 500 500 500 1 500 7 0 500 500 9 500 500 500 500 500 1 500 500 0 3 500 2 500 500 500 500 500 1 500 3 0 4 500 6 500 500 500 500 500 9 500 4 0 500 500 1 500 500 500 500 500 2 500 500 0 7 500 9 500 500 500 500 500 6 500 7 0 1 2 500 500 500 500 500 500 1 500 1 0 4 500 500 500 500 500 500 500 9 2 4 0 注:为避免计算时无穷大数吃掉小数,此处为令inf=500。 问题要求求出任意两点间的最短路径,Floyd 算法采用的是在两点间尝试插入顶点,比较距离长短的方法。我思考后认为,用遗传算法很难找到一个可以统一表示最短路径的函数,但是可以对每一对点分别计算,然后加入for 循环,可将相互之间的所有情况解出。观察本题可发现,所有节点都是可双向行走,则可只计算i 到j 的路径与距离,然后将矩阵按主对角线翻折即可得到全部数据。 二、实验原理与数学模型(20分) 实现原理为遗传算法原理: 按所选择的适应度函数并通过遗传中的复制、交叉及变异对个体进行筛选,使得适应度高的个体被保留下来,组成新的群体,新的群体既继承了上一代的信息,又优于上一代。这样周而复始,群体中个体适应度不断提高,直到满足一定的条件。 数学模型如下: 设图G 由非空点集合12{,...}n V V V V = 和边集合12{,...}m E e e e = 组成,其中121221(,)e ,P ,)(P ,P ), i i i i i i i i e P P E P =∈≠且若(则G 为一个有向图; 又设i e 的值为i a ,12{,...},m A a a a = 故G 可表示为一个三元组{,,}G P E A = 则求最短路径的数学模型可以描述为:

多元统计学SPSS实验报告一

华东理工大学2016–2017学年第二学期 《多元统计学》实验报告 实验名 称实验1数据整理与描述统计分析

教师批阅:实验成绩: 教师签名: 日期: 实验报告正文: 实验数据整理 (一)对“employee”进行数据整理 1.观察量排序 ( based on current salary) 2.变量值排序(based on current salary : rsalary) 3.计算新的变量(incremental salary=current salary - beginning salary)

4.拆分数据文件(based on gender) 结论:There are 215 female employees and 259 male employees. 5.分类汇总 (break variable: gender ; function: mean ) 结论:The average current salary of female is . The average current salary of male is . (二)分别给出三种工作类别的薪水的描述统计量 实验描述统计分析 1)样本均值矩阵 结论:总共分析六组变量,每组含有十个样本。 每股收益(X1)的均值为;净资产收益率(X2)的均值为;总资产报酬率(X3)的均值为;销售净

利率(X4)的均值为;主营业务增长率(X5)的均值为;净利润增长率(X6)的均值为. 2)协方差阵 结论:矩阵共六行六列,显示了每股收益(X1)、净资产收益率(X2)、总资产报酬率(X3)、销售净利率(X4)、主营业务增长率(X5)和净利润增长率(X6)的协方差。 3)相关系数 结论:矩阵共六行六列,显示了每股收益 (X1)、净资产收益率(X2)、总资产报酬 率(X3)、销售净利率(X4)、主营业务增 长率(X5)和净利润增长率(X6)之间的 相关系数。 每格中三行分别显示了相关系数、显著性 检验与样本个数。 4)矩阵散点图

甘特图实验报告doc

甘特图实验报告 篇一:Project实验报告 Project实验报告 朱曦朦 学号:XX306202412信管1001 实验目的: 通过做出一个标准的实验,了解project的基本运用方法和实验步骤,掌握设定项目的开始日期的基本方法。完成资源的优化配置,实现资源的充分利用。并对工期做一个初步的调整, 提高估计工期的精确度,掌握PERT的方法,实现整个过程(本文来自:https://www.360docs.net/doc/5a8727457.html, 小草范文网:甘特图实验报告)的最优配置。对甘特图,关键路径等基本定义有一个初步的了解,初步学习到PROJECT的基本内容。 一;定义起始时间: 在定义项目中进行时间的确认: 一直保存至第三步,进行初始化的设定。 二复制新产品模板. 三调整资源的最大单位 修改资源“产品工程设计”的最大单位为200%,并增加资源“生产线”(工时资源,100%,用于完成生产任务,原来工程师需要5小时完成的任务,生产线只要1小时就能完

成,但必须同时配1名产品工程设计进行监控)。 通过视图进入资源工作表,将“产品工程设计”的最大单位改为 200% 在甘特图中未找到工程师,所以未对其进行修改。 三.为了提高估计工期的精确度,采用PERT技术规划项目工期(选取2到3个任务进行规划)。 设置PERT权重 设置后观察得到PERT项工作表。 选取2,3个项目后确定乐观工期,预期工期,悲观工期,通过计算PERT得出结论。 四.分析项目工期由哪些任务决定,确定压缩工期的方法。通过格式中的甘特图向导,对关键路径进行确认,从而得到确定项目工期的任务,由红线显示。编号为2,3,5,6,8,9,10, 11 对项目进行优化,可以通过2种路径,一是调整关键路径的工期,将其缩短。二是删除原有的链接关系,将后面的工期开始时间提前,如下图所示。 篇二:MS Project 上机实验报告 MS Project 上机实验报告 一、工程概况

《数据结构课程设计》最短路径问题实验报告

《数据结构课程设计》最短路径问题实验报告

目录 一、概述 0 二、系统分析 0 三、概要设计 (1) 四、详细设计 (5) 4.1建立图的存储结构 (5) 4.2单源最短路径 (6) 4.3任意一对顶点之间的最短路径 (7) 五、运行与测试 (8) 参考文献 (11) 附录 (12)

交通咨询系统设计(最短路径问题)一、概述 在交通网络日益发达的今天,针对人们关心的各种问题,利用计算机建立一个交通咨询系统。在系统中采用图来构造各个城市之间的联系,图中顶点表示城市,边表示各个城市之间的交通关系,所带权值为两个城市间的耗费。这个交通咨询系统可以回答旅客提出的各种问题,例如:如何选择一条路径使得从A城到B城途中中转次数最少;如何选择一条路径使得从A城到B城里程最短;如何选择一条路径使得从A城到B城花费最低等等的一系列问题。 二、系统分析 设计一个交通咨询系统,能咨询从任何一个城市顶点到另一城市顶点之间的最短路径(里程)、最低花费或是最少时间等问题。对于不同的咨询要求,可输入城市间的路程、所需时间或是所需费用等信息。 针对最短路径问题,在本系统中采用图的相关知识,以解决在实际情况中的最短路径问题,本系统中包括了建立图的存储结构、单源最短问题、对任意一对顶点间最短路径问题三个问题,这对以上几个问题采用了迪杰斯特拉算法和弗洛伊德算法。并未本系统设置一人性化的系统提示菜单,方便使用者的使用。

三、概要设计 可以将该系统大致分为三个部分: ①建立交通网络图的存储结构; ②解决单源最短路径问题; ③实现两个城市顶点之间的最短路径问题。

迪杰斯特拉算法流图:

project项目管理实验报告

计算机辅助项目管理 课程报告 班级: 学号: 姓名: 指导教师: 完成日期: -

目录 1、项目概况 (2) 1.1项目简介 (3) 1.2项目任务关系、固定成本及资源需求量 (2) 1.3可用资源 (2) 2、项目的实施计划 (3) 2.1初始计划 (3) 2.2初始计划的调整和优化 (5) 3、跟踪监控 3.1第一轮监控 (7) 3.2第二轮监控 (21) 3.3第三轮监控 (25) 3.4第四轮监控 (25) 4、项目完工总结分析报告 4.1总结分析报告 (26) 4.2分析实施和管理的成效 (26) 4.3目标实现措施的分析 (26) 5.学习思考总结 5.1问题思考 (27) 5.2问题分析与总结 (28) PROJECT项目管理课程报告

1、项目概况 1.1项目简介 项目的主要工作是维修某主要道路下一段长约1公里的供水管道,市政局要求电力部门配合施工,同时铺设一条地下电缆,以增加该道路两侧的用电用户。由于该项目是在现有道路上开挖,故市政局决定在回填后顺便铺设新的混凝土路面。为此,专门成立了一个项目管理办公室,以管理、协调该项目。项目内容包括:供水工程、电力工程和道路工程。整个项目从2016年7月1日提交预算报批为开始,市政局希望将项目施工对公众造成的影响降至最低,故希望该项目能在2016年10月底竣工并恢复交通。 1.2项目任务关系、固定成本及资源需求量 项目各项任务逻辑关系及固定成本(设备费、材料费等)、资源需求量如表1。 表1 工程工艺关系、固定成本及所需资源表 编号工序名称固定 成本 紧前 工序 资源需求 技工壮工 人数工日人数工日 1 道路及配套工程 2 准备工作 3 预算报批5000 4 对外公告1500 3 5 开走路上停留 的车辆 2000 4 3 6 6 开挖槽沟50000 5 15 200 7 供水工程5000 8 维修水管50000 6 12 200 35 500 9 压力试验1500 8 5 10 10 电力工程 11 支设新电杆15000 5 5 50 10 75 12 铺设电缆50000 6 8 50 25 150 13 吊装变压器75000 11,12,16 15 100 25 250 14 电力入户25000 13 20 240 20 240 15 道路工程25000 16 剪除树枝1500 5 6 12 17 复铺路面150000 9,12 20 300 30 420 18 恢复交通14,17 预算报批需1周,对外公告需2周时间。 1.3可用资源

最短路径实验报告

一、实验目的 学习掌握图的存储结构 利用最短路径算法,通过java编程实现最短路径输出。 二、实验环境 Eclipse平台 三、实验过程 最短路径算法问题是计算机科学、运筹学、地理信息系统和交通诱导、导航系统等领域研究的一个热点。传统的最短路径算法主要有Floyd算法和Dijkstra算法。Floyd 算法用于计算所有结点之间的最短路径。Dijkstra算法则用于计算一个结点到其他所有结点的最短路径。本程序利用Dijkstra算法用java语言实现最短路径的可视化。 流程: 画无向邻接矩阵邻接矩阵初始化求取最短路径 Java文件如下 M ain.java 文件: import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.StringTokenizer; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.TitledBorder; public class Main { public static void main(String args[]) { new UI("最短路径"); } } @SuppressWarnings("serial") class UI extends JFrame implements ActionListener, ItemListener { JFrame frame; JButton button;

关键路径的查找实验报告

中国矿业大学矿业工程学院 实验报告 课程名称计算机软件设计基础 姓名 xxxx 班级采矿10-8班学号 xxxxx 日期 2012年10月 成绩教师 xxxx

3.2算法步骤:

(1)输入e条弧,建立AOE网的存储结构。 (2)从源点v1出发,令ve(1)=0,求ve(j),2<=j<=n。 (3)从汇点vn出发,令vl(n)=ve(n),求vl(i) 1<=i<=n-1。 (4)根据各顶点的ve和vl值,求每条弧s(活动)的最早开始时间e(s)和最晚开始时间l(s),其中e(s)=l(s)的为关键活动。 总结 首先,关于程序方面,我发现即使对设计思路有了眉目,知道了所要用到的数据结构、用邻接表来存储AOE-网、建立栈来求拓扑序列、输出的拓扑序列的个数少于节点数则有回路等等,要把这些方法写成函数代码,其实还是一件非常不容易的事情。再加上要完善设计思路,构造整个程序框架在内,都是一件工作量非常大的工作。 在处理程序代码的时候,有两个问题始终解决不了。一是程序输入时只能输入整形数据,而非整形的输入则会导致程序异常停止,但是因为整形的输入方式已贯穿整个程序,若要修改只能另外重做整个程序,所以暂不考虑修改,而打算做一个判错系统,判断若非整形的输入则报错;二是第一种错误的解决方案未能成功实行,于网路上搜索到了几种判断是否为整形数据的程序代码,但将其修改融合到求关键路径的程序中,虽然没有错误可以运行,但是却不能正确的报错。 于是,在尝试多种方案却仍不成功的前提下,我只好选择加上提示语,即:printf("请输入某项目的信息,并请用整形数字表示(格式:弧头,

最短路径实验报告

云南财经大学信息学院学生综合性与设计性实验报告 (2013—2014 学年第 2 学期) 周次:第7周日期:2014年 4 月 17 日地点: 一、实验内容与目的 1.内容 查看“最短路径.swf”,选择熟悉的程序设计语言定义有向图,根据动画演示求取从有向图任一结点到其他结点的最短路径。 2.实验目的 了解最短路径的概论,掌握求最短路径的方法。 二、实验原理或技术路线(可使用流程图描述) 实验原理:(李燕妮负责设计,周丽琼负责编程) 图是由结点的有穷集合V和边的集合E组成,求最短路径用迪杰斯特拉算法: 1)适用条件&范围: a) 单源最短路径(从源点s到其它所有顶点v); b) 有向图&无向图(无向图可以看作(u,v),(v,u)同属于边集E的有向图) c) 所有边权非负(任取(i,j)∈E都有Wij≥0); 2)算法描述: a)初始化:dis[v]=maxint(v∈V,v≠s); dis[s]=0; pre[s]=s; S={s}; b)For i:=1 to n 1.取V-S中的一顶点u使得dis[u]=min{dis[v]|v∈V-S}

2.S=S+{u} 3.For V-S中每个顶点v do Relax(u,v,Wu,v) c)算法结束:dis[i]为s到i的最短距离;pre[i]为i的前驱节点 三、实验环境条件(使用的软件环境) Microsoft Visual C++6.0 四、实验方法、步骤(列出程序代码或操作过程) /*本程序的功能是求图中任意两点间的最短路径*/ #include #include #include #include #define ING 9999 typedef struct ArcCell{ int adj; /*顶点关系类型,用1表示相邻,0表示不相邻*/ }ArcCell,**AdjMatrix; /*邻接矩阵*/ typedef struct type{ char data[3]; /*顶点值*/ }VertexType; typedef struct{ VertexType *vexs; /*顶点向量*/ AdjMatrix arcs; /*邻接矩阵*/ int vexnum,arcnum; /*图的顶点数和边数*/ }MGraph; /*初始图*/ void InitGraph(MGraph *G) { int i,nu,mu; printf("\n输入顶点的个数和(边)弧的个数:"); scanf("%d %d",&nu,&mu); G->arcs=(ArcCell **)malloc(nu*sizeof(ArcCell *)); for(i=0;iarcs[i]=(ArcCell *)malloc(nu*sizeof(ArcCell)); G->vexs=(VertexType *)malloc(nu*sizeof(VertexType)); /*分配顶点空间*/ G->vexnum=nu;G->arcnum=mu; /*图的顶点数和边数*/ }

统计学实验报告1

统计学实验报告1 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

实验报告

二、打开文件“数据 3.XLS”中“城市住房状况评价”工作表,完成以下操作。 1)通过函数,计算出各频率以及向上累计次数和向下累计次数;2)根据两城市频数分布数据,绘制出两城市满意度评价的环形图三、打开文件“数据 3.XLS”中“期末统计成绩”工作表,完成以下操作。 1)要求根据数据绘制出雷达图,比较两个班考试成绩的相似情况。 实验过程: 实验任务一: 1)利用函数frequency制作一张频数分布表 步骤1:打开文件“数据 3. XLS”中“某公司4个月电脑销售情况”工作表 步骤 2.在“频率(%)”的右侧加入一列“分组上限”,因统计分组采用“上限不在内”,故每组数据的上限都比真正的上限值小0.1,例如:“140-150”该组的上限实际值应为“150”,但我们为了计算接下来的频数取“149.9”. 步骤3.选定C20:C29,再选择“插入函数”按钮 3 步骤 4.选择类别“统计”—选择函数“FREQUENCY”

步骤5.在“data_array”对话框中输入“A2:I13”,在“bins_array”对话框中输入“E20:E29 该函数的第一个参数指定用于编制分布数列的原始数据,第二个参数指定每一组的上限. 步骤6.选定C20:C30区域,再按“自动求和” 按钮,即可得到频数的合计

步骤7.在D20中输入“=(C20/$C$30)*1OO” 步骤8:再将该公式复制到D21:D29中,并按“自动求和”按钮计算得出所有频率的合计。

Project实验报告

Project实验报告 朱曦朦 学号:2010306202412 信管1001 实验目的: 通过做出一个标准的实验,了解project的基本运用方法和实验步骤,掌握设定项目的开始日期的基本方法。完成资源的优化配置,实现资源的充分利用。并对工期做一个初步的调整, 提高估计工期的精确度,掌握PERT的方法,实现整个过程的最优配置。对甘特图,关键路径等基本定义有一个初步的了解,初步学习到PROJECT的基本内容。 一;定义起始时间:

在定义项目中进行时间的确认: 一直保存至第三步,进行初始化的设定。二复制新产品模板.

三调整资源的最大单位 修改资源“产品工程设计”的最大单位为200%,并增加资源“生产线”(工时资源,100%,用于完成生产任务,原来工程师需要5小时完成的任务,生产线只要1小时就能完成,但必须同时配1名产品工程设计进行监控)。 通过视图进入资源工作表,将“产品工程设计”的最大单位改为200% 在甘特图中未找到工程师,所以未对其进行修改。

三.为了提高估计工期的精确度,采用PERT技术规划项目工期(选取2到3个任务进行规划)。 设置PERT权重 设置后观察得到PERT项工作表。 选取2,3个项目后确定乐观工期,预期工期,悲观工期,通过计算PERT得出结论。

四.分析项目工期由哪些任务决定,确定压缩工期的方法。通过格式中的甘特图向导,对关键路径进行确认,从而得到确定项目工期的任务,由红线显 示。编号为2,3,5,6,8,9,10,11 的链接关系,将后面的工期开始时间提前,如下图所示。

实验总结: 通过按要求做实验,初步掌握的project的基本方法,但大部分还是按照书本的内容照搬,自己缺乏独立的融会贯通并将只是运用到实际甘特图中,并且,在有一些需要拓展的部分自己还是缺乏想法,没能很好地掌握知识。后面还需要多加练习,对制图还有一定的兴趣,但还是缺乏足够的训练。

统计学实验报告【最新】

统计学实验报告 一、实验主题:大学生专业与实习工作的关系 二、实验背景: 二十一世纪的今天大学生已是一个普遍的社会群体,高校毕业人数日益增加,社会、企业所提供的职位日益紧张,大学生就业问题是当今社会关注的焦点。面对日益沉重的就业压力,越来越多的大学毕业生选择了企业需求的职业,而这种职业与自己在校所学专业根本“无关”或相去甚远,大学毕业生就业专业不对口的现象非常严重。专业对口是个广义的概念,就是说你所学的专业与你所作的工作相关,比如你专业是会计,工作后你到了一个企业做会计,或者到银行做柜员,这都是与经济相关的,这就是对口。如果你学机械设计,但工作后却做了统计员,业务员等于你所学专业无关的工作,这就叫专业不对口。专业不对口导致毕业生所学知识没有用武之地,所以这是一种人力资源的浪费。 三、实验目的: 大学生就业专业不对口是客观存在的问题,我们研究此问题有这几点目的:①了解当代大学生实习工作与专业是否对口的情况,当代大学生对工作与专业不对口现象的态度。②分析大学生就业结构和

专业对口问题,了解当今大学生专业对口情况,为以后大学生选择专业、选择工作岗位提供有效的信息和借鉴。③寻找导致专业不对口的原因,以减少社会普遍存在的人力资源的浪费。 四、实验要求:就相关问题收集一定数量的数据,用EXCEL进行如下 分析:1进行数据筛选、排序、分组;2、制作饼图并进行简要解释;3、制作频数分布图,直方图等并进行简要解释。 五、实验设备及材料:计算机,手机,EXCEL软件,WORD软件。 六、实验过程: (一)制作并发放调查问卷。 (二)收回并统计原始数据:收回了102名大学生填写的调查问卷,并对相关数据进行统计。 (三)筛选与实验相关问题: 1.您的性别( ): A. 男B.女

最短路径_Dijkstra算法__实验报告

实验六:编程实现Dijkstra 算法求最短路问题. 1.需求分析: 首先让用户输入一个带权的有向图,输入时可通过一对一对输入存在弧的两个弧头与弧尾顶点以及弧上的权值从而输入整个有向图。用户输入一对对弧后,我们可以采用数组的形式来进行存储每个顶点之间的权值,最后由用户输入该有向图的源点(即每个最短路径的起点),要求源点必须为刚才输入的各顶点中的某一个,如果用户输入错误,程序要给出错误信息提示并退出程序。然后,我们可以设计一个Graph这样的类,将对关系的各种操作放入其中,然后我们在主函数中调运这个类就可以实现最短路问题的求解了。 2.概要设计: ①.构造一个新的类Graph: class Graph { private: int arcs[MAX][MAX],Path[MAX][MAX],D[MAX]; int arcnum,vexnum,weight,v0; Type a,b,vexs[MAX]; public: void Creat_Graph(); void Show_ShortestPath(); void ShortestPath_DIJ(); }; ②.结构化调用类中方法的主函数: int main() { Graph G; G.Creat_Graph(); G.ShortestPath_DIJ(); G.Show_ShortestPath(); return 0; } 3.代码实现: #include #define MAX 100 #define INFINITY INT_MAX enum BOOL{FALSE,TRUE}; using namespace std; template class Graph {

网络计划实验报告

PERT 实验 商业中心建设活动持续时间表 活动紧前活动需要时间(周) A 设计-20 B 批准-10 C 招标A, B8 D 建设C24 E 外装修D8 F 谈判A,B14 G 签约F10 H 区域分割D, G6 I 内装修H12 J 进驻I, E6 正常正常加急加急最大成本/时间 时间成本时间成本减少比率 A*203012808 6.25 B101010100- C*8106162 3.0 D*24 230020 2340410.0 E8110 4 1204 2.5 F141210204 2.0 G1*******- H* 6202254 1.25 I* 12160101702 5.0 J*6106100- 根据以上表格给出的信息,用PERT软件画出项目网络计划图,并进行网络计算与优化设计。

网络计划方法: 大型项目的开发涉及很复杂的项目协调和管理问题,为使项目管理人员对项目进度有全面的了解,进行有效的控制,必须使用科学的管理方法;网络计划法是使用最广泛的方法之一,关键路径法(critical path method 缩写为CPM)和项目评审技术(program evaluation and review technique 缩写为PERT)是两种使用最广泛的网络计划技术。网络计划方法的优点使它适用于生产技术复杂,工作项目繁多,且紧密联系的一些跨部门的工作计划,如:新产品研制开发;大型工程项目建设;生产技术准备;复杂设备的大修计划。 网络计划方法的基本原理: 将工程项目分解为相对独立的活动,根据各活动先后顺序、相互关系以及完成所需时间做出反映项目全貌的网络图;从项目完成全过程着眼,找出影响项目进度的关键活动和关键路线,通过对资源的优化调度,实现对项目实施的有效控制和管理。 网络计划方法的主要功能: 1用网络图描述一个实际项目的管理问题 (画网络图); 2计算项目的最早、最晚完成和开工时间 (网络计算); 3寻找关键活动和关键路径(网络分析); 4根据以上分析对网络进行优化 PERT网络分析法 PERT网络分析法(计划评估和审查审技术,Program Evaluation and Review Technique) PERT(Program Evaluation and Review Technique)即计划评审技术,最早是由美国海军在计划和控制北极星导弹的研制时发展起来的。PERT技术使原先估计的研制北极星潜艇的时间缩短了两年。简单地说,PERT是利用网络分析制定计划以及对计划予以评价的技术,它能协调整个计划的各道工序,合理安排人力、物力、时间、资金,加速计划的完成。在现代计划的编制和分析手段上,PERT被广泛的使用,是现代化管理的重要手段和方法。 一.画网络图 画网络图应注意以下规则: 1、按工作本身的逻辑顺序连接箭线 2、网络图中不允许出现循环线路 3、在网络图中不允许出现代号相同的箭线 4、在一个网络图中只允许有一个起点节点,一般只允许出现一个终点节点(多目标网络图除外) 5、在网络图中不允许出现有双向箭头或无箭头的线段 6、网

统计学实验报告讲解

《统计学》实验报告 关于大学生见义勇为方面的调查 班级:XXXXXXXXXXX 学号:XXXXXXXXXXXXXXX 姓名:XXX 一、研究目的和意义 当前社会有很多人见义勇为却得不到认可,甚至被无故敲诈,还有一部分人因为不恰当的见义勇为方式而丧失了生命,因此,我特别对快走进社会的大学生进行了见义勇为方面的调查,希望得出大学生面对困难人士时的态度,从而引导大学生正确的见义勇为,在未来,他们走进社会时就会更好的保护自己,认真贯彻社会主义荣辱观。 二、数据分析 (一)研究样本概况 1、性别 其中,男为42%,女为58%。 2、年龄

由频数分布图可以得到本次年龄多数分布在20~~22之间。 3、年级 其中可以看出,被调查人员大多在二、三年级,二年级最多。 4、学院 由图知,除人文学院人数过多外,其他学院人数分布都在15个以下,其中,材料最少。 5、专业类别 各个类别分布均匀,工科较少。 (二)数据分析 1.分析所用数据 (1).第六题、您是否支持见义勇为的行为?(多选)

A.支持,见义勇为是中华民族传统美德 B.支持,因为我相信好人有好报 C.支持,因为见义勇为是做力所能及的事 D.不支持,因为见义勇为是一件非常危险的行为 E.不支持,因为见义勇为未必有报酬 F.不支持,见义勇为容易遭受诬陷 G.其他() 调查结果:(截图为部分数据) 表中1表示是,0表示不是。由数据可知,选择A的人数有70个,选择B 的人数有55个,选择C的人数有75个,选择D的人数有5个,选择E的人数有1个,选择F的人数有3个,选择G的人数有7个。此题是多选择题,大多数同学选择了前三个选项:支持见义勇为的行为。 (2).第七题、当您的生命财产受到威胁时,您是否希望获得 别人帮助? A.希望 B.不希望 C.无所谓 调查结果:(截图为部分数据) 表中1表示A选项,2表示B选项,3表示D选项。由数据 可知,选择A的人数有98个,选择B的只有2个人,而C选项则 没有人选。可见很大一部分人还是希望在自己受到威胁时有人来 帮助自己,这说明见义勇为还是很有必要的。 (3).第八题、您一般一天通过各种渠道听过个见义勇为的事情。

实验四图的最短路径弗洛伊德算法实现

数据结构与算法课程实验报告实验四:图的相关算法应用 姓名:王连平 班级:09信科2班 学号:I09630221

实验四图的相关算法应用 一、实验内容 求有向网络中任意两点之间的最短路。 二、实验目的 掌握图和网络的定义,掌握图的邻接矩阵、邻接表和十字链表等存储表示。掌握图的深度和广度遍历算法,掌握求网络的最短路的标号法和floyd算法。 三、问题描述 对于下面一张若干个城市以及城市间距离的地图,从地图中所有可能的路径中求出任意两个城市间的最短距离及路径,给出任意两个城市间的最短距离值及途径的各个城市。 四、问题的实现 4.1数据结构的抽象数据类型定义和说明 1) typedef struct ArcCell{//储存弧信息 int Distance; ArcCell *info;//此项用来保存弧信息,,在本实验中没有相关信息要保存 }ArcCell,AdjMatrix[ MAX_VERTEX_NUM][ MAX_VERTEX_NUM]; typedef struct{//储存顶点信息 string vexs[ MAX_VERTEX_NUM];//顶点向量

AdjMatrix arcs;//邻接矩阵 int vexnum , arcnum;//图的当前顶点数和弧数 }MGraph; 顶点信息和弧信息都是用来建立一个有向网G 2) d[v][w];//G中各对顶点的带权长度 若P[v][w][u]为TRUE,则u是从v到w当前求得最短路径上的顶点 4.2主要的实现思路 首先通过一个函数(CreateDN)建立图的邻接矩阵储存方式,一次输入某条弧的起点,终点,和权值。通过调用Locate函数来找到该弧在邻接矩阵中的相应位置。 其次运用弗洛伊德算法来求各定点的最短路劲,具体思路为:如果从v到w有弧,则存在一条长度为arcs[v][w]的路径,该路径不一定是最短路径。考虑路径(v,u,w)是否存在,若存在,比较(v,w)和(v,u,w)的长度,取较短者为从v到w的中间点序号不大于0的最短路径。以此类推,每次增加一个点,从而求出任意两点间的最短路径。这样,经过n次比较后,所求得的必为从v到w的最短路径。按此方法,可以同时求得任意两点间的最短路径。 五、主要源程序代码(包含程序备注) #include #include using namespace std; #define INfinity 10000//最大值 # define MAX_VERTEX_NUM 10//最大顶点数 typedef struct ArcCell{//储存弧信息 int Distance; ArcCell *info; }ArcCell,AdjMatrix[ MAX_VERTEX_NUM][ MAX_VERTEX_NUM]; typedef struct{//储存顶点信息 string vexs[ MAX_VERTEX_NUM];//顶点向量 AdjMatrix arcs;//邻接矩阵 int vexnum , arcnum;//图的当前顶点数和弧数 }MGraph; int Locate(MGraph &G,string v) { int a=0; for (int i=0;i

相关文档
最新文档