树的应用 离散数学─树 南京大学计算机科学与技术系.

Slides:



Advertisements
Similar presentations
2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
Advertisements

台中市牙醫師公會 社會教育委員會 蔡佩音醫師 迎接新口腔時代. 蛀牙 v.s 全身疾病.
育英醫護管理專科學校 護理科講師 吳麗君. 另類財富 每日飲食建議量 飲食原則 以均衡飲食為主 減少高熱量營養價值不高的食物:糕點甜食、 油炸、碳酸飲料或加糖飲料 採低鹽、低脂肪、低糖飲食、高纖維 細嚼慢嚥放慢進食速度 刺激唾液分泌,每口飯嚼 30 次 不吃宵夜、不吃零食等.
练一练: 在数轴上画出表示下列各数的点, 并指出这些点相互间的关系: -6 , 6 , -3 , 3 , -1.5, 1.5.
司法体制改革与律师执业前景瞻望 黄太云
二叉树在树结构的应用中起着非常重要的作用,因为对二叉树的许多操作算法简单,而任何树都可以与二叉树 相互转换,这样就解决了树的
第五章 二次型. 第五章 二次型 知识点1---二次型及其矩阵表示 二次型的基本概念 1. 线性变换与合同矩阵 2.
一、二阶行列式的引入 用消元法解二元线性方程组. 一、二阶行列式的引入 用消元法解二元线性方程组.
第三章 函数逼近 — 最佳平方逼近.
《高等数学》(理学) 常数项级数的概念 袁安锋
常用逻辑用语复习课 李娟.
第一章 行列式 第五节 Cramer定理 设含有n 个未知量的n个方程构成的线性方程组为 (Ⅰ) 由未知数的系数组成的n阶行列式
性別平等教育輔導團 到校服務 臺南市立崇明國民中學 總務主任 顏銘志.
树的基本概念 离散数学─树 南京大学计算机科学与技术系.
中四編班 原則與程序簡介.
《数据结构》课程简介 李武军 南京大学计算机科学与技术系 2016年秋季.
树 无向树及其应用 生成树 根树及其应用.
Copyright © 《离散数学》精品课程小组
大学本科生课程 离 散 数 学 第16章 树 软件与理论教研室.
树和二叉树(四).
赵海燕 软件研究所 14 Apr 第5章 树与二叉树 之三 赵海燕 软件研究所 14 Apr
Chapter9 Priority Trees
第12章 樹狀搜尋結構 (Search Trees)
元素替换法 ——行列式按行(列)展开(推论)
§2 求导法则 2.1 求导数的四则运算法则 下面分三部分加以证明, 并同时给出相应的推论和例题 .
第一章 函数 函数 — 研究对象—第一章 分析基础 极限 — 研究方法—第二章 连续 — 研究桥梁—第二章.
第六章 树与森林 树和森林的概念 二叉树 (Binary Tree) 二叉树的表示
动态规划(Dynamic Programming)
使用矩阵表示 最小生成树算法.
无向树和根树.
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
第一章 函数与极限.
计算.
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
第18讲 无向树与有向树 重点内容: 1.无向树. 2.有向树..
第一章 打开物理世界的大门.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
离散数学─归纳与递归 南京大学计算机科学与技术系
3.3 垂径定理 第2课时 垂径定理的逆定理.
第十章 双线性型 Bilinear Form 厦门大学数学科学学院 网址: gdjpkc.xmu.edu.cn
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第4章 Excel电子表格制作软件 4.4 函数(一).
第九节 赋值运算符和赋值表达式.
iSIGHT 基本培训 使用 Excel的栅栏问题
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
1.设A和B是集合,证明:A=B当且仅当A∩B=A∪B
树和图 tree and graph 蔡亚星.
第七、八次实验要求.
基于最大margin的决策树归纳 李 宁.
学习目标 1、了解基本运算符 2、运算符优先级.
2.2矩阵的代数运算.
分数再认识三 真假带分数的练习课.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
《离散结构》 二元运算性质的判断 西安工程大学计算机科学学院 王爱丽.
主讲教师 欧阳丹彤 吉林大学计算机科学与技术学院
第四节 向量的乘积 一、两向量的数量积 二、两向量的向量积.
数据表示 第 2 讲.
第三节 数量积 向量积 混合积 一、向量的数量积 二、向量的向量积 三、向量的混合积 四、小结 思考题.
树的基本概念.
第10章 二元搜尋樹 (Binary Search Tree)
第七章 搜索结构 东南大学计算机学院 方效林 本课件借鉴了清华大学殷人昆老师 和哈尔滨工业大学张岩老师的课件.
2019年9月11日星期三 离散  数学 计算机学院 冯伟森 2019年9月11日星期三.
§4.5 最大公因式的矩阵求法( Ⅱ ).
本节内容 1. 平衡二叉树的定义 2.平衡化旋转 3.平衡二叉排序树的插入操作 昆山爱达人信息技术有限公司
离散数学─归纳与递归 南京大学计算机科学与技术系
一元一次方程的解法(-).
最小生成树 最优二叉树.
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
第十二章 树 主要内容 无向树及其性质 生成树 根树及其应用.
9.3多项式乘多项式.
Presentation transcript:

树的应用 离散数学─树 南京大学计算机科学与技术系

内容提要 表达式的(逆)波兰记法 二叉搜索树 决策树 前缀码 Huffman编码(算法)

表达式的根树表示  / /   用根树表示表达式:内点对应于运算符,树叶对应于运算分量。 举例:((x+y)2+ ((x-4)/3)

表达式的(逆)波兰表示法 (x+y)2+ ((x-4)/3) 前缀形式(波兰表示法) 后缀形式(逆波兰表示法) / 中缀形式 

中缀表示法的缺陷 中缀形式:x+y/x+3 / / 有3种解释: + (x+y)/(x+3) x+y/x+3 x+y/(x+3) + 不同的根树有相同的中缀形式。 前缀与后缀则有一定的唯一性。(p. 565: 26-27)

前缀表示法(波兰表示法) (x+y)/(x+3) x+y/x+3 / / /+xy+x3 + ++x/yx3 x+y/(x+3) 从右向左,遇到运算符,对右边紧接着的2个运算对象进行运算

后缀表示法(逆波兰表示法) (x+y)/(x+3) xy+x3+/ x+y/x+3 xyx/+3+ / / + x+y/(x+3) 从左向右,遇到运算符,对左边紧接着的2个运算对象进行运算

后缀表示法(逆波兰表示法) (a*(b+c)+d*(e*f))/(g+(h-i)*j) 逆波兰表示 / + 从左往右,遇到运算符,根据运算符所需运算分量个数确定前面的元素作为运算分量。 不需要括弧唯一地表示计算顺序。

后缀表达式求值 7 2 3 * - 4  9 3 / + 7 6 - 4  9 3 / + 1 4  9 3 / + 1 9 3 / + 1 3 + 4

复合命题的根树表示 命题:((pq))  (pq) p  q    后缀形式:pqpq

二叉搜索树 二叉搜索树满足下列条件 二叉树,各顶点的子女非左即右,左或右都不超过一个。 每个顶点有一个唯一的标号,该标号取自一个全序集。 若u是树中任意的顶点,则: u 的左子树中任意顶点的 标号小于u 的标号。 u 的右子树中任意顶点的 标号大于u 的标号。 9 8 7 6 5 3 2 1 4

构造二叉搜索树(举例) mathematics, physics, geography, zoology, meteorology, geology, psychology, chemistry Psychology Zoology Physics Meteorology Geology Chemistry Geography Mathematics

mathematics, physics, geography, zoology, … 构造二叉搜索树(举例) mathematics, physics, geography, zoology, … Physics Mathematics Mathematics Zoology Physics Geography Mathematics Physics Geography Mathematics

二叉搜索树算法 Procedure insertion(T: binary search tree, x:item) //定位或添加 v:=root of T //v可能为null if v=null then add a vertex to the tree and label it with x while v !=null and label(v) != x { if x < label(v) then if left child of v !=null then v:= left child of v else add new vertex as a left child of v and set v:=null else if right child of v !=null then v:= right child of v else add new vertex as a right child of v and set v:=null } if v is null then label new vertex with x and let v be this new vertex return v

决策树 这样的根树,每个内点对应一次决策,子树对应于 该决策的后果。根到树叶的通路为一个解。 举例:8枚硬币,其中7个等重,一个重量较轻的是伪币,使用天平找出伪币,至少多少次称重? 3元树,至少2次称重才能确保找到。  ① ② ③ ④ ⑤ ⑥  ①  ②  ⑧  ⑦ ⑤ ④

决策树 以决策树为模型,排序算法最坏情形复杂性的下界。 基于二叉比较的排序算法至少需要log (n!)次比较。 n!个树叶,其二叉树的高度至少为log (n!) (n log n)

编码 如何从信号流中识别字符 等长度编码 vs. 不等长度编码 例子:对包含{a(45),b(13),c(12),d(16),e(9),f(5)}6个字符的10万个字符的数据文件编码,每个字符后面的数字表示该字符出现的频率(%)。 编码方案一:a(000), b(001), c(010), d(011), e(100), f(101); 则文件总长度30万字位。 编码方案二:a(0), b(101), c(100), d(111), e(1101), f(1100); 则文件总长度22.4万字位,空间节省四分之一。

不等长编码的分隔 如何从信号流中识别不等长编码表示的字符 显式表示长度:专用位或特定结束信号 匹配的唯一性(比如,前缀码) 如果符号串可以表示成符号串1和2的并置,则1称为的一个前缀。(注意:1和2可以是空串。) 设A={1,2,…,m}是符号串的集合,且对任意i,jA, 若ij, i与j互不为前缀,则称A为前缀码。 若A中的任意串i只含符号0和1, 则称A是二元前缀码。

用二叉树生成二元前缀码 生成方法 给边标号:对内点,对其出边标上号,左为0,右为1。 给叶编号:从根到每个树叶存在唯一的通路,构成该通路的边的标号依次并置,所得作为该树叶的编号。 给定一棵完全二叉树,可以产生唯一的二元前缀码。 0010 0011 01 10 11 000 1

最优前缀码 问题:二进前缀码A={1,2,…,m}表示m个不同的字母,如果各字母使用频率不同,如何设计编码方案可以使总传输量最少。 基本思想:使用频率高的字母用尽量短的符号串表示。 问题的解:若用频率(相对值)作为树叶的权,最佳二元前缀码对应的二叉树应该是最优二叉树。

最优二叉树 若T是二叉树,且每个叶v1,v2,…,vt带数值权w1,w2,…wt, 则二叉树T的权W(T)定义为: ti=1wil(vi), 其中:l(vi)表示vi的层数。 具有相同权序列的二叉树中权最小的一棵树称为最优二叉树。 2 2 2 5 2 2 2 3 3 5 3 3 3 3 5 3 3 5 2 2 W(T)=38 W(T)=47 W(T)=36 W(T)=34 注意:最优二叉树一定是完全二叉树(t2)

Huffman Coding (1952) 输入:正实数序列w1,w2,…,wt。 输出:具有t个树叶,其权序列为w1,w2,…,wt的最优二叉树。 过程: T棵根树(森林),其根的权分别是w1,w2,…,wt。 选择根权最小的两棵树,以它们为左、右子树(合并)生成新的二叉树,其根权等于2棵子树的根权之和。 重复第2步,直至形成一棵树。 注意:结果可能不唯一(如果“当前”权最小顶点对不唯一)。

霍夫曼编码: 举例 例子 :开始序列:2,2,3,3,5 1步后:4,3,3,5 2步后:4,6,5 3步后:9,6 15 6 6 9 4 W(T)=34

一个应用示例 八个字符的传输问题 假设八个字符的频率如下: 则对应的权为: 0:25% 1: 20% 2: 15% 3: 10% 0:25% 1: 20% 2: 15% 3: 10% 4: 10% 5: 10% 6: 5% 7: 5% 则对应的权为: 5,5,10,10,10,15,20,25 1 1 1 20 01 25 1 11 1 10 10 1 15 001 100 101 10 1 0001 传送1个字符的加权平均长度:2.85 5 5 00000 00001

作业 教材[10.2, 10.3] p.551: 5, 8, 24, 26 p.564: 22, 23, 24

Huffman算法的正确性 设C是字母表,其中每个字符c的频率为f [c]。若x,y是两个频率最小的字符,则必存在C的一种最优前缀码,使得x,y的编码仅有最后一位不同。 T T’ T” y b x y a a y a b x b x T为任意最优前缀码 在上图的变换中,二叉树的权保持不变,即:W(T)W(T ’) W(T ”) W(T)

保持权不变的变换

Huffman算法的正确性(续) C是字母表,f [c]为字符c的频率,x,y是两个频率最小的字符。令C’=C-{x,y}{z}, f [z]=f [x]+f [y], 若T ’是C’的最优二叉树,则将顶点z替换为分支点,并以x,y为其子女,所得T是C的一棵最优二叉树。