- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用Prim算法构造最小生成树
用Prim算法构造最小生成树
用Prim算法构造最小生成树
适用标准文案
用 Prim 算法结构最小生成树
班级: 2010 级计算机 1 班 学号: 2010131116 姓名:杨才
一、实验目的
认识最小生成树的观点,掌握生成最小生成树的方法 。
二、实验内容
成立一个含随意结点的无向连通网,并用 Prim 算法结构其最小生成树
三、实验重点及说明
假如无向连通图是一个网, 则其全部生成树中必有一棵树的边的权值总和最小,这棵生成树为最小生成树。
Prim 算法:在图 G=(V,E)(V 为极点集, E 为边集)中任选一极点 v0, 令会合 U={v0} 为初态,在一个极点在 U中,另一极点在 V-U 中的全部边中找权值最小的边( u,v )(U∈ u,v ∈ V-U ),并将 v 加入
到 U中,同时将边( u,v )加入会合 T 中( T 的初态为空集),这样不停地扩大 U,直至 U=V,则会合 T 中的边为所求最小生成树的边
四、算法思想与算法描绘
1、毗邻矩阵的数据种类的定义以下:
typedef struct
{ int no; /* 极点编号 */
string name; /* 极点其余信息 */
} VertexType; /* 极点种类 */
typedef struct /* 图的定义 */
{ int edges[MAXV][MAXV]; /* 毗邻矩阵 */
int vexnum,arcnum; /* 极点数 , 弧数 */
VertexType vexs[MAXV]; /* 寄存极点信息 */
}MGraph;
2、暂时数组的寄存的数据种类
struct {
int closest; // U 集中的极点序号
int lowcost; // 边的权值
} closedge[MAXV];
int const INF=32767; /*INF 表示∞ */
3、prime 算法实现:(原理见实验说明)
void prime(MGraph g, int v)
{
int lowcost[MAXV];
int min;
int closest[MAXV];
int i,j,k;
for (i=0;ig.vexnum;i++)
出色文档
适用标准文案
{
lowcost[i]=g.edges[v][i];
closest[i]=v;
}
for (i=1;ig.vexnum;i++)
{
min=INF;
for (j=0;jg.vexnum;j++)
if (lowcost[j]!=0lowcost[j]min)
{
min=lowcost[j];
k=j;
}
printf( 边 (%d,%d)权为 :%d\n ,closest[k],k,min);
lowcost[k]=0;
for (j=0;jg.vexnum;j++)
if (g.edges[k][j]!=0g.edges[k][j]lowcost[j])
{
lowcost[j]=g.edges[k][j];
closest[j]=k;
}
}
}
4、毗邻矩阵的创立
void CreatMGraph(MGraph M)
{
int n,e;
cout 输入定点数 : ;
cinn;
M.vexnum=n;
cout 输入弧数 : ;
cine;
M.arcnum=e;
for ( int i=0;in;i++)
{
for ( int j=0;jn;j++)
{
if (i==j)
M.edges[i][j]=0;
else
M.edges[i][j]=INF;
}
}
cout 输入边的权:(如 1 2 3 表示点到点的权时) endl;
出色文档
适用标准文案
for ( int i=0;i2*e;i++)
{
int x,y,z;
cinxyz;
M.edges[x][y]=z;
}
cout 输入点编号,名字: endl;
for ( int i=0;in;i++)
{
int No;
string str;
cinNostr;
M.vexs[i].name=str;
M.vexs[i].no=No;
}
}
int const MAXV=16
4、主函数
int main( void )
{
MGraph m;
CreatMGraph(m);
cout 输出无向图的二维矩阵: endl;
for ( int i=0;im.vexnum;i++)
{
for ( int j=0;jm.vexnum;j++)
{
if (m.edges[i][j]==INF)
cout ;
else
coutm.edges[i][j] ;
}
coutendl;
}
cout 输入
您可能关注的文档
- 生培养和待优生转化措施.doc
- 用ghost备份、还原安装版windows10正确方法此方法同样适用安装版windows7.docx
- 用JAVA编写计算器程序设计报告计划.docx
- 用LED数码管显示秒表设计说明.docx
- 用matlab解析实际案例.docx
- 用romax软件进行齿轮强度分析及齿形优化流程.docx
- 用Word编辑小学语文试卷技巧几例.docx
- 用《伤寒论》方治疗喉咙痛扁桃腺发.docx
- 用人单位享受岗位补贴和社会保险.docx
- 用人单位劳动保障情况送审表.docx
- 第一单元《四则运算》【知识精研】【大单元教学】四年级数学下册同步备课(人教版).pptx
- 6.《芣苢》《插秧歌》联读课件 【知识精研】统编版高一语文必修上册.pptx
- 3.2产业转移对区域发展的影响-【知识精研】高中地理鲁教版(2019)选择性必修2.pptx
- Unit 6 Have you got any homework Lesson3 Reading part5【知识精研】KET剑桥英语 .pptx
- Recycle Mike's happy days Day 5 Mike and his new friends Part 1 【知识精研】人教PEP版英语六年级下册.pptx
- Recycle Mike's happy days Day 7 Day 8 【知识精研】人教PEP版英语六年级下册.pptx
- Module4 Unit2 The apples are falling down the stairs.(教学课件)-六年级英语下册课堂(外研版三起).pptx
- Recycle Mike's happy days Day 5 6【知识精研】人教PEP版英语六年级下册.pptx
- 第三单元 乘法(复习课件)三年级数学下册同步高效课堂(北师大版).pptx
- 1 有个新目标 【知识精研】道德与法治一年级下册统编版.pptx
文档评论(0)