算法笔记:哈夫曼树、哈夫曼编码

news2024/11/27 0:46:16

1 字符的机内表示

2 前缀编码

  • 字符只放在叶结点中
  • 字符编码可以有不同的长度
  • 由于字符只放在叶结点中,所以每个字符的编码都不可能是其他字符编码的前缀
  • 前缀编码可被惟一解码

3 哈夫曼树

  • 哈夫曼树是一棵最小代价的二叉树,在这棵树上,所有的字符都包含在叶结点上。
  • 要使得整棵树的代价最小,显然权值大的叶子应当尽量靠近树根,权值小的叶子可以适当离树根远一些

4 哈夫曼算法

可能看这个描述不太好理解,我们看一个例子:

4.1 举例

4.2 哈夫曼编码的生成

  • 每个字符的编码是根节点到该字符的路径
    • 左枝为0,右枝为1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/978363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络的故事——确保Web安全的Https

确保Web安全的Https 文章目录 确保Web安全的Https一、HTTP 的缺点二、HTTP 加密 认证 完整性保护 HTTPS 一、HTTP 的缺点 1、明文传输 通信加密,HTTP协议中没有加密机制,但是可以通过SSL(Secure Socket Layer,安全套接字层)或TLE(Transpor…

原创AJAX + PHP 编辑器内容自动备份草稿保存到本地 (适用ueditor百度编辑器或其它) 内容变化后自动触发备份txt文件

百度自带的自动备份功能enableAutoSave存在问题, 比如第一个文章他自动备份了.等发表第二个文章时,结果把第一个文章的内容自动填充进去了.关键你还不知情!出现过多次这种情况了. 一, 百度原版的 ,具体使用方法,看这里个文章 Ueditor百度编辑器内容自动保存到本地防数据丢失 …

从零开发一款ChatGPT VSCode插件

‍本文作者是360奇舞团开发工程师 引言 OpenAI发布了ChatGPT,就像是给平静许久的互联网湖面上扔了一颗重磅炸弹,刹那间所有人都在追捧学习它。究其原因,它其实是一款真正意义上的人工智能对话机器人。它使用了深度学习技术,通过大…

Agisoft Metashape相机标定笔记

Lens Calibration(镜头标定) 使用Metashape进行自动相机标定是可能的。Metashape使用LCD显示屏作为标定目标(可选:使用打印的棋盘格图案,但需保证它是平坦的且单元格是正方形)。 相机标定步骤支持全相机标定矩阵的估计&#xff…

SpringMVC常用注解、参数传递及页面跳转

一.SpringMVC常用注解 1.1.RequestMapping RequestMapping注解是一个用来处理请求地址映射的注解,可用于映射一个请求或一个方法,可以用在类或方法上。 标注在方法上运行代码 用于方法上,表示在类的父路径下追加方法上注解中的地址将会访…

实时操作系统Freertos开坑学习笔记:(八):信号量、事件标志组、任务通知机制

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、信号量的简介1.信号量与队列的区别? 二、二值信号量及其实例1.什么是二值信号量2.二值信号量相关API函数3.二值信号量实例 三、计数型信号量四、…

在PHP8中遍历数组-PHP8知识详解

所谓遍历数组就是把数组中的变量值读取出来。遍历数组中的所有元素对程序员来说是经常使用的操作,通过遍历数组可以完成数组元素的查询工作。 这好比你去商场买东西一样,要买什么东西,就去该区域浏览一遍,以便找出适合自己的产品…

微电网多目标优化调度模型简介

参考文献: [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7

反序列化中_wakeup的绕过

文章目录 前言绕过方法变量引用属性个数不匹配(cve-2016-7124)C绕过fast-destruct其余GC回收机制 前言 反序列化中_wakeup扮演着非常重要的角色,ctf碰到很多的题目都有涉及到_wakeup绕过,写下这篇博客来总结下大部分绕过方法,其中会有例题具…

qt day6 人脸识别

在C和C中static关键字的用法 static修饰局部变量、全局变量(不能被外部引用extern|未初始化的值为0)、函数(不能被外部引用extern),不能修饰auto类型的指针(因为计算机先为静态变量分配空间,后再…

算法:删除有序数组中的重复项---双指针[3]

1、题目: 对给定的有序数组 nums 删除重复元素,在删除重复元素之后,每个元素只出现一次,并返回新的长度,上述操作必须通过原地修改数组的方法,使用 O(1) 的空间复杂度完成。 2、分析特点: 题目…

Java数组示例

数组有不同的初始化方式;int类型数组未初始化则元素默认值为0;Arrays.fill用指定的值填充数组; import java.util.Arrays;public class TestNew { public static void main(String args[]) { int i ; int[] numbers {11, 12, 13, 14, 1…

Kotlin 环境下解决属性初始化问题

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

Linux 指令心法(三)`pwd` 打印当前工作目录

文章目录 命令的概述和用途命令的用法命令行选项和参数的详细说明命令的示例命令的注意事项或提示 命令的概述和用途 pwd 是 “Print Working Directory” 的缩写。这是一个 shell 内建命令,用于在 Linux 和 Unix 系统中显示当前工作目录的完整路径。当用户在文件系…

【Mybatis源码分析】Mybatis查询流程(一级、二级缓存、懒加载原理)

Mybatis提供的三种Executor执行器 一、查询流程二、查询流程总结三、一级、二级缓存四、懒加载源码分析 一、查询流程 在讲述 Mybatis 为我们提供的三种 Executor 执行器策略之前&#xff0c;先说说默认情况下 Mybatis 的执行流程。 以下是准备调试的代码&#xff1a; <sq…

【LeetCode】19. 删除链表的倒数第 N 个结点

19. 删除链表的倒数第 N 个结点&#xff08;中等&#xff09; 方法&#xff1a;快慢指针 思路 为了找到倒数第 n 个节点&#xff0c;我们应该先找到最后一个节点&#xff0c;然后从它开始往前数 n-1 个节点就是要删除的节点。 对于一般情况&#xff1a;设置 fast 和 slow 两个…

Python0基础自学02-转义字符

Python 都有哪些转义字符&#xff0c;每个案例帮我列举一个代码案例并配上注释 Python中有很多转义字符&#xff0c;它们用于在字符串中插入特殊字符或表示一些特殊的控制序列。以下是一些常用的Python转义字符及其示例代码&#xff1a; 转义字符示例代码print("HelloWo…

学习笔记-BNF、EBNF、ABNF语法格式描述规范

目标是确认一些c/cpp的语法细节&#xff0c;需要看cpp语法定义文件。 考虑从c的语法定义文件开始确认。 考虑实现一个简化的语言定义和编译器&#xff0c;为后续的实际需求做自定义扩展。 参考网页&#xff1a; https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_f…

Linux内核源码分析 (B.2)虚拟地址空间布局架构

Linux内核源码分析 (B.2)虚拟地址空间布局架构 文章目录 Linux内核源码分析 (B.2)虚拟地址空间布局架构一、Linux内核整体架构及子系统二、Linux内核内存管理架构 一、Linux内核整体架构及子系统 Linux内核只是操作系统当中的一部分&#xff0c;对下管理系统所有硬件设备&…

R语言STAN贝叶斯线性回归模型分析气候变化影响北半球海冰范围和可视化检查模型收敛性...

原文链接&#xff1a;http://tecdat.cn/?p24334 像任何统计建模一样&#xff0c;贝叶斯建模可能需要为你的研究问题设计合适的模型&#xff0c;然后开发该模型&#xff0c;使其符合你的数据假设并运行&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 相关视频…