- 数据结构与算法
- DSA - 主页
- DSA - 概述
- DSA - 环境设置
- 数据结构
- DSA - 数据结构基础知识
- DSA - 数据结构和类型
- DSA - 数组数据结构
- 链表
- DSA - 链表基础知识
- DSA - 双向链表
- DSA - 循环链表
- 堆栈和队列
- DSA - 堆栈
- DSA - 表达式解析
- DSA-队列
- 图数据结构
- DSA - 图数据结构
- DSA-深度优先遍历
- DSA-广度优先遍历
- DSA——生成树
- 树数据结构
- DSA - 树数据结构
- DSA - 树遍历
- DSA - 二叉搜索树
- DSA - AVL 树
- DSA - 红黑树
- DSA - B 树
- DSA - B+ 树
- DSA - 八字树
- DSA - 尝试
- DSA-堆
- 递归
- DSA - 递归基础知识
- DSA - 河内塔
- DSA - 斐波那契数列
- DSA 有用资源
- DSA - 问题与解答
- DSA - 快速指南
- DSA - 有用的资源
- DSA - 讨论
数据结构与算法 - 生成树
生成树是图 G 的子集,其中所有顶点都被尽可能少的边数覆盖。因此,生成树没有环,也不能断开。
通过这个定义,我们可以得出结论:每个连通无向图 G 都至少有一个生成树。断开连接的图没有任何生成树,因为它不能生成到其所有顶点。
我们在一张完整的图中发现了三棵生成树。完全无向图最多可以有n n-2 个生成树,其中n是节点数。在上述示例中,n 为 3,因此3 3−2 = 3 个生成树是可能的。
生成树的一般性质
我们现在知道一张图可以有多个生成树。以下是连接到图 G 的生成树的一些属性 -
连通图 G 可以有多个生成树。
图 G 的所有可能的生成树都具有相同数量的边和顶点。
生成树没有任何环(循环)。
从生成树中删除一条边将使图断开,即生成树是最小连接的。
向生成树添加一条边将创建一个环路或环路,即生成树最大程度地是非循环的。
生成树的数学性质
生成树有n-1条边,其中n是节点(顶点)的数量。
从完整图中,通过删除最大e - n + 1条边,我们可以构造一棵生成树。
完整图最多可以有n n-2个生成树。
因此,我们可以得出结论,生成树是连通图 G 的子集,而断开图没有生成树。
生成树的应用
生成树主要用于寻找连接图中所有节点的最小路径。生成树的常见应用是 -
民用网络规划
计算机网络路由协议
聚类分析
让我们通过一个小例子来理解这一点。将城市网络视为一个巨大的图,现在计划部署电话线路,以便以最少的线路连接到所有城市节点。这就是生成树出现的地方。
最小生成树 (MST)
在加权图中,最小生成树是比同一图的所有其他生成树具有最小权重的生成树。在现实世界中,该权重可以用距离、拥塞、流量负载或表示边缘的任意值来衡量。
最小生成树算法
我们将在这里学习两种最重要的生成树算法 -
两者都是贪心算法。