离散数学-⑩-树

树的概述

  • 树:没有简单回路的连通无向图
  • 森林:没有简单回路的无向图
  • 一个无向图是树当且仅当在它的每对顶点之间存在唯一简单通路
  • 子树:树的子图,该子图本身也是一棵树
  • 内点:具有孩子的顶点
  • 树叶:没有孩子的顶点
  • 顶点的层:从根到这个顶点的通路的长度
  • 树的高度:树里顶点的最大层数
  • 有根树:指定一个顶点作为根并且每条边的方向都离开根的树
  • m叉树:有根树的每个内点都有不超过m个孩子
  • 满m叉树:m叉树的每个内点恰好有m个孩子
  • 二叉树:m=2的m叉树
  • 带有n个顶点的树含有n-1条边
  • 带有i个内点的满m叉树含有n=mi+1个顶点
  • 一个满叉树若有
    • n个顶点,则有 i = ( n − 1 ) / m i=(n-1)/m i=(n1)/m个内点和 l = [ ( m − 1 ) n + 1 ] / m l=[(m-1)n+1]/m l=[(m1)n+1]/m个树叶
    • i个内点,则有 n = m i + 1 n=mi+1 n=mi+1个顶点和 l = ( m − 1 ) i + 1 l=(m-1)i+1 l=(m1)i+1个树叶
    • l个树叶,则有 n = ( m l − 1 ) / ( m − 1 ) n=(ml-1)/(m-1) n=(ml1)/(m1)个顶点和 i = ( l − 1 ) / ( m − 1 ) i=(l-1)/(m-1) i=(l1)/(m1)个内点
  • 平衡m叉树:一颗高度为h的m叉树的所有树叶都在h层或h-1层
  • 在高度为h的m叉树中至多有 m h m^h mh个树叶

树的应用

  • 二叉搜索树:二叉树,在其中以元素对顶点进行标记,使得一个顶点的标记大于这个顶点的左子树里所有顶点的标记,并且小于这个顶点右子树里所有顶点的标记
  • 决策树:在有根树的每个顶点表示一次决策的可能输出,而树叶表示可能的解
  • 前缀码:一种编码,其中一个字符的编码永远不是另一个字符的编码的前缀
  • 哈夫曼编码:给定一组符号的频率,为这些符号构造最优二元码的过程
  • 博弈树:顶点表示博弈过程中的局面,边表示这些局面间的合法移动的有根树

树的遍历

  • 树的遍历:树的顶点的列表
  • 遍历算法
    • 前序遍历:先列出根,接着列出第一课子树,接着从左到右的出现顺序列出其余子树
    • 中序遍历:先列出第一课子树,接着列出根,接着以左到右的出现顺序列出其余子树
    • 后序遍历:以从左到右的出现顺序列出各子树,接着列出根

生成树

  • 生成树:包含图的所有顶点的树
  • 简单图是连通的当且仅当它有生成树
  • 深度优先搜索(回溯):构造生成树的过程,通过添加形成通路的边,直到不可能这样做为止,然后沿着这条通路往回移动,直到找到可以形成新的通路的顶点为止
  • 宽带优先搜索:构造生成树的过程,通过一次添加与上次添加的边相关联的所有边,除非形成简单回路
  • 回溯的应用
    • 图着色
    • n皇后问题
    • 子集之和

最小生成树

  • 最小生成树:连通加权图里的最小生成树是具有边的权之和最小的生成树
  • 普林算法:产生加权图里最小生成树的过程,通过依次添加与已经在树里的顶点相关联的所有边中权最小的边,使得再添加边时不会产生简单回路
  • 克鲁斯卡尔算法:产生加权图里最小生成树的过程,通过依次添加还不在树里的权最小的边,使其再添加边时不会产生简单回路

鲁斯卡尔算法:产生加权图里最小生成树的过程,通过依次添加还不在树里的权最小的边,使其再添加边时不会产生简单回路

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nbin_Newby

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值