最优二叉树的生成及应用

最优二叉树的生成及应用

作者:张广学

来源:《现代电子技术》2008年第10期

摘 要:衡量一个算法的优劣有许多因素,效率就是其中之一。而效率指的就是算法的执行时间。提高效率是软件开发必须注重的问题。对同一个问题往往有多个算法可以解决,在同等条件下,执行时间短的算法其效率是最高的。从霍夫曼树的定义以及霍夫曼算法出发,介绍如何构造霍夫曼树以及利用霍夫曼算法优化程序设计的原理,重点讨论在判定类问题中利用霍

夫曼树可以建立最佳判定算法,提高程序的执行速度。

关键词:霍夫曼树;霍夫曼算法;最佳判定算法;执行时间

中图分类号:TP183 文献标识码:B

文章编号:1004-373X(2008)10-112-

(Shaanxi Spinning and Weaving Clothing Occupation Technology,Xianyang,71200 Abstract:Efficiency is one of factors to judge an algorithm,it refers to execution time of algorithm to improve the efficiency is important problem in software development.In the same

condition,it has high efficient in a short execution time.According to Huffman algorithm and Huffman

tree,how to build Huffman tree and using Huffman algorithm to optimize the program design are

Keywords:

Huffman

1 引 言

衡量一个算法的优劣有许多因素,效率就是其中之一。而效率指的就是算法的执行时间。提高效率是软件开发必须注重的问题。对同一个问题往往有多个算法可以解决,在同等条件下,执行时间短的算法其效率是最高的。最优二叉树最早是由霍夫曼于1952年提出的,所以被称为霍夫曼树,

相应的算法称为霍夫曼算法。

霍夫曼树又称最优二叉树,是指带权路径长度最小的二叉树。在软件开发中,都要解决大量的判定类问题,解决这类问题的习惯做法常是自上而下(或自下而上)或由高到低(或由低到高)的逐个判断。而大量的判定问题中普遍存在着满足中间条件的多,满足两头条件的少的现象(近似于正态分布)

。利用霍夫曼树可以建立最佳判定算法,大大提高程序的执行速度。

2

霍夫曼树定义及霍夫曼算法

2.1

霍夫曼树定义

一般地,假设有 个权值{w1,w2,…,wn},如何构造有n个叶子结点的二叉树,每个叶子 结点带有权值wi且带权路径长度WPL最小,这是一个很有实际意义的问题,霍夫曼早在1952年就提出一个带有一般规律的算法,很好地解决这个问题,因此人们把这种具有最小路径长度的二叉树称为霍夫曼树或最优二叉树,相应的算法称为霍夫曼算法。其中:

WPL=∑ni=1wili,wi为第i个叶子结点的权值,li为从根结点到第i个叶子结点的路径长度,为二叉树的叶子个数。

2.2

霍夫曼算法

(1) 根据给定的 个权值{w1,w2,…,wn}构造n棵二叉树的集合F={T1,T2,…,Tn},其中每

棵二叉树Ti中只有一个带权为wi的根结点,其左、右子树均空;

(2) 在F中选取2棵根结点的权值最小的树作为左、右子树构造一棵新的二叉树,且置新

的二叉树的根结点的权值为其左、右子树上根结点的权值之和;

(3) 在F中删除这2棵二叉树,同时将新得到的二叉树加入F

中; (4) 重复(2)和(3),直到

只含一棵二叉树为止。这棵二叉树便是霍夫曼树。

[HTH]例1 给定一组权值{2,4,7,8,10,12}

构造霍夫曼树。

按霍夫曼算法构造的最优二叉树如下:

其中根结点上标注的数字代表相应结点的权值。

3

霍夫曼树的应用

霍夫曼树的应用很广,在不同的应用中叶子结点的权值可以有不同的解释。当霍夫曼树应用到信息编码中,权值可看成是某个符号出现的频率;当应用到判定类问题中,可以看成是某类数据出现的频率等。下面介绍霍夫曼树在判定类问题中的应用。

图1 霍夫曼算法构造的的最优二叉树

利用霍夫曼树可以构成最佳判定过程。判定过程可以看成二叉树,以开始判断作为根结点,判断的结果分成二叉,再对其中的分支作进一步的判断。如果将权值大的比较放的深度较深,那么整棵比较树的权值就会加大,因此只有将权值大的比较放在深度较浅处,将权值小的比较

最优二叉树的生成及应用

作者:张广学

来源:《现代电子技术》2008年第10期

摘 要:衡量一个算法的优劣有许多因素,效率就是其中之一。而效率指的就是算法的执行时间。提高效率是软件开发必须注重的问题。对同一个问题往往有多个算法可以解决,在同等条件下,执行时间短的算法其效率是最高的。从霍夫曼树的定义以及霍夫曼算法出发,介绍如何构造霍夫曼树以及利用霍夫曼算法优化程序设计的原理,重点讨论在判定类问题中利用霍

夫曼树可以建立最佳判定算法,提高程序的执行速度。

关键词:霍夫曼树;霍夫曼算法;最佳判定算法;执行时间

中图分类号:TP183 文献标识码:B

文章编号:1004-373X(2008)10-112-

(Shaanxi Spinning and Weaving Clothing Occupation Technology,Xianyang,71200 Abstract:Efficiency is one of factors to judge an algorithm,it refers to execution time of algorithm to improve the efficiency is important problem in software development.In the same

condition,it has high efficient in a short execution time.According to Huffman algorithm and Huffman

tree,how to build Huffman tree and using Huffman algorithm to optimize the program design are

Keywords:

Huffman

1 引 言

衡量一个算法的优劣有许多因素,效率就是其中之一。而效率指的就是算法的执行时间。提高效率是软件开发必须注重的问题。对同一个问题往往有多个算法可以解决,在同等条件下,执行时间短的算法其效率是最高的。最优二叉树最早是由霍夫曼于1952年提出的,所以被称为霍夫曼树,

相应的算法称为霍夫曼算法。

霍夫曼树又称最优二叉树,是指带权路径长度最小的二叉树。在软件开发中,都要解决大量的判定类问题,解决这类问题的习惯做法常是自上而下(或自下而上)或由高到低(或由低到高)的逐个判断。而大量的判定问题中普遍存在着满足中间条件的多,满足两头条件的少的现象(近似于正态分布)

。利用霍夫曼树可以建立最佳判定算法,大大提高程序的执行速度。

2

霍夫曼树定义及霍夫曼算法

2.1

霍夫曼树定义

一般地,假设有 个权值{w1,w2,…,wn},如何构造有n个叶子结点的二叉树,每个叶子 结点带有权值wi且带权路径长度WPL最小,这是一个很有实际意义的问题,霍夫曼早在1952年就提出一个带有一般规律的算法,很好地解决这个问题,因此人们把这种具有最小路径长度的二叉树称为霍夫曼树或最优二叉树,相应的算法称为霍夫曼算法。其中:

WPL=∑ni=1wili,wi为第i个叶子结点的权值,li为从根结点到第i个叶子结点的路径长度,为二叉树的叶子个数。

2.2

霍夫曼算法

(1) 根据给定的 个权值{w1,w2,…,wn}构造n棵二叉树的集合F={T1,T2,…,Tn},其中每

棵二叉树Ti中只有一个带权为wi的根结点,其左、右子树均空;

(2) 在F中选取2棵根结点的权值最小的树作为左、右子树构造一棵新的二叉树,且置新

的二叉树的根结点的权值为其左、右子树上根结点的权值之和;

(3) 在F中删除这2棵二叉树,同时将新得到的二叉树加入F

中; (4) 重复(2)和(3),直到

只含一棵二叉树为止。这棵二叉树便是霍夫曼树。

[HTH]例1 给定一组权值{2,4,7,8,10,12}

构造霍夫曼树。

按霍夫曼算法构造的最优二叉树如下:

其中根结点上标注的数字代表相应结点的权值。

3

霍夫曼树的应用

霍夫曼树的应用很广,在不同的应用中叶子结点的权值可以有不同的解释。当霍夫曼树应用到信息编码中,权值可看成是某个符号出现的频率;当应用到判定类问题中,可以看成是某类数据出现的频率等。下面介绍霍夫曼树在判定类问题中的应用。

图1 霍夫曼算法构造的的最优二叉树

利用霍夫曼树可以构成最佳判定过程。判定过程可以看成二叉树,以开始判断作为根结点,判断的结果分成二叉,再对其中的分支作进一步的判断。如果将权值大的比较放的深度较深,那么整棵比较树的权值就会加大,因此只有将权值大的比较放在深度较浅处,将权值小的比较


相关文章

  • 企业移动应用管理系统
  • 关于展示类移动应用的调研报告 关于SST 销售展示管理系统的产品报告 2014年5月1日 北京睿智开元科技有限公司 刘浩产品部 一.产品规划 1.产品方向 企业销售展示管理系统定义为帮助企业展示其产品.服务等企业信息而创建移动应用的管理系统 ...查看


  • 促红细胞生成素的研究进展
  • 促红细胞生成素的研究进展 摘要 随着现代科学技术的进步,一些新型的技术,设备,理念也随之出现,人们对促红细胞生成素的研究也越来越成熟,这些使得促红细胞生成素能更加有效安全的满足人们的需要,其市场表现不俗,本文综述了促红细胞生成素研究发展的历 ...查看


  • 合并报表操作步骤及顺序
  • 合并报表U861 操作指南 包括操作步骤和操作数据两部分. 1.0操作步骤 1.1初始设置 合并报表系统是用友ERP -U8管理软件中的一个组成部分,他的初始工作分别在系统管理和企业平台中进行.例如:合并报表的公司设立工作是在企业平台中进行 ...查看


  • 江西省电子证照与服务系统方案建议书
  • 江西省电子证照与服务系统 方案建议书 徐孝青 [1**********] 目录 一. 电子证照的需求分析 . ................................................................. ...查看


  • 血液透析患者重组人促红细胞生成素的应用
  • 血液透析患者重组人促红细胞生成素的应用 [摘要]目的皮下.静脉注射给药两组应用重组人促红细胞生成素的安全性.有效性的对比,借以探讨重组人促红细胞生成素的合理应用.方法72例血液透析患者随机分组,观察hb .hct .adrs .结果随治疗时 ...查看


  • CASS绘制等高线
  • 浅谈如何利用CASS软件绘制地形图和断面图 摘要:CASS地形地籍成图软件系统在我国测绘行业的应用比较广泛.文章对利用CASS软件绘制地形图和断面图的方法进行了探讨,通过其在某河道地形图和断面图的绘制工作中证明了这种方法的便捷性和高效性. ...查看


  • 实例分析 用ClipMate增强剪贴板功能
  • 引:剪贴板是Windows内置的一个后台工作的具.利用它,我们可以使用"剪切"."复制"."粘贴"命令移动或复制数据,可惜它每次只能移动或复制一个的数据.为此,我们通过2个实例来为 ...查看


  • 财务管理软件分析~金算盘
  • Wisdom Cloud 目 录 一.金算盘财务管理软件 . ....................................................................................... 2 ...查看


  • android数字签名
  • 在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的protectionLevel为signature,那么就只有那些跟该permi ...查看


  • 实体框架简介
  • 实体框架简介 Visual Studio 2008 其他版本 * .NET Framework 4 实体框架 是 ADO.NET中的一组支持开发面向数据的软件应用程序的技术.面向数据的应用程序的架构师和开发人员曾为实现两个迥然不同的目标费尽 ...查看


热门内容