【问题标题】:Error safe/correcting resource identifier错误安全/纠正资源标识符
【发布时间】:2011-01-31 16:39:04
【问题描述】:

接收者是我的网站,发送者是相同的,但媒介是嘈杂的,一个用户。他将读取长度为 6 的字母数字代码,然后输入相同的代码来识别资源。我想,一个纠错代码的好用处,而不是做研究,我认为我只是把问题放在那里。或者我可能会以错误的方式处理它,因为这种情况更像是在每次传输时发送一个完美的字典。

对代码的要求很简单:

  1. 6 位字母数字,反正我用完为止。
  2. 如果用户弄错了,我应该仍然能够识别正确的资源。
  3. 没有比错误更可取的资源。
  4. 易于编码或拥有适用于 .net 的免费库

有什么建议吗?

编辑:

在我看来,通过明智地选择代码(即代码之间有足够的距离)可以满足一半的要求。当我意识到代码生成时间越长,它们越不可能被使用时,这个策略看起来就更好了。

代码不会直接输入我的网站,所以我无法立即提供反馈。实际上,我们可以假设,除非我可以验证代码,否则我什至无法识别用户,所以我根本无法真正提供反馈。

【问题讨论】:

  • 6个字母数字的约束有多难?您需要区分多少资源(最坏情况/最高估计)?
  • 您选择的纠错码很大程度上取决于您准备容忍多少错误。
  • 6位数字好记,所以我会尽量使用它。在我们进入 7 位数字之前,可能有多达 1000 万个资源。我正在计算 13 亿个 6 位数的代码。可能吗?
  • @Oli 错误命中的后果并不是灾难性的,只是代价高昂且令人讨厌。没有命中更好。那么您认为我应该研究哪些?

标签: .net error-correction


【解决方案1】:

嗯,不,您的第一个订购方法应该是检查用户是否输入了正确的数字。 99% 的问题是人为输入错误的数字或字符串。这在实践中已经确立,check digit 用于许多常见代码中,UPC 和 ISBN 是您每天都会看到的代码。你可以标记它,他们可以重新输入。

纠错码也很常见,但有非常不同的应用。传统上,它用于数字信令媒体,旨在检测和纠正比特错误。 Reed-Solomon 是那里的百磅大猩猩,真的被音乐CD 放在了地图上。

这在人类实践中并不能很好地发挥作用,他们会通过错误键入一个键来引入至少 6 位错误数据。这很难纠正,您必须在相邻的字母中添加大量冗余位,从而可能导致代码输入错误。人类可读代码的最佳方式是让代码对人类有意义。触发“看起来错误”响应的东西。就像一个给定的名字,只要你不是弗兰克扎帕的孩子。但除此之外,诸如字母+数字之类的代码的基础。等等。

【讨论】:

  • 碰巧,Reed-Solomon 处理字节(通常,理论上任何字母表),而不是位。所以它会很好地找出个别字符的错别字......
  • 对不起,我应该提到用户不会直接在我的网站上输入代码,所以我无法直接验证它的正确性。此外,在我看来,部分要求可以通过明智地生成代码来满足。但我会调查 reed-solomon。
  • 最后我只使用了 5 位 CRC 并使用线性/循环属性来生成代码。没有纠错我计算出 6 个字符代码(30 位)和任何类型的纠错都不会给我所需的字典大小。所以至少我有一些东西可以生成足够可区分的代码,即良好的距离。此外,纠错码可能适用于输入错误的字符,但对于互换和跳过的字符则效果不佳。
猜你喜欢
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
  • 2019-08-04
相关资源
最近更新 更多