出现频率为 {1,2,3,3}\{ 1,2,3,3\} 的字符集共有多少种最优 PFC 编码方案?

本题之前的答案有误,已经更新最新答案并重测。在此非常感谢 的指正!

PFC(无歧义前缀编码)的相关定义请查看邓俊辉教材第 5 章,在只有 01 串的情况下,需要构造出以字符集中所有字符为叶子节点的真二叉树,每个叶子出现的频率乘以其到根节点路径的长度的总和即为编码总长度。

首先叶子节点为 4 个的情况下,能够形成的真二叉树,根据 Catalan 数推导可以得到最多为 5 种(下图只画出不带叶子节点的真二叉树)。

除去中间一种,其他 4 种结构本质上没有区别。

对于非满二叉树的真二叉树,根据 Huffman 编码可以得到下述方案:

设根节点是第 0 层,那么两个出现频率为 3 的字符具体摆在第 1 层还是第 2 层是一个排列组合要素,3 个内部节点是否交换左右子树由提供了一个排列组合要素(该要素可以涵盖上面 4 种结构),因此总方案数为 2×23=162\times 2^3=16 种。

重点在于满二叉树的情况,如果按照 Huffman 编码,则会得到以下情况:

这种情况下可以得到共有 88 种编码方案,总数为 2424,就会选到错误答案 B 上面了。

但是这里注意一个概念:

Huffman 编码只是最优 PFC 编码的子集! 两者并非相等关系,而是被包含的关系。

在所有叶子节点高度相同的情况下,按照任意排列组合的方式都是最优 PFC 编码,例如下方的图:

这虽然是 Huffman 编码得不到的方案,但是确实是最优 PFC 编码方案。

因此满二叉树结构下,4 个节点排列组合可得到 4!=244!=24 种方案。

最终的答案为 16+24=4016+24=40,正确答案为 D。

在 OJ 上已经修改正确答案并重测,小程序上也更新了正确的解析。

0 comments

No comments so far...

Information

ID
49
Time
1000ms
Memory
256MiB
Difficulty
1
Tags
# Submissions
52
Accepted
2
Uploaded By