离散数学实验报告

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

离散数学实验报告

姓名:

学号:

班级:

实验地点:

实验时间:

1实验目的和要求

运用最小生成树思想和求最小生成树程序解决实际问题。实际问题描述如下:

八口海上油井相互间距离如下表,其中1号井离海岸最近,为5km。问从海岸经1号井铺设油管把各井连接起来,怎样连油管长度最短(为便于检修,油管只准在油井处分叉)?

2实验环境和工具

实验环境:Windows 7 旗舰版

工具:Dev-C++ 5.8.3

3实验过程

3.1算法流程图

3.2程序核心代码

//油管铺设问题Prim算法实现

#include

#include

using namespace std;

#define MAXV 10

#define INF 32767 //INF表示∞

typedef int InfoType;

typedef struct{

int no; //顶点编号

InfoType info; //顶点其他信息

} VertexType; //顶点类型

typedef struct{ //图的定义

float edges[MAXV][MAXV]; //邻接矩阵

int vexnum; //顶点数

VertexType vexs[MAXV]; //存放顶点信息

} MGraph; //图的邻接矩阵类型

/*输出邻接矩阵g*/

void DispMat(MGraph g){

int i,j;

for (j=0;j

if (g.edges[i][j]==INF)

cout<

else

cout<

cout<

}

}

void prim(MGraph g,int v){ //从顶点V0出发,按Prim算法构造G的最小生成树

//输出最小生成树的每条边及其权值

float Vlength[MAXV];

int i, j, k;

int cloest[MAXV];

float min;

float sum = 0.0;

for(i=0;i

Vlength[i]=g.edges[v][i];

cloest[i]=v;

}

min=INF; //min为其中最大的一条边=MAXV

for(j=0;j

if(Vlength[j]!=0&&Vlength[j]

min=Vlength[j];

k=j;

}

}

cout<<"连接油井<"<"<<" 长度为:"<

sum+=min;

Vlength[k]=0;

Vlength[cloest[k]]=0;

for(j=0;j

if(g.edges[k][j]!=0&&g.edges[k][j]

Vlength[j]=g.edges[k][j];

cloest[j]=k;

}

}

}

cout<<"管道总长度为:"<

}

int main()

{

int i,j,u=3;

MGraph g;

float A[MAXV][10];

g.vexnum=8;

for (i=0;i

for (j=0;j

A[i][j]=INF;

A[0][1]=1.3; A[0][2]=2.1; A[0][3]=0.9;

A[0][4]=0.7; A[0][5]=1.8; A[0][6]=2.0;

A[0][7]=1.8; A[1][2]=0.9; A[1][3]=1.8;

A[1][4]=1.2; A[1][5]=2.8; A[1][6]=2.3;

A[1][7]=1.1; A[2][3]=2.6; A[2][4]=1.7;

A[2][5]=2.5; A[2][6]=1.9; A[2][7]=1.0;

A[3][4]=0.7; A[3][5]=1.6; A[3][6]=1.5;

A[3][7]=0.9; A[4][5]=0.9; A[4][6]=1.1;

A[4][7]=0.8; A[5][6]=0.6; A[5][7]=1.0;

A[6][7]=0.5;

for (i=0;i

for (j=0;j

A[j][i]=A[i][j];

for (i=0;i

g.edges[i][j]=A[i][j];

cout<

cout<<"各油井间距离:\n";

DispMat(g);

cout<

cout<<"最优铺设方案:\n";

prim(g,0);

cout<

return 0;

}

3.3运行结果

相关文档
最新文档