通信网最短路径课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计说明书 NO.1

课程设计说明书 NO2

算法具体的形式包括:

确定起点的最短路径问题 - 即已知起始结点,求最短路径的问题。

确定终点的最短路径问题 - 与确定起点的问题相反,该问题是已知终结结点,求最短路径的问题。在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路径方向反转的确定起点的问题。。

图4示出了求图1网中节点1到其他节点最短路径的过程。在表中画圆圈的数字表示该步骤中D (w)的最小值。这样,相应的节点w就加到N中,D(v)的值就按要求更改。因此,在初始化后的第1步,距离最小D(4)=w,节点4就加进集合N中;在第2步,D(5)=2,节点5加进N中;如此不断继续下去。第5步以后,所有的节点都在N中,算法终止。

表1算法的计算过程

步骤N D(2)D(3)D(4)D(5)D(6)

初始{1} 2 5 1 ∞∞

1 {1,4}

2 4 ① 2 ∞

2 {1,4,5} 2

3 1 ② 4

3 {1,2,4,5} ② 3 1 2 4

4 {1,2,3,4,5} 2 ③ 1 2 4

5 {1,2,3,4,5,6} 2 3 1 2 ④

图2.1节点1到其他节点的距离

课程设计说明书 NO.5

图 2.2节点1到其他节点的最短距离

图3.1和图3.2中示出了以源节点1为根的最短距离树。它的产生过程是:当一个节点加入集合N时,它就连接到已在N中的适当点。每个节点下面圆圈内的数字代表在第n步该节点加入树结构。由节点1的最短距离树可以得到节点1的路由选择表,该表指明了到相应的目的的地节点所应选的下一节点。同理,我们可以求得节点2,3,…,6的路由选择表。

3、设计过程与分析

3.1设计内容

根据我们平常在通信网基础的课程中所学的知识,使用Dijkstra算法,设计一个用C语言程序编译的求最短路径的程序。

3.2设计通信网络

根据通信网基础知识,设计一个简单的通信网络。标明各节点间的距离和连接关系。

通信网络共6个节点,为V0-V5,各节点间的距离如图3 所示

图3 一个简单的网络计算机程序输入的各节点间距离的6×6矩阵

V0 V1 V2 V3 V4 V5

V0 0 2 8 6 9 ∞

V1 2 0 3 7 6 4

V2 8 3 0 4 5 10 V3 6 7 4 0 ∞ 8

V4 9 6 5 ∞ 0 ∞

V5 ∞ 4 10 8 ∞ 0 3.3设计程序

以下为用邻接矩阵表示的图的Dijkstra算法的源程序。#define MAX_VERTEX_NUM 100

//最大顶点数

#include

#include

#define MAX_INT 10000

typedef int AdjType;

typedef struct

{

int pi[MAX_VERTEX_NUM];

//存放v到vi的一条最短路径

课程设计说明书 NO.9

Else

{

printf("最短路径为:");

printf("(V%d",i);

while(k!=j)

{

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

k=path[k][j];

}

printf(",V%d)\n",j);

}

printf("\n");

}

}

system("pause");

return 0;

}

3.5设计结果

图 4 程序结果

课程设计说明书 NO.10

图5程序结果

3.3结果分析

由程序结果可得节点间最短距离

图6节点间最短距离

课程设计说明书 NO.11

相关文档
最新文档