早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

●试题四 阅读下列算法说明和算法,将应填入(n)的字句写在答题纸的对应栏内。 【说明】 下列最短路

题目

●试题四

阅读下列算法说明和算法,将应填入(n)的字句写在答题纸的对应栏内。

【说明】

下列最短路径算法的具体流程如下:首先构造一个只含n个顶点的森林,然后依权值从小到大从连通网中选择不使森林中产生回路的边加入到森林中去,直至该森林变成一棵树为止,这棵树便是连通网的最小生成树。该算法的基本思想是:为使生成树上总的权值之和达到最小,则应使每一条边上的权值尽可能地小,自然应从权值最小的边选起,直至选出n-1条互不构成回路的权值最小边为止。

图5算法流程图

【算法】

/*对图定义一种新的表示方法,以一维数组存放图中所有边,并在构建图的存储结构时将它构造为一个"有序表"。以顺序表MSTree返回生成树上各条边。*/

typedef struct{

VertexType vex1;

VertexType vex2;

VRType weight;

}EdgeType;

typedef ElemType EdgeType;

typedef struct{//有向网的定义

VertexType vexs[MAX_VERTEX_NUM];//顶点信息

EdgeType edge[MAX_EDGE_NUM];//边的信息

int vexnum,arcnum;//图中顶点的数目和边的数目

}ELGraph;

void MiniSpanTree_Kruskal(ELGraph G,SqList& MSTree){

//G.edge 中依权值从小到大存放有向网中各边

//生成树的边存放在顺序表MSTree中

MFSetF;

InitSet(F,G.vexnum);//将森林F初始化为n棵树的集合

InitList(MSTree,G.vexnum);//初始化生成树为空树

i=0;k=1;

while(k< (1) ){

e=G.edge[i];//取第i条权值最小的边

/*函数fix_mfset返回边的顶点所在树的树根代号,如果边的两个顶点所在树的树根相同,则说明它们已落在同一棵树上。*/

rl=fix_mfset(F,LocateVex(e.vex1));

r2= (2) //返回两个顶点所在树的树根

if(r1 (3) r2){//选定生成树上第k条边

if(ListInsert(MSTree,k,e){ (4) ;//插入生成树

mix_mfset(E,rl,r2);//将两棵树归并为一棵树

}

(5) ;//继续考察下一条权值最小边

}

DestroySet(F);

}

参考答案
正确答案:
●试题四【答案】(1)G.vexnum(2)fix_mfset(F,LocateVex(e.vex2))(3)!=(4)k++(5)i++【解析】本题考查的是克鲁斯卡尔(Kruskal)算法。理解该算法的关键在于:由于生成树上不允许有回路,因此并非每一条居当前权值最小的边都可选。例如,如图2所示的连通网G5,在依次选中了(e,f),(b,c),(e,d)和(f,g)的4条边之后,权值最小边为(g,d),由于g和d已经连通,若加上(g,d)这条边将使生成树上产生回路,显然这条边不可取。同理,边(f,d)也不可取,之后则依次取(a,g)和(a,b)两条边加入到生成树。那么在算法中如何判别当前权值最小边的两个顶点之间是否已经连通?从生成树的构造过程可见,初始态为n个顶点分属n棵树,互不连通,每加入一条边,就将两棵树合并为一棵树,在同一棵树上的两个顶点之间自然相连通。由此判别当前权值最小边是否可取只要判别它的两个顶点是否在同一棵树上即可。
看了●试题四 阅读下列算法说明和算...的网友还看了以下:

某计算机字长16位,其存储容量是1MB,若按字编址,至少需地址线多少根根.解释详细一下 比如给 数学 2020-05-16 …

姓名学中,“钟”字按多少画算?“钟”字的繁体字有两种写法,笔画数一个是17画,一个是20画,同一个 其他 2020-05-21 …

"国有资本经营预算应当按照收支平衡的原则编制,不列赤字,并安排资金调入一般公共预算."这条中不列赤 其他 2020-05-22 …

7岁起每天阅读1时,每分阅读100字,60岁时已阅读多少字?一部西游记80万字这样的阅量于读多少部 其他 2020-06-13 …

有效数字的运算应遵循怎样的运算规则?从数字的修约规则和有效数字的加减乘除来回答 数学 2020-06-27 …

英语阅读量要求多少?我江苏的,今年高考.一个高中生的英语课外阅读应该达到多少?我现在不算课本,只算看 语文 2020-11-07 …

起点稿费怎么算的?我知那是按订阅数算的,是1订阅1千字1分钱吗2000字和2500字和2999字算一 其他 2020-11-19 …

阅读下面文字,完成下列各题。回归经典阅读曹文轩我们应当将阅读看成是一种宗教,一种超越任何宗教的一个宗 语文 2020-12-03 …

怎样提高阅读速度和质量?对于阅读,研读,细读,精读,默读,请详细说明『请不要用字典里的解释!』。阅读 其他 2020-12-04 …

读书、阅读文字时,因为文字都有所对应的发音,我的问题是你们会把阅读到的文字在心里读出来吗?会在心里读 语文 2020-12-04 …