为何会出现0比特每字符(bpc)的熵?字符串ABABABAB熵计算疑问
为什么选用双字符字母表时字符串ABABABAB的熵为0比特每字符?
咱们先回到香农熵的核心逻辑:熵衡量的是单个符号单元的不确定性,计算公式是:H = -Σ(p_i * log₂(p_i))
其中p_i是字母表中第i个符号在序列中出现的概率。
你遇到的情况,本质是因为两种字母表定义了不同的“符号单元”,导致概率分布完全不同:
- 当用单字符字母表{A,B}时,字符串里A和B各出现4次,概率都是0.5。代入公式计算每个字符的熵是1比特,这和你得到的结果一致。
- 当用双字符字母表{AB, AA, BB, BA}时,咱们把字符串拆成连续的双字符单元:
AB AB AB AB——整个序列里只有AB这一个符号重复出现,另外三个符号(AA、BB、BA)的出现概率都是0,AB的概率是1。
把这个概率代入熵公式:H = -1*log₂(1) - 0*log₂(0) - 0*log₂(0) - 0*log₂(0)
因为log₂(1)=0,所以最终H=0比特每字符。
简单说,这种情况下你能100%预测下一个双字符单元是什么(必然是AB),没有任何不确定性,所以熵为0。这也说明熵的计算结果和你定义的“基本符号粒度”直接相关——不同的粒度下,我们衡量的是不同层面的不确定性,所以结果自然不同。
内容的提问来源于stack exchange,提问作者I K
相关产品推荐
相关产品推荐

