阅读下列算法说明和算法,将应填入(n)的字句写在对应的栏内。[说明] 下列最短路径算法的具体流程如
阅读下列算法说明和算法,将应填入(n)的字句写在对应的栏内。
[说明]
下列最短路径算法的具体流程如下:首先构造一个只含n个顶点的森林,然后依权值从小到大从连通网中选择不使森林中产生回路的边加入到森林中去,直至该森林变成一棵树为止,这棵树便是连通网的最小生成树。该算法的基本思想是:为使生成树上总的权值之和达到最小,则应使每一条边上的权值尽可能地小,自然应从权值最小的边选起,直至选出 n-1条互不构成回路的权值最小边为止。
[算法]
/*对图定义一种新的表示方法,以一维数组存放图中所有边,并在构建图的存储结构时将它构造为一个“有序表”。以顺序表MSTree返回生成树上各条边。*/
typedef struct{
VertexType vex1;
VertexType vex2;
VRType weight;
} EdgeType;
typedef ElemType EdgeType;
typedef struct { //有向网的定义
VertexType vexs [MAX_VERTEX_N U M ]; //顶点信息
EdgeType edge[ MAX_EDGE_NUM]; //边的信息
int vexnum, arcnum; //图中顶点的数目和边的数目
I 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返回边的顶点所在树的树的根代号,如果边的两个顶点所在树的树根相同,则说明它们已落在同一棵树上。 */
ri = fix_mfset(F, LocateVex(e. vex1) );
r2=(2); //返回两个顶点所在树的树根
if(r1 (3) r2) { //选定生成树上第k条边
if(Listlnsert(MSTree,k,e){(4); //插入生成树
mix_mfset( E, r1,r2); //将两棵树归并为一棵树
}
(5); //继续考察下一条权值最小边
}
DestroySet (F); }
}
(1)G. vexnum(2)fix_mfset(F, LoeateVex(e. vex2)) (3)!=(4)k++。(5)i++ 解析:本题考查的是克鲁斯卡尔(Kruskal)算法。理解该算法的关键在于:由于生成树上不允许有问路,因此并非每一条居当前权值最小的边都可选。例如,如图2所示的连通网G5,在依次选中了(e, f),(b, c),(e, d)和(f, s)的4条边之后,权值最小边为(s, d),由于g和d已经连通,若加上(s, d)这条边将使生成树上产生回路,显然这条边不可取。同理,边(f, d)也不可取,之后则依次取(a, s)和(a, b)两条边加入到生成树。
那么在算法中如何判别当前权值最小边的两个顶点之间是否已经连通?从生成树的构造过程可见,初始态为n个顶点分属n棵树,互不连通,每加入一条边,就将两棵树合并为一棵树,在同一棵树上的两个顶点之间自然相连通。由此判别当前权值最小边是否可取只要判别它的两个顶点是否在同一棵树上即可。
在密码学中,直接可以看到的内容为明码,对明码进行某种处理后得到的内容为密码,将英文26个字母a,b 数学 2020-04-27 …
有一个跑道,明明跑的线半径是15米,军军跑的线半径是10米.如果他俩在这样的场地上比赛军军跑3圈, 数学 2020-04-27 …
小明站在船上准备叉水中的一条鱼,下面相关叙述中正确的是()A.小明看到的是鱼的实像B.小明应对准鱼 物理 2020-07-14 …
“为什么明明不饿,还是想吃?”想要解决这个问题,要从一种由胃和十二指肠分泌的缩氨酸--胃饥饿素说起 语文 2020-07-29 …
证明:无向完全图转为有向图后必有H路径证明:无向完全图转为有向图后必有哈密顿路径.不知如何证明,r 数学 2020-07-30 …
xy平面内圆周运动的运动方程书上怎么写的是x=Rsinwt呢明明应该是x=Rcoswt呀其中w是角 数学 2020-07-31 …
某位大一学生小明发现x理想中的自己和现实中的自己相差太大,他很苦恼,面对这种矛盾状况,小明应该采取什 其他 2020-11-10 …
一段12.2米圆周径2.135的木头他们说有5.9几立方对吗我去买了一段木材长12.2米头周径是2. 数学 2020-11-26 …
下列属于账账核对的是A.银行存款日记账与银行对账单的核对B.应收,应付款项明细账与债权债务人账下列属 其他 2020-11-28 …
明明今年14岁,妈妈还是对他的一切都不放心。出于对他的关心,妈妈经常偷听他和同学的电话。明明对此非常 政治 2020-12-30 …