叶倩琳实验四贪心算法:Huffman编码问题实现
需积分: 0 152 浏览量
更新于2024-04-03
收藏 213KB DOCX 举报
实验四中,叶倩琳在2019年04月18日完成了贪心算法的任务。问题一是关于Huffman编码的实验,测试数据为:X={zhejiang university of technology,computer college} Y={1310773597218806522025}。编码实现的代码如下:
```python
import heapq
class Node:
def __init__(self, char, freq):
self.char = char
self.freq = freq
self.left = None
self.right = None
def __lt__(self, other):
return self.freq < other.freq
def encode(root, code, data):
if root is None:
return
if root.char:
data[root.char] = code
encode(root.left, code + "0", data)
encode(root.right, code + "1", data)
def huffman_encoding(data):
pq = [Node(k, v) for k, v in data.items()]
heapq.heapify(pq)
while len(pq) > 1:
left = heapq.heappop(pq)
right = heapq.heappop(pq)
internal = Node(None, left.freq + right.freq)
internal.left = left
internal.right = right
heapq.heappush(pq, internal)
root = pq[0]
codes = {}
encode(root, "", codes)
encoded_data = ""
for char in data:
encoded_data += codes[char]
return encoded_data, root
data = {"z": 1, "h": 1, "e": 5, "j": 1, "i": 3, "a": 1, "n": 2, "g": 2, " ": 6,
"u": 1, "v": 1, "r": 2, "s": 1, "t": 3, "y": 1, "o": 4, "f": 1, "c": 2,
"m": 1, "p": 1, "l": 3}
encoded_data, root = huffman_encoding(data)
print("Encoded data:", encoded_data)
```
以上代码实现了Huffman编码的过程,通过贪心算法构建最优编码树,并将数据进行编码。叶倩琳成功完成了这个任务,展示了她在算法实现上的能力和专业知识。
2022-08-08 上传
2022-08-08 上传
2022-08-08 上传
2022-08-08 上传
2022-08-08 上传
点击了解资源详情
点击了解资源详情
2024-11-04 上传
小明斗
- 粉丝: 41
- 资源: 329
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能