首页 > 其他分享 >Huffman 编码的估计

Huffman 编码的估计

时间:2023-12-12 12:01:46浏览次数:27  
标签:编码 right frac log ell sum 估计 Huffman left

\(\newcommand{\HH}{\operatorname{H}}\)

我们熟知一些说法, 比如一个二叉树如果第 \(i\) 个节点的访问次数是 \(w_i\), 那么最优的建树会使得总共访问节点次数是

\[O\left(\sum w_i \log \frac{W}{w_i}\right ) \]

量级的, 其中 \(W = \sum w_i\).

那么这个说法到底有多精确呢? 我们不妨考虑最常考虑的 Huffman 树问题, 也不妨把次数转化成频率, 设一个节点被访问的频率是 \(p_i\), 也即 \(\sum p_i = 1\), 那么我们希望一次随机访问期望深度是

\[O\left( \sum p_i \log \frac 1{p_i} \right), \]

这正是信息熵的式子, 写作 \(\HH (p) = \sum p\log(1/p)\).

下界

我们首先证明任何树, 随机访问的深度都至少是 \(\HH_2(p)\).

当合并两个频率分别为 \(x, y\) 的子树时, 我们会支付 \(x+y\) 的代价, 而注意到

\[ \begin{align*} &\quad (x+y)\log_2(x+y) - x\log_2 x - y\log_2 y\\ &= x\log_2 \left(1 + \frac y x \right) + y\log_2 \left(1 + \frac x y\right)\\ &= x\left[\log_2 \left(1 + \frac y x \right) + \frac y x\log_2 \left(1 + \frac x y\right)\right]\\ &\leq x \left[1 + \frac y x\right]\\ &= x + y, \end{align*} \]

我们利用这个裂项, 可以得到期望深度的下界.

上界

为了证明上界, 最好的方法就是直接构造一个.

Kraft 不等式. 如果对于一些非负整数 \(\ell_i\),

\[\sum 2^{-\ell_i} = 1, \]

当且仅当存在一个二叉树, 所有叶子节点构成深度的多重集是 \(\ell_i\).

证明. 留作习题. \(\square\)

上面这个不等式看起来很简单, 但有了它之后, 事情就简单很多了.

我们设 \(\ell_i = \lceil \log_2 (1/p_i)\rceil\), 这个时候就有

\[\sum 2^{-\ell_i} \leq \sum 2^{-\log_2(1/p_i)} = \sum p_i = 1, \]

所以我们稍微调整一下, 把一些 \(\ell_i\) 变小, 使得总和为 \(1\), 此时有 \(\ell_i' \leq \lceil \log_2 (1/p_i)\rceil\), 且根据 Kraft 不等式, 存在这么一颗二叉树实现它.

这个时候, 我们有期望深度

\[= \sum p_i \ell'_i \leq \sum p_i(\log_2 (1/p_i) + 1) = \HH_2(p) + 1. \]

综上, 我们有期望深度一定在 \(\HH_2(p)\) 到 \(\HH_2(p) + 1\) 之间.

标签:编码,right,frac,log,ell,sum,估计,Huffman,left
From: https://www.cnblogs.com/Elegia/p/estimate-of-huffman-coding.html

相关文章

  • ASCII编码
    一、ASCII编码简介ASCII(AmericanStandardCodeforInformationInterchange,美国标准信息交换代码)是一种基于拉丁字母的电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,涵盖了128个字符。Ascii编码解码--一个覆盖广泛主题工具的高效在线......
  • MySQL设置字符编码
    MySQL设置字符编码一、8.0设置字符集#vim/etc/mysql/my.cnf[mysqld]port=3306character-set-client-handshake=FALSEcharacter-set-server=utf8mb4collation-server=utf8mb4_unicode_ci#相对应的排序规则init_connect='SETNAMESut......
  • 深度学习面试常用代码:MHA/MQA/GQA/LN/BN/位置编码代码
    深度学习常用代码参考:https://zhuanlan.zhihu.com/p/6505754261.MHA(MultiHeadAttention)代码实现#1.MHA实现importtorchimporttorch.nnasnnimporttorch.nn.functionalasFclassScaleDotProductAttention(nn.Module):def__init__(self,):......
  • 字符编码
    什么是字符编码字符编码中的编码指的是翻译或者转换的意思即将人能理解的字符翻译成计算机能识别的数字字符编码的发展史一家独大计算机是美国人发明的,美国人想更方便的掌控计算机中的语言,于是就发明了ASCII码表这张表存储了英文字符及特殊标点和数字之间的一一对应关......
  • Arcgis分割图斑编码工具
    一、分割图斑编码:分割图斑在原图斑编码的基础上_1、_2................的续编。二、代码:#coding:utf-8importarcpyfromcollectionsimportCounterdefget_repeat_values(in_table,field):fields_values=[]witharcpy.da.SearchCursor(in_table,field)as......
  • 宗地从上到下从左到右西北角顺时针界址点编码、宗地界址点成果表、宗地四至情况说明、
    一、宗地界址点编码:从上到下从左到右每宗西北角顺时针编码,可根据界址点分类类型计算序号前面的字母。二、界址点成果表:每一宗地生成一个界址点成果表.xls,西北角界址点开始顺时针填写界址点,首先填写宗地外环界址点,最后填写宗地内环。三、宗地四至情况说明:西北角界址点开始顺时......
  • burp技术主题基本技能之使用HTML编码与前导零进行xss bypass
    使用编码对攻击进行模糊处理https://portswigger.net/web-security/all-topicsburp官网所有技术主题基础技能URLdecoded服务器端;HTMLdecoded客户端inputfilters输入过滤器:还需要对输入进行解码,检查输入安全性为什么要编码?[...]/?search=Fish+&+Chips&有特......
  • 【misc】[GFCTF 2021]重生之我在A国当间谍 --短信pdu编码
    附件下载发现只有两个文件打开flag.rar需要密码,那考虑解压密码应该是从secret.txt中获得,打开secret.txt文件试过很多加密方式都不行,考虑是短信的pdu编码PDU编码(非常经典)-CSDN博客可以使用在线短信PDU编码解码-在线工具(bugscaner.com)在线解码,这里解码第三行数据得到b......
  • Base64编码解码
    一、Base64编码技术简介Base64编码是一种广泛应用于网络传输和数据存储的编码方式。它将原始数据转换为可打印的字符形式,以便于传输和存储。Base64编码后的数据长度是原始数据长度的约3/4,具有一定的压缩效果。Base64编码解码--一个覆盖广泛主题工具的高效在线平台(amd794.co......
  • Unicode编码解码
    一、Unicode概述Unicode是一种字符编码标准,旨在解决不同字符集之间的兼容性问题。它为全球所有语言提供了一种统一的编码方式,使得各种字符能够在计算机系统中正确显示和处理。Unicode字符集包含了世界上几乎所有的字符,包括中文字符、英文字符、数字、特殊符号等。Unicode编码......