当前位置: 首页 > news >正文

数据结构(5.5_1)——哈夫曼树

带权路径长度:

 

结点的

有某种现实含义的数值(如表示结点的重要性等)

结点的带权路径长度

从树的根到该结点的路径长度(经过的边数)与该结点上权值的乘积

树的带权路径长度

树中所有的叶结点的带权路径长度之和(WPL,Weighted Path Length)

WPL=\sum_{i=1}^{n}w_{i}l_{i}

哈夫曼树的定义:

在含有n个带权叶结点的二叉树中,其中带权路径长度(WPL)最小的二叉树称为哈夫曼树,也称最优二叉树

 

哈夫曼树的构造 

哈夫曼树的特点:

  1. 每个初始结点最终都成为叶结点,且权值越小的结点到根结点的路径长度越大
  2. 哈夫曼树的结点总数为2n-1
  3. 哈夫曼树中不存在度为1的结点
  4. 哈夫曼树并不唯一,单WPL必然相同且为最优

例;

 哈夫曼编码:

固定长度编码——每个字符用相等长度的二进制位表示

 

可变长度编码——允许对不同字符用不等长的二进制位表示

若没有一个编码是另一个编码的前缀,则称这样的编码为前缀编码

由哈夫曼树得到哈夫曼编码——字符集中的每个字符作为一个叶子结点,各个字符出现的频度作为结点的权值,根据之前介绍的方法构造哈夫曼树 

注:哈夫曼树不唯一,故哈夫曼编码也不唯一

哈夫曼编码的作用:数据压缩

例题:用哈夫曼编码求最简化abcd字符传递

 

 

练习题:

 

总结:

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深入解析 Vue.js 的 nextTick
  • 【从零开始一步步学习VSOA开发】创建VSOA的server端
  • python 定时清理日志(schedule)
  • 2024实验班选拔考试(热身赛)
  • Windows10上安装SQL Server 2022 Express
  • MySQL的安装数据库的简单操作
  • 力扣——11.盛最多水的容器
  • 基于STM32设计的盆栽种植自动管理系统(微信小程序)(201)
  • Milvus Cloud架构详解:构建高效、可扩展的向量数据库系统
  • 分布式时序数据库TimeLyre 9.2发布:原生多模态、高性能计算、极速时序回放分析
  • C++的STL简介(四)
  • React 常用 Hooks 和使用的易错点
  • gradio在windows上公网发布踩坑指南
  • PHP高校教材管理系统-计算机毕业设计源码29810
  • 大语言模型系列 - Transformer
  • co.js - 让异步代码同步化
  • Hibernate【inverse和cascade属性】知识要点
  • HTTP--网络协议分层,http历史(二)
  • Java IO学习笔记一
  • java2019面试题北京
  • LeetCode算法系列_0891_子序列宽度之和
  • pdf文件如何在线转换为jpg图片
  • PHP的类修饰符与访问修饰符
  • React+TypeScript入门
  • Redash本地开发环境搭建
  • Zsh 开发指南(第十四篇 文件读写)
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 今年的LC3大会没了?
  • 免费小说阅读小程序
  • 如何在GitHub上创建个人博客
  • 深度学习在携程攻略社区的应用
  • 微服务核心架构梳理
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • 我们雇佣了一只大猴子...
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • ###项目技术发展史
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (1)Hilt的基本概念和使用
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (阿里云万网)-域名注册购买实名流程
  • (纯JS)图片裁剪
  • (二十四)Flask之flask-session组件
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (三)mysql_MYSQL(三)
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)winform之ListView
  • (转)四层和七层负载均衡的区别
  • .CSS-hover 的解释
  • .libPaths()设置包加载目录