时间:2024-05-06 19:01:53 浏览:599 作者:趁爱不深 来源:西甲栏目
袁梓轩作为中国好声音的冠军以其独特的嗓音和创作才华俘获了无数歌迷的心此次登上春晚舞台他将以主持人的身份亮相让人不禁期待他能带来怎样的惊喜
这篇文章给大家聊聊关于,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
文本导读:
假设N=(V,E)是一个具有n个顶点的连通网,T=(U,TE)是所求的最小生成树,其中U是T的顶点集,TE是T的边集。
(1)初始U={u0}(u0∈V),TE=φ;
(2)在所有u∈U,v∈V-U的边中选一条代价最小的边(u0,v0)并入集合TE,同时将v0并入U;
此时,TE中必含有n-1条边,则T=(V,{TE})为N的最小生成树。
假设N=(V,E)是一个具有n个顶点的连通网,
(2)按权值由小到大的顺序选择边,所选边应满足两个顶点不在同一个顶点集合内,将该边放到生成树边的集合中。同时将该边的两个顶点所在的顶点集合合并;
(3)重复(2),直到所有的顶点都在同一个顶点集合内。
1、最小生成树实际应用的例子如下:
2、Kruskal算法,过程描述:始终以边为主导地位,先选择权值最小的边,总是选择当前可用最小权值边,并且每次判断两点之间是否已经间接连通,如果已经间接连通,则跳过此边。时间复杂度是O(n*logn),适用于求边稀疏连通网的最小生成树。
3、Prim算法,过程描述:Prim算法始终以顶点为主导,并且起始点的选择是任意的。从起始点到其他点选择最小权值边,然后以此边两个顶点分别再找最小权值的边,同样已经间接连接的边跳过。时间复杂度是O(n2),适用于求边稠密连通网的最小生成树。
4、要在n个城市之间铺设光缆,主要目标是要使这n个城市的任意两个之间都可以通信,但铺设光缆的费用很高,且各个城市之间铺设光缆的费用不同,因此另一个目标是要使铺设光缆的总费用最低。这就需要找到带权的最小生成树。
5、最小生成树性质:设G=(V,E)是一个连通网络,U是顶点集V的一个非空真子集。若(u,v)是G中一条“一个端点在U中(例如:u∈U),另一个端点不在U中的边(例如:v∈V-U),且(u,v)具有最小权值,则一定存在G的一棵最小生成树包括此边(u,v)。
6、将集合U中的顶点看作是红色顶点,②而V-U中的顶点看作是蓝色顶点,③连接红点和蓝点的边看作是紫色边,④权最小的紫边称为轻边(即权重最“轻”的边)。于是,MST性质中所述的边(u,v)就可简称为轻边。
7、求MST的一般算法可描述为:针对图G,从空树T开始,往集合T中逐条选择并加入n-1条安全边(u,v),最终生成一棵含n-1条边的MST。
8、Kruskal算法简述:假设WN=(V,{E})是一个含有n个顶点的连通网,则按照克鲁斯卡尔算法构造最小生成树的过程为:先构造一个只含n个顶点,而边集为空的子图,若将该子图中各个顶点看成是各棵树上的根结点,则它是一个含有n棵树的一个森林。
1、用Kruskal(克鲁斯卡尔)算法,求最小生成树.
2、先将所有边的权值按照从小到大排序:
3、然后,每次提取权值最小边,逐步组成最小生成树:
4、(2)取边(v2,v6,10),不会产生环路.
5、(3)取边(v1,v3,12),不会产生环路.
6、(4)取边(v1,v4,14),不会产生环路.
7、(5)如果取边(v3,v4,16),会产生环路,所以不能取.
8、这就是最小生成树,连通了所有顶点,总权值最小.
9、//最小生成树Kruskal(克鲁斯卡尔)算法
10、}Edge;//对边集数组Edge结构的定义
11、 for(i=0;i<G->numVertexes;i++)//初始化图
12、 for(j=0;j<G->numVertexes;j++)
13、 G->arc[i][j]=G->arc[j][i]=INF;
14、 for(i=0;i<G->numVertexes;i++)
15、 for(j=i;j<G->numVertexes;j++)
16、 G->arc[j][i]=G->arc[i][j];
17、voidSwapn(Edge*edges,inti,intj)
18、 edges[i].begin=edges[j].begin;
19、 edges[i].weight=edges[j].weight;
20、voidsort(Edgeedges[],MGraph*G)
21、 for(i=0;i<(G->numEdges-1);i++)
22、for(j=i+1;j<G->numEdges;j++)
23、if(edges[min].weight>edges[j].weight)
24、 printf("权值排序之后的为:\n");
25、 for(i=0;i<G->numEdges;i++)
26、 printf("(%d,%d)%d\n",edges[i].begin,edges[i].end,edges[i].weight);
27、voidMiniSpanTree_Kruskal(MGraphG)
28、 intparent[MAXVEX];//定义一数组用来判断边与边是否形成环路
29、 Edgeedges[MAXEDGE];//定义边集数组,edge的结构为begin,end,weight,均为整型
30、 for(i=0;i<G.numVertexes-1;i++)
31、 for(j=i+1;j<G.numVertexes;j++)
32、 sort(edges,&G);//从小到大排序
33、 for(i=0;i<G.numVertexes;i++)
34、 printf("打印最小生成树:\n");
35、 for(i=0;i<G.numEdges;i++)//循环每一条边
36、 n=Find(parent,edges[i].begin);
37、 if(n!=m)//假如n与m不等,说明此边没有与现有的生成树形成环路
38、 parent[n]=m;//将此边的结尾顶点放入下标为起点的parent中
39、//表示此顶点已经在生成树集合中
40、 printf("(%d,%d)%d\n",edges[i].begin,edges[i].end,edges[i].weight);
樊振东本人并未携带助理或保镖面对突如其来的热情显得有些措手不及他试图向粉丝解释希望保持秩序但收效甚微
OK,到此结束,希望对大家有所帮助。