算术编码介绍

算术编码的解释已经简化。特别是这种写法,看起来好像是算术编码先用无限精度的数值计算出代表最后一个节点整体的分数,然后在编码结束时把这个分数转换成最终形式。很多算术编码器使用优先精度的数值计算,而不是试图模拟无限精度,因为他们知道解码器可以将计算的分数匹配并舍入到该精度下的相应值。一个例子可以说明,一个模型要把区间[0,1]分成三部分,用8位精度实现。请注意,由于精度是已知的,我们可以使用的二进制值的范围也是已知的。

称为重正化的过程使有限精度不再是可以编码的字符数的限制。当范围内的所有值都减少到某个数值时,这些数值将被发送到输出数据。虽然计算机可以处理许多位数的精度,但编码中使用的位数小于它们的精度,因此将现有数据向左移位,并向右添加新的数据位,以尽可能扩大可用的数据范围。注意,这个结果出现在前面三个例子中的两个例子中。算术编码中使用的许多不同方法都受到美国专利的保护。这些专利中的一些是在一些国际标准中定义的算术编码算法的实现的关键。在这种情况下,这些专利通常根据合理的非歧视性(RAND)许可协议使用(至少作为标准委员会的一种策略)。在一些著名的案例中(包括一些涉及IBM的专利),这些许可是免费的,而在另一些案例中,则收取一定的许可费。RAND条款的许可协议可能无法让所有打算使用这项技术的用户满意,因为对于一个打算生产专有软件的公司来说,这个成本是“合理的”,但对于自由软件和开源软件项目来说是不合理的。

在算术编码领域做了大量开创性工作并拥有多项专利的著名公司是IBM。一些分析师觉得,在不侵犯IBM和其他公司拥有的专利的情况下,没有实用有效的算术编码可以实现的想法,只是数据压缩领域的一个连续的城市传说(特别是当有效的算术编码已经使用了很长时间,最初的专利开始过期的时候)。但由于专利法没有提供“明确界限”的检验,所以总担心法院会发现侵犯专利的特殊申请,而随着对专利范围的详细审查,会发现一个不好的裁定会带来很大的损失。然而,这些技术的专利保护对它们的应用有阻碍作用。至少有一个重要的压缩软件bzip2因为害怕专利状态,故意停止使用算术编码,转而使用霍夫曼编码。

下面列出了算术编码的美国专利。

专利4,122,440-(IBM)提交日期为1977年3月4日,批准日期为1978年10月24日(现已过期)。

专利4,286,256—(IBM)批准日期1981(可能已过期)。

专利4,467,365,438+07 —— (IBM)批准日期:265,438+0,65,438+0984年8月(可能已过期)。

专利4,652,856—(IBM)批准日期1986年2月4日(可能已过期)

专利4,891,643 —— (IBM)于1986/09/15提交,于1990/01/02获得批准。

专利4,905,297 —— (IBM)批准日期1990年2月27日。

专利4,933,883 —— (IBM)批准日期12,1990。

专利4,935,882 —— (IBM)批准日期19,1990。

专利4,989,000—()于1989/06/19提交,于1991/01/29获得批准。

专利5,099,440

专利5,272,478 —(理光)

注:该列表并未涵盖所有专利。更多专利信息,请参考以下链接。

算术编码的专利可能存在于其他国家的司法领域。请参考《软件专利》中关于全世界软件可专利性的讨论。