【发布时间】:2010-07-05 02:44:29
【问题描述】:
我想为我想要分类的 k 个不同输入生成一个 n 位代码。该代码的主要要求是纠错标准:不同输入的任意两个编码之间的最小成对距离最大化。我不需要它是精确的 - 近似的就可以了,易用性和计算实现的速度也是一个优先事项。
一般情况下,n 为百,k 为几十。
另外,k 个不同的 n 位二进制编码之间的最小汉明距离是否有合理的严格限制?
【问题讨论】:
标签: algorithm encoding hamming-distance
我想为我想要分类的 k 个不同输入生成一个 n 位代码。该代码的主要要求是纠错标准:不同输入的任意两个编码之间的最小成对距离最大化。我不需要它是精确的 - 近似的就可以了,易用性和计算实现的速度也是一个优先事项。
一般情况下,n 为百,k 为几十。
另外,k 个不同的 n 位二进制编码之间的最小汉明距离是否有合理的严格限制?
【问题讨论】:
标签: algorithm encoding hamming-distance
为给定参数找到准确的最佳纠错码是非常困难的,即使是近似最佳的代码也很难。最重要的是,有些代码没有任何像样的解码算法,而对于其他代码,解码问题相当棘手。
但是,您询问的是 n ≫ k 的特定参数范围,如果我理解正确,您需要长度为 n 的 k 维代码。 (因此 k 位被编码为 n 位。)在这个范围内,首先,随机码可能具有非常好的最小距离。唯一的问题是解码从不切实际到难以处理,实际计算最小距离也不是那么容易。
其次,如果您想要一个明确的代码来处理 n ≫ k 的情况,那么您可以使用 q=2 的BCH code 做得相当好。正如维基百科页面所解释的,有一个很好的 BCH 码解码算法。
关于最小汉明距离的上限,在 n ≫ k 范围内,您应该从 Hamming bound 开始,也称为体积界或球体堆积界。界的想法简单而优美:如果最小距离是 t,那么代码可以将错误纠正到距离 floor((t-1)/2)。如果您可以将错误纠正到某个半径,则意味着该半径的汉明球不重叠。另一方面,可能单词的总数是 2n,所以如果你将它除以一个汉明球中的点数(在二进制情况下是二项式系数的总和),你得到了无错误码字数量的上限。有可能突破这个界限,但对于较大的最小距离来说,这并不容易。在这种制度下,这是一个很好的界限。
【讨论】: