【软考 霍夫曼编码的文档压缩比】

霍夫曼编码的文档压缩比计算基于字符频率的最优编码分配,以下是详细步骤及相关案例:


一、压缩比计算公式

[
\text{压缩比} = \frac{\text{压缩前总比特数}}{\text{压缩后总比特数 + 编码表存储开销}}
]
通常以 比率(如 3:1)百分比(如 33%) 表示。
:实际应用中需包含编码表的存储开销,但理论计算常忽略此部分以简化。


二、计算步骤与案例演示

案例背景

假设一篇英文文档包含字符 A, B, C, D,出现频率如下:

字符出现次数频率(%)
A512.8%
B923.1%
C1230.8%
D1333.3%
总字符数:39。

步骤1:构建霍夫曼树
  1. 按频率升序排列A(5), B(9), C(12), D(13)
  2. 合并最小节点
    • 合并 A(5)B(9) → 新节点 14
    • 合并 14C(12) → 新节点 26
    • 合并 26D(13) → 根节点 39
      霍夫曼树结构
				        39/    \26      13 (D)/  \14   12 (C)/  \5 (A) 9 (B)
步骤2:生成编码表
  • 左分支为0,右分支为1
    字符编码编码长度
    A0003位
    B0013位
    C012位
    D11位

步骤3:计算压缩前后比特数
  1. 压缩前(假设固定8位/字符):
    [
    39 \times 8 = 312 \text{ 位}
    ]

  2. 压缩后(仅数据部分):
    [
    (5 \times 3) + (9 \times 3) + (12 \times 2) + (13 \times 1) = 15 + 27 + 24 + 13 = 79 \text{ 位}
    ]

  3. 编码表存储开销(假设额外存储字符与编码):

    • 每个字符需存储 字符(8位) + 编码长度(4位) + 编码内容(变长)
    • 总开销:4字符 × (8+4+3)位 ≈ 60位(近似值)。
  4. 总压缩后比特数
    [
    79 \text{(数据)} + 60 \text{(编码表)} = 139 \text{ 位}
    ]

  5. 压缩比
    [
    \text{压缩比} = \frac{312}{139} \approx 2.24:1 \quad \text{或} \quad 44.6%
    ]


三、简化案例(忽略编码表开销)

若忽略编码表存储,仅计算数据部分:
[
\text{压缩比} = \frac{312}{79} \approx 3.95:1 \quad \text{或} \quad 25.3%
]


四、关键影响因素

  1. 字符频率分布
    • 高频字符越多,压缩比越高(如案例中 D 仅需1位)。
  2. 编码表存储方式
    • 动态编码(如自适应霍夫曼编码)可减少存储开销。
  3. 文档规模
    • 文档越大,编码表开销占比越小,压缩比越接近理论值。

五、实际应用注意事项

  • 二进制存储优化:编码表需按二进制紧凑存储(如位掩码)。
  • 动态编码:适用于流式数据(如网络传输),无需预存编码表。
  • 与其他算法结合:如先使用LZ77压缩重复字符串,再用霍夫曼编码进一步压缩。

六、总结

霍夫曼编码通过为高频字符分配短码,显著降低文档存储空间。实际压缩比需综合考虑字符分布和编码表开销,理论最大压缩比由字符熵决定。

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

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

相关文章

关闭VSCode 自动更新

参考:关闭VSCode 自动更新_vscode关闭自动更新-CSDN博客 vscode的设置 Update: Mode Update: Enable Windows Background Updates Extensions: Auto Check Updates Extensions: Auto Update

Flask框架搭建

1、安装Flask 打开终端运行以下命令: pip install Flask 2、创建项目目录 在Windows上: venv\Scripts\activate 执行 3、创建 app.py 文件 可以在windows终端上创建app.py文件 (1)终端中创建 使用echo命令 echo "fr…

5G-A和未来6G技术下的操作系统与移动设备变革:云端化与轻量化的发展趋势

目录 5G技术带来的革命性变革 云端化操作系统的实现路径 完全云端化模式 过渡性解决方案 未来操作系统的发展方向 功能架构演进 安全机制强化 移动设备的形态变革 终端设备轻量化 物联网设备简化 实施挑战与应对策略 技术挑战 商业模式创新 总结与展望 5G技术作为…

【漫话机器学习系列】261.工具变量(Instrumental Variables)

工具变量(Instrumental Variables)通俗图解:破解内生性困境的利器 在数据建模与因果推断过程中,我们经常遇到一个棘手问题:内生性(Endogeneity)。它会导致模型估计产生偏差,进而误导…

CSS:颜色的三种表示方式

文章目录 一、rgb和rgba方式二、HEX和HEXA方式(推荐)三、hsl和hsla方式四、颜色名方式 一、rgb和rgba方式 10进制表示方法 二、HEX和HEXA方式(推荐) 就是16进制表示法 三、hsl和hsla方式 语法:hsl(hue, satura…

支付宝授权登录

支付宝授权登录 一、场景 支付宝小程序登录,获取用户userId 二、注册支付宝开发者账号 1、支付宝开放平台 2、点击右上角–控制台,创建小程序 3、按照步骤完善信息,生成密钥时会用到的工具 4、生成的密钥,要保管好&#xff…

涂色不踩雷:如何优雅解决 LeetCode 栅栏涂色问题

文章目录 摘要描述例子: 题解答案(Swift)题解代码分析动态规划核心思路初始条件 示例测试及结果示例 1:示例 2:示例 3: 时间复杂度空间复杂度总结实际场景联系 摘要 在用户体验和界面设计中,颜…

GEE计算 RSEI(遥感生态指数)

🛰️ 什么是 RSEI?为什么要用它评估生态环境? RSEI(遥感生态指数,Remote Sensing Ecological Index) 是一种通过遥感数据计算得到的、综合反映区域生态环境质量的指标体系。 它的设计初衷是用最少的变量&…

图像处理:预览并绘制图像细节

前言 因为最近在搞毕业论文的事情,要做出一下图像细节对比图,所以我这里写了两个脚本,一个用于框选并同时预览图像放大细节,可显示并返回框选图像的坐标,另外一个是输入框选图像的坐标并将放大的细节放置在图像中&…

基于javaweb的SSM驾校管理系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…

限制 MySQL 服务只能被内网 `192.168.1.*` 网段的设备访问

1. 修改 MySQL 配置文件 MySQL 默认监听所有网络接口(0.0.0.0),需要将其绑定到内网 IP 地址或限制访问范围。 (1)编辑 MySQL 配置文件 找到 MySQL 的主配置文件,通常是 /etc/my.cnf 或 /etc/mysql/my.cnf。使用文本编辑器打开: sudo vi /etc/my.cnf(2)设置 bind-a…

uniapp-商城-55-后台 新增商品(分类、验证和弹窗属性)

1、概述 在前面 ,我们将商品页面的布局给完成了,这里来对表单的标签输入进行校验,看看这里的校验还是不是也需要兼容微信小程序,还有没有前面遇到的自定义正则进行校验的情况。 另外这里还需要完成商品属性的添加,就是…

PyInstaller 打包后 Excel 转 CSV 报错解决方案:“excel file format cannot be determined“

一、问题背景 在使用 Python 开发 Excel 转 CSV 工具时,直接运行脚本(python script.py)可以正常工作,但通过 PyInstaller 打包成可执行文件后,出现以下报错: excel file format cannot be determined, you must specify an engine manually 该问题通常发生在使用pandas…

【HTML 全栈进阶】从语义化到现代 Web 开发实战

目录 🌟 前言🏗️ 技术背景与价值🩹 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🧠 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🔧 关键技术模块说明⚖️ 技术选…

小结:网页性能优化

网页性能优化是提升用户体验、减少加载时间和提高资源利用率的关键。以下是针对网页生命周期和事件处理的性能优化技巧,结合代码示例,重点覆盖加载、渲染、事件处理和资源管理等方面。 1. 优化加载阶段 减少关键资源请求: 合并CSS/JS文件&a…

【AI学习】AI大模型技术发展研究月报的生成提示词

AI大模型技术发展研究月报生成提示词 请输出AI大模型技术发展研究月报,要求如下: —————————— 任务目标 在今天({{today}})往前连续 30 天内,检索已正式公开发表的、与AI大模型(参数量 ≥10B&am…

AI 实践探索:辅助生成测试用例

背景 目前我们的测试用例主要依赖人工生成和维护,AI时代的来临,我们也在思考“AI如何赋能业务”,提出了如下命题: “探索通过AI辅助生成测试用例,完成从需求到测试用例生成的穿刺”。 目标 找全测试路径辅助生成测…

C#实现访问远程硬盘(附源码)

在现实场景中,我们经常用到远程桌面功能,而在某些场景下,我们需要使用类似的远程硬盘功能,这样能非常方便地操作对方电脑磁盘的目录、以及传送文件。那么,这样的远程硬盘功能要怎么实现了? 这次我们将给出…

02.Golang 切片(slice)源码分析(一、定义与基础操作实现)

Golang 切片(slice)源码分析(一、定义与基础操作实现) 注意当前go版本代码为1.23 一、定义 slice 的底层数据是数组,slice 是对数组的封装,它描述一个数组的片段。两者都可以通过下标来访问单个元素。 数…

记参加一次数学建模

题目请到全国大学生数学建模竞赛下载查看。 注:过程更新了很多文件,所有这里贴上的有些内容不是最新的(而是草稿)。 注:我们队伍并没有获奖,文章内容仅供一乐。 从这次比赛,给出以下赛前建议 …