0

假设源字母表是a,b,c,以a为终止符号,则单位区间对应地划分为[0,P(a),P(a)+P(b),1]。

由一串以 a(终止符号)结尾的 b 和 c 组成的字符串对编码有效。中间有 a 的字符串被认为对编码无效。

因此很容易构造编码位于区间 [P(a), 1) 中的字符串。但是算术编码是否为任何字符串分配了区间 [0, P(a)) 中的编码?空字符串是否有资格被编码为位于 [0, P(a)) 中的位串?因为空字符串可以被认为是字符串“a”或只是终止符号。

由于将空间用于编码空字符串似乎毫无意义,为什么不将单位间隔的第一个除法设为 [0, (P(b)-P(a))/(1-P(a)), 1] 对应映射 [P(a), P(a)+P(b), 1] 以填充单位区间。然后后续的细化划分将照常使用 [0, P(a), P(a)+P(b), 1]。

4

1 回答 1

2

是的,空字符串将在该区间内(即 0)。这是多余的,因为您还可以从编码表示的长度推断字符串的长度为零,因此您可以排除它。更一般地说,如果您可以根据字符串的前面部分推断出任何符号是不可能的,那么您可以排除它(给其他符号更多的间隔)并节省一点空间。但是,如果您这样做的唯一情况是使用第一个符号,那么节省的空间可能太微不足道,无法证明额外特殊情况的复杂性是合理的。

于 2012-03-21T02:00:25.867 回答