ACM基础(四):树之Huffman Coding哈夫曼(霍夫曼)编码

    xiaoxiao2025-03-01  29

    文章目录

    一、原理二、伪代码


    一、原理

    频率:

    原理:

    构造的方法就是将所有的指令按使用的频度(也就是程序中出现的概率)由小到大依次排列,每次将两个使用频度最小合并在一起,构成一个频度为两者之和的新结点,将其与余下的结点放在一起。接着再从这些结点中继续找两个使用频度最小合并在一起,构成一个频度为两者之和的新结点。重复上述过程,全部结点合并完成。

    过程:

    0.01和0.02是目前最小的,结合为0.03 0.03和0.03是目前最小的,结合为0.06 0.06和0.06是目前最小的,结合为0.12 0.07和0.07是目前最小的,结合为0.14

    二、伪代码

    HUFFMAN() // 共有n个数 n ← |C| // 优先级队列(谁小谁在队首) Q ← C // n个数有n-1对 for i ← 1 to n-1 // 分配一个新的结点,联合两个最小结点 do allocate a new node z // 新结点的左孩子就是弹出的一个最小队首 left-son[z] ← x ← EXTRACT-MIN(Q) // 新结点的右孩子就是弹出的一个最小队首 right-son[z] ← y ← EXTRACT-MIN(Q) // 新结点的频率就是两子节点频率之和 f[z] ← f[x] + f[y] // 将新结点插入到优先级队列中 INSERT(Q, z) // 返回树根 return EEXTRACT-MIN(Q)
    最新回复(0)