You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含可替换符号E的三面骰子序列的最优有损熵编码技术问询

含可替换符号E的三面骰子序列的最优有损熵编码技术问询

我们知道,用算术编码可以给独立的偏置硬币翻转序列编码,做到每翻转不到1比特的效率。比如一个正面概率$p=0.8$的硬币,我们可以用熵值$H_b(p)=-p\log_2\left(p\right)-(1-p)\log_2\left(1-p\right)\approx 0.7$比特来编码每一次翻转,这是理论最小值。

现在考虑一个有三个面的骰子,面分别是$H$(正面)、$T$(反面)、$E$(任意)。这里的核心是,编码的时候我们可以选择把$E$替换成$H$或者$T$——这属于有损压缩,因为我们会丢失原始序列中哪些位置是$E$的信息。

举个具体例子:

假设$p_H=p_T=p_E=\frac{1}{3}$,待编码序列是$S=EHTETHETET...$

第一种基础编码方法:

  • 直接把所有$E$替换成$H$,得到序列$S'=HHTHTHHTHT...$,然后用算术编码处理,此时$H$的有效概率$p_H'=\frac{2}{3}$,这种方法大概需要0.92比特/次骰子投掷。

第二种更优的分组编码方法:
更好的策略是把连续的投掷两两分组,然后按照如下规则替换:

原始分组替换结果
HEHH
EHHH
TETT
ETTT
EETT

处理后得到$S'=HHTTTHTTTT...$,再对分组后的结果用算术编码。此时分组的概率分布为$p_{TT}'=\frac{4}{9}$,$p_{HH}'=\frac{3}{9}$,$p_{HT}'=p_{TH}'=\frac{1}{9}$,计算下来大概需要0.88比特/次骰子投掷,比第一种方法更高效。

我现在有两个核心问题想请教:

  1. 给定概率$p_H,p_T,p_E$(满足$p_H+p_T+p_E=1$),编码这样的骰子序列,每一次投掷最少需要多少比特?
  2. 是否存在(实用的)编码和解码算法,能够(接近)达到这个最优效率?

我自己尝试过用谷歌和ChatGPT查找这个问题的名称,也查看了一些标记为「压缩」的相关问题,但除了考虑分块编码的思路之外,不知道该怎么进一步入手。另外我推导了一个比特数的平凡下界:$(1-p_E)H_b(\frac{p_H}{p_H+p_T})$,这个下界的推导思路是假设解码器拥有额外信息——知道原始序列中所有$E$的位置。

备注:内容来源于stack exchange,提问作者AnttiP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 10:04:32