免费智能真题库 > 历年试卷 > 软件设计师 > 2023年上半年 软件设计师 上午试卷 综合知识
  第64题      
  知识点:   生成树   算法设计   最小生成树   图的最小生成树
  关键词:   算法   最小生成树   生成树        章/节:   计算机软件知识       

 
采用Kruskal 算法求解下图的最小生成树,采用的算法设计策略是(64)。该小生成树的权值是(65)。
 
 
  A.  分治法
 
  B.  动态规划
 
  C.  贪心法
 
  D.  追溯法
 
 
 

 
  第64题    2014年上半年  
   34%
Prim算法和Kruscal算法都是无向连通网的最小生成树的算法,Prim算法从一个顶点开始,每次从剩余的顶点中加入一个顶点,该顶点与当..
  第64题    2014年上半年  
   34%
Prim算法和Kruscal算法都是无向连通网的最小生成树的算法,Prim算法从一个顶点开始,每次从剩余的顶点中加入一个顶点,该顶点与当..
  第65题    2014年上半年  
   52%
Prim算法和Kruscal算法都是无向连通网的最小生成树的算法,Prim算法从一个顶点开始,每次从剩余的顶点中加入一个顶点,该顶点与当..
 
  第63题    2012年上半年  
   32%
某货车运输公司有一个中央仓库和n个运输目的地,每天要从中央仓库将货物运输到所有的运输目的地,到达每个运输目的地一次且仅一次..
  第60题    2018年上半年  
   54%
现需要申请一些场地举办一批活动,每个活动有开始时间和结束时间。在同一个场地,如果一个活动结束之前,另一个活动开始,即两个..
  第62题    2019年上半年  
   48%
已知矩阵Am*n和Bn*p相乘的时间复杂度为O(mnp)。矩阵相乘满足结合律,如三个矩阵A、B、C相乘的顺序可以是(A*B)*C也可以是A*(B*C)。..
   知识点讲解    
   · 生成树    · 算法设计    · 最小生成树    · 图的最小生成树
 
       生成树
        设图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)。它适用于稀疏图。
   题号导航      2023年上半年 软件设计师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第64题    在手机中做本题