【问题标题】:Code that maps numbers from one number to another with where each number has a distance greater than 1将数字从一个数字映射到另一个数字的代码,其中每个数字的距离大于 1
【发布时间】:2016-06-24 13:31:36
【问题描述】:

我需要用唯一 ID 标记大量书籍。因为人为错误真的会扰乱系统,所以我需要代码来检测其中一个数字是否错误。这意味着代码的任何两个元素都不能有 1 的汉明距离。或者有奇偶校验方法或其他东西,这样可以检测到一些错误。我通常会发布我到目前为止所做的事情,但我不知道从哪里开始。

谢谢

【问题讨论】:

  • 如果距离为 t,您最多可以纠正 (t-1)/2 个错误,并检测 t-1 个错误。这是球堆积定理的结果。

标签: number-theory error-correction


【解决方案1】:

如果您正在处理人类可读的数据,我会选择 Luhn algorithm 之类的东西。这是为简单的手动计算而设计的,以及产生十进制编码的数据。

二进制代码的问题是它们会稍微扰乱数据。因此,除非您打算在图像中编码您的 id,例如条形码或 QR,否则这可能不是正确的选择。另外,最优解码器是复杂的算法,手工计算肯定不实用。

如果您坚持使用二进制代码,那么您必须决定要检测多少位错误。您需要至少 2 的汉明距离来检测错误,否则单个位翻转将导致代码转换为另一个同样有效的代码,并且错误将被忽视。如果您想纠正 N 个错误,则需要选择距离为 2N+1 的代码。

如果您打算对十六进制数字进行编码,那么您需要每个数字存储 4 位,这将需要每个消息具有 9 位冗余的代码才能纠正单个数字错误。我什至不确定是否存在如此完美的代码,实际上您可能会发现您需要更多的冗余来平等地保护所有位。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    相关资源
    最近更新 更多