全部科目 > 软件设计师 >
2023年上半年 上午试卷 综合知识
第 64 题
知识点 生成树   算法设计   最小生成树   图的最小生成树  
章/节 计算机软件知识  
 
 
采用Kruskal 算法求解下图的最小生成树,采用的算法设计策略是(64)。该小生成树的权值是(65)。
 
  A.  分治法
 
  B.  动态规划
 
  C.  贪心法
 
  D.  追溯法
 
 




 
 
相关试题     生成树和最小生成树 

  第64题    2014年上半年  
Prim算法和Kruscal算法都是无向连通网的最小生成树的算法,Prim算法从一个顶点开始,每次从剩余的顶点中加入一个顶点,该顶点与当前的生成树中的顶点的连边权重最小,直到得到一颗最小生成树;K..

  第64题    2014年上半年  
Prim算法和Kruscal算法都是无向连通网的最小生成树的算法,Prim算法从一个顶点开始,每次从剩余的顶点中加入一个顶点,该顶点与当前的生成树中的顶点的连边权重最小,直到得到一颗最小生成树;K..

  第65题    2014年上半年  
Prim算法和Kruscal算法都是无向连通网的最小生成树的算法,Prim算法从一个顶点开始,每次从剩余的顶点中加入一个顶点,该顶点与当前的生成树中的顶点的连边权重最小,直到得到一颗最小生成树;K..

相关试题     算法和算法设计的基本概念 

  第63题    2015年下半年  
已知算法A的运行时间函数为T(n)=8T(n/2)+n2,其中n表示问题的规模,则该算法的时间复杂度为(62)。另已知算法B的运行时间函数为T(n)=XT(n/4)+n2,其中n表示问题的规模。..

  第64题    2022年下半年  
采用Dijkstra算法求解下图A点到E点的最短路径,采用的算法设计策略是(64),该最短路径的长度是(65)?。

  第62题    2013年上半年  
给定n个整数构成的数组A={a1,a2,…,an}和整数x,判断A中是否存在两个元素ai和aj,使得ai+aj=x。为了求解该问题,首先用归并排序算法对数组A进行从小到大排序;然后判断是否存在ai+aj=x,具..

 
知识点讲解
· 生成树
· 算法设计
· 最小生成树
· 图的最小生成树
 
        生成树
        设图G=(V,E)是个连通图,当从图中任一个顶点出发遍历图G时,将边集E(G)分为两个集合,即A(G)和B(G)。其中A(G)是遍历时所经过的边的集合,B(G)是遍历时未经过的边的集合。G1=(V,A)是图G的子图,称子图G1为连通图G的生成树。
        图的生成树不是唯一的。选择不同的存储方式,从不同的顶点出发,可以得到不同的生成树。对于非连通图而言,每个连通分量中的顶点集和遍历时走过的边集一起构成若干棵生成树,把它们称为非连通图的生成树森林。
 
        算法设计
        通常求解一个问题可能会有多种算法可供选择,选择的主要标准首先是算法的正确性和可靠性、简单性和易理解性;其次是算法所需要的存储空间更少和执行速度更快等。
        算法设计是一件非常困难的工作,通常设计一个"好"的算法应考虑达到正确性、可读性、健壮性、效率与低存储量需求等目标。
        经常采用的算法设计技术主要有迭代法、穷举搜索法、递推法、贪心法、回溯法、分治法和动态规划法等。
 
        最小生成树
        对于连通网来说,边是带权值的,生成树的各边也带权值,如果把生成树各边的权值总和称为生成树的权,则把权值最小的生成树称为最小生成树。
        构造生成树有多种算法,其中多数算法利用了最小生成树的MST性质:假设G=(V,E)是一个连通图,U是顶点集V的一个非空子集。若(u,v)是一条最小权值的边,其中uU,vV-U,则必存在一棵包含边(u,v)的最小生成树。
        ①普里姆算法。它的时间复杂度为O(n2),与图中的边数无关,因此该算法适合于求边稠密的网中的最小生成树。
        ②克鲁斯卡尔算法。它的时间复杂度为O(elog2e),与图中的顶点数无关,因此该算法适合于求边稀疏的网的最小生成树。
 
        图的最小生成树
        一棵生成树的代价即树上各边的代价之和,如果该生成树的代价最小,则称该树为最小生成树(也称最小代价生成树)。
        求图的最小生成树有着广泛的应用价值。例如,如何在n个城市之间建立通信联络网,并且连通n个城市只需要n-1条线路,而且通信代价最少。
        构造最小生成树的算法主要有Prim(普里姆)算法和Kruskal(克鲁斯卡尔)算法两种。
        1)Prim算法
        Prim算法用于求无向图的最小生成树。N=(V,E)是连通网,V={V1, V2, …, Vn}是网的顶点集合,E是N上最小生成树中边的集合。引入顶点集合U和边的集合TE,U的初始状态为{V1},它存放的是当前所得到的(还未完成的)最小代价生成树上的所有顶点,TE的初始状态为Ф。在Prim算法的每一步,都从所有的边{(u,v)|v∈V-U, u∈U}中找出所有代价最小的边(u,v),同时将v并入U,(u,v)并入集合TE,直到U=V为止。此时TE中必有n-1条边,则T=(V,TE)为N的最小生成树。
        Prim算法的时间复杂度为O(n2)。它适合稠密图。
        2)Kruskal算法
        Kruskal算法是一种按权值的递增次序选择合适的边来构造最小生成树的方法。若G=(V, E)是一个连通的无向图,其中V={1,2,…,n},引入辅助集合T,来存放当前所形成的最小生成树的所有边,其初始状态为空,则Kruskal算法是逐步给T添加不与T中的边构成回路的当前最小代价边。具体步骤如下。
        (1)初始化T=Ф。
        (2)当T的边小于n-1时,做如下工作。
        (3)从E中选取代价最小的边(v,u)并删除。
        (4)若(v,u)不和T中的边一起构成回路,则将边(v,u)并入T中。
        (5)循环执行步骤(2)~(4),直到T中的所有顶点都在同一个连通图上且包含n-1条边为止。
        若带权连通无向图G有e条边,则用Kruskal算法构造最小生成树的时间复杂度为O(elog2e)。它适用于稀疏图。



更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2023 All Rights Reserved
软考在线版权所有