Huffman编码与解码的实现与解析
1. 编码文本输入
1.1 Huffman树与优先队列
Huffman树的数据类型定义如下:
data huffman-tree : Set where
ht-leaf : string Ñ N Ñ huffman-tree
ht-node : N Ñ huffman-tree Ñ huffman-tree Ñ huffman-tree
ht-frequency : huffman-tree Ñ N
ht-frequency (ht-leaf _ f) = f
ht-frequency (ht-node f _ _) = f
ht-compare : huffman-tree Ñ huffman-tree Ñ B
ht-compare h1 h2 = (ht-frequency h1) < (ht-frequency h2)
这里定义了Huffman树的两种节点:叶子节点 ht-leaf 和内部节点 ht-node ,并提供了计算频率和比较节点频率的函数。
优先队列使用Braun树实现:
pqueue : N Ñ Set
pqueue = braun-tree
pq-empty : pqueue 0
pq-empty = bt-empty
pq-insert : @ {n : N} Ñ huffman-tree Ñ pqueue n Ñ pqueue (suc n)
pq-insert
超级会员免费看
订阅专栏 解锁全文

1万+

被折叠的 条评论
为什么被折叠?



