树(离散数学)
树(离散数学)
1.无向树及其性质
定义7.1.1 无向树及相关概念
设图为无向图:
- 无向树(树)
连通且不含回路的无向图 - 森林
各连通分支都是树的无向图 - 平凡树
仅含单个顶点的平凡图 - 树叶
无向树中度为1的悬挂顶点 - 分支点
无向树中度数的顶点
特别说明:
- 定义中的"回路"特指初级回路(简单回路)
- 本章后续讨论默认遵循此回路定义
定理7.1.1 树等价命题
设为阶边无向图,下列命题等价:
- 树定义:是树
- 唯一路径性:中任意两顶点存在唯一路径
- 无圈边数条件:无回路且
- 连通边数条件:连通且
- 全桥连通性:连通且所有边均为桥
- 加边成圈性:
- 不含回路
- 任意两不同顶点间添加新边后,存在唯一含新边的圈
定理7.1.2 树叶存在定理
对任意阶非平凡无向树(),必满足:
等价关系可视化
2.生成树
7.2.1 核心定义
- 生成树(定义7.2.1)
• 设无向图 的生成子图 是树,则称 为 的生成树。
• 树枝: 中属于 的边。
• 弦: 中不属于 的边。
• 余树:由所有弦构成的导出子图,记作 。
7.2.2 生成树的存在性与性质
-
定理7.2.1
• 无向图 存在生成树的充要条件是 为连通图。 -
推论7.2.1
• 设 为 阶 条边的无向连通图,则 。
7.2.3 基本回路系统
-
定义7.2.2
• 设 是 阶 边连通图 的生成树,其弦数为 。
• 对每条弦 ,由 添加 形成的唯一圈 称为 基本回路。
• 所有基本回路组成的集合 称为 的 基本回路系统。
• 圈秩:,表示图的回路复杂度。 -
广义回路空间
• 广义回路:圈或边不重的圈的并(包括空集)。
• 全体广义回路 在环和运算与数乘 下构成 上的 维线性空间。
• 基:任一基本回路系统均为其基。
7.2.4 基本割集系统
-
定理7.2.3
• 设 是连通图 的生成树, 为树枝,则存在仅含 和若干弦的 唯一割集。 -
定义7.2.3
• 设 是 阶连通图 的生成树,树枝为 。
• 每个树枝 与弦构成的割集 称为 基本割集。
• 所有基本割集组成的集合 称为 基本割集系统。
• 割集秩:,表示图的割集复杂度。 -
广义割集空间
• 广义割集:非空顶点子集补集间的边集(包括空集)。
• 全体广义割集 在对称差运算与数乘 下构成 上的 维线性空间。
• 基:任一基本割集系统均为其基。
7.2.5 最小生成树与算法
-
定义7.2.4
• 设无向连通带权图 ,生成树 的权为各边权之和 。
• 最小生成树:权最小的生成树。 -
Kruskal算法(避圈法)
• 输入: 阶无环连通带权图 ,边集 (按权升序排列)。
• 步骤:- 初始化 。
- 依次检查每条边 :
▪ 若 加入 后不形成回路,则加入 。
▪ 否则舍弃 。 - 当 含 条边时停止,输出最小生成树 。
关键总结
- 生成树与连通性:生成树存在等价于图连通,且边数下限为 。
- 对偶结构:
• 回路系统(圈秩 )
• 割集系统(割集秩 ) - 线性空间:
• 广义回路空间(维数 )
• 广义割集空间(维数 ) - 最小生成树算法:Kruskal算法通过贪心选择避免回路,逐步构造最优解。
3 根树及其应用
7.3.1 根树基本定义
定义7.3.1
设图为有向图:
- 有向树:基图为无向树的有向图
- 根树:存在唯一入度为0的顶点(树根),其余顶点入度均为1的有向树
- 顶点分类:
- 树根:入度为0的顶点
- 树叶:入度为1且出度为0的顶点
- 内点:入度为1且出度不为0的顶点
- 分支点:树根与内点的统称
- 层数与树高:
- 的层数:树根到的路径边数
- 树高:所有顶点的最大层数
7.3.2 根树关系与分类
定义7.3.2
设为根树:
- 亲属关系:
- 祖先/后代:顶点间存在可达路径的纵向关系
- 父/子:直接邻接的顶点间关系
- 兄弟:同一父节点的子节点
- 有序树:对同层顶点指定顺序的根树
- 分类体系
类型 | 特征 | 有序性 |
---|---|---|
叉树 | 分支点最多有个儿子 | 可有序 |
叉正则树 | 分支点恰有个儿子 | 可有序 |
叉完全正则树 | 叉正则且所有树叶同高 | 可有序 |
定义7.3.3
- 根子树:以任意顶点及其后代构成的子树
- 二叉正则有序树:
- 左子树:分支点第一个儿子导出的子树
- 右子树:分支点第二个儿子导出的子树
7.3.3 最优二叉树
定义7.3.4
设二叉树有片树叶,权值为:
- 权计算公式: 其中为的层数
- 最优二叉树:在相同权值集合中,权值最小的二叉树
7.3.4 霍夫曼算法
算法步骤:
- 初始化:创建片树叶,权值为
- 迭代合并:
- 选择权最小的两个入度为0顶点
- 创建新分支点,权为子节点权之和
- 终止条件:只剩1个入度为0顶点(树根)
- 权值特性:等于所有分支点权之和
7.3.5 前缀码
定义7.3.5
- 前缀:符号串的子串
- 前缀码:符号串集合中任意两元素互不为前缀
- 二元前缀码:由0/1符号串构成的前缀码
7.3.6 二叉正则树应用示例
算式表示:
表达式的二叉树表示:
÷
/ \
◦ +
/ \ / \
◦ * g *
/ \ | / \
a + d - j
/ \ / \
b c h i
行遍法结果:
遍历法 | 结果表达式 |
---|---|
中序 | |
前序 | |
后序 |
符号说明:
- 表示乘法运算
- 括号标记运算优先级
- 遍历结果需配合运算符优先级规则解析