JAVA第26天——赫夫曼编码(一)——基础知识
2022/1/8 14:04:29
本文主要是介绍JAVA第26天——赫夫曼编码(一)——基础知识,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Huffman编码
一、赫夫曼(Huffman)树
- 又叫最优二叉树:是一种带权路径最小的树。
- 路径长度:例如:根节点到左孩子就是一个路径长度。
- 树的路径长度:从树根到每一个节点的路径长度之和。
- 树的带权路径长度:树中所有叶子节点的带权路径之和,记作WPL。
- WPL最小:当WPL最小时的二叉树,称为最优二叉树或赫夫曼树。
- 图例:
二、前缀编码
- 若要设计长短不等的编码,则必须是任意一个字符的编码都不是另一个字符的编码的前缀,这种编码称为前缀编码。
- 图例:
三、赫夫曼编码
- 由赫夫曼树,得到的前缀编码,就是赫夫曼编码。
- 赫夫曼树没有度为1的节点。
- n个叶子节点,一定有2*n-1个节点。
- 赫夫曼编码:从叶子节点出发,走一条从叶子到根的路径。
- 解码(译码):从根出发,走一条从根到叶子的路径。
- 设计时应该用,三叉链表。
- Huffman 算法
给定 w1, w2, … , wi
(1)作 t 片树叶,分别以 w1, w2, … , wi 作为权。
(2)在所有入度为0的顶点(不一点是树叶)中选取两个权最小的顶点,添加一个新分支,它以这2个顶点为儿子,其权等于这两个儿子的权之和。
(3)重复(2),直到只有1个入度为0的顶点为止。
WPL等于所有分支点的权之和。
这篇关于JAVA第26天——赫夫曼编码(一)——基础知识的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25Java创意资料:新手入门的创意学习指南
- 2024-11-25JAVA对接阿里云智能语音服务资料详解:新手入门指南
- 2024-11-25Java对接阿里云智能语音服务资料详解
- 2024-11-25Java对接阿里云智能语音服务资料详解
- 2024-11-25JAVA副业资料:新手入门及初级提升指南
- 2024-11-25Java副业资料:入门到实践的全面指南
- 2024-11-25Springboot应用的多环境打包项目实战
- 2024-11-25SpringBoot应用的生产发布项目实战入门教程
- 2024-11-25Viite多环境配置项目实战:新手入门教程
- 2024-11-25Vite多环境配置项目实战入门教程