数据结构与算法十一: 4. 图---最小生成树

173 阅读3分钟

这是我参与8月更文挑战的第29天,活动详情查看:8月更文挑战

关注我,以下内容持续更新

数据结构与算法(一):时间复杂度和空间复杂度

数据结构与算法(二):桟

数据结构与算法(三):队列

数据结构与算法(四):单链表

数据结构与算法(五):双向链表

数据结构与算法(六):哈希表

数据结构与算法(七):树和二叉树

数据结构与算法(八):排序算法

数据结构与算法(九):经典算法面试题

数据结构与算法(十):递归

数据结构与算法(十一):图

最小生成树

1. 最小生成树相关的定义

  • 连通: 在无向图中, 若从顶点v1到顶点v2有路径, 则称顶点v1与v2是连通的。
  • 连通图: 在无向图中,如果图中任意一对顶点都是连通的(有路径),则称此图是连通图。
  • 生成树: 一个连通图的生成树是一个极小连通子图。生成树包含原图中的所有结点和保持图连通的n-1条边。所谓极小就是如果在生成树上任意增加1条边,必定构成一个环;若去掉一条边,必为非连通图。
  • 最小生成树: 带权图对应的生成树,生成树的各边权值总和称为生成树的权(也叫生成树的代价)。权最小的生成树称为最小生成树。

2. 最小生成树的特点:
(1) 遍历图的方法不同,得到的生成树不同
(2) 从不同的顶点出发,也可能得到不同的生成树
(3) n个顶点的连通图的生成树有n个顶点和 n-1 条边。

3. 构造最小生成树的准则:
(1)必须只使用该图中的边来构造最小生成树;
(2)必须使用且仅使用n-1条边来连接图中的n个顶点;
(3)不能使用产生回路的边。

4. 最小生成树的性质(MST性质):
假设G=(V,E)是个连通图,U是顶点V的一个非空子集。若(u,v)是一条具有最小权值的边,其中u∈U,v∈V-U,则必存在一棵包含边(u,v)的最小生成树。(假设把V分成U和V-U两个集合)

截屏2021-08-21 20.36.52.png

5. 如何利用MST性质寻找最小生成树?

求最小生成树的方法有两种:普利姆(Prim)算法克鲁斯卡尔(Kruskal)算法

  • Prim算法:适用于稠密图,从一个点出发,依次加入符合条件的全部顶点和边
  • Kruskal算法:适用于稀疏图,从边出发,将所有的边升序排序,依次加入符合条件(不会形成环)的边的两个顶点,直至生成最小生成树。

6. 最小生成树的实际应用
修路问题:欲在n个城市间建立通信网,则n个城市应铺n-1条线路,但因为每条线路都会有对应的经济成本,而n个城市可能有n(n-1)/2条线路,如何选择n-1条线路,使总费用最少?

关注我

如果觉得我写的不错,请点个赞 关注我,您的支持是我更文最大的动力!