【问题标题】:Which algorithm for extremely high non burst errors?哪种算法可以解决极高的非突发错误?
【发布时间】:2010-10-10 20:43:36
【问题描述】:

我有一个错误率非常高的二进制流。错误率为 50%,这意味着每个位都有 50% 的机会被翻转。该错误不会以突发形式发生,并且是完全随机的,因此 Reed-Solomon 码无法正常工作。

我应该对流应用哪种方案或算法?我根本不关心开销。

这都是理论上的,所以问我是否可以减少流的错误是没有意义的。

编辑

不要说不可能,它告诉你的第一个答案是noisy channel coding theorem.是可能的

【问题讨论】:

  • 这对我来说听起来像是一个家庭作业问题。
  • “翻转”是指“可能被翻转”吗?有很大的不同。
  • 你是对的,“将是”与“可能是”会产生巨大的差异。现在应该清楚错误率为 50%。
  • 如果您的故障率为 50%,我建议您使用 FedEx 的信息。
  • 我的意思是,你已经说过你不在乎开销。

标签: algorithm binary random error-correction


【解决方案1】:

如果错误率为 50%,那基本上是随机噪声,不是吗?我的意思是,考虑只尝试传输一个比特。如果你发送一个 infinite 正确位的流,以 50% 的错误率,无论正确的位是 1 还是 0,你都会得到一半 1 和一半 0。

如果它实际上小于 50%(例如,50% 的位将是“随机”而不是“翻转”),那么您可以重复数据 - 传输每个位 128 次,然后计算出您获得更多的数据每收到 100 位。那是简单的代码,非常低效,根本不是数学的解决方案:)

【讨论】:

  • 也许“翻转”他的意思是“可能被翻转”。这将使它成为可能。
  • @John:您建议的简单方案仍然可以处理 50% 和更高的错误率。很有可能,发送 128 个 1 位将导致 0-64 个 0 位和 64-128 个 1 位,最可能的结果是 32 个 0 位和 96 个 1 位。为了获得更好的错误率,只需使用更多重复。
  • @j_random_hacker:这就是“50% 的位将被翻转”和“50% 的位将是随机的”之间的区别。
  • 糟糕,我假设“50% 错误率”是指 50% 的位被随机位替换。否则你是对的,因为除了 0.5 之外没有办法使接收到的位的期望值(假设没有错误聚类)。
【解决方案2】:

嗯,Reed-Solomon 纠错的重点在于,现实世界中的大多数错误都是突发性的,因此您可以对数据进行交织和去交织。如果您的错误是完全随机的,即泊松分布,那么只需以简单、数学上有效的方式向流中添加冗余即可。你可以看看某种隐马尔可夫模型,例如trellis code. 这基本上只是一种在数学上有效的添加冗余的方法。

另外,看看noisy channel coding theorem. 严格来说,它不适用于数字数据,但如果您的这些位的来源是一些模拟过程,或者您可以模拟您的位就像 它们是一些模拟过程的结果,它可以让您深入了解您可以做的最好的事情。这样可以防止您浪费时间试图做得比数学上可能的更好。

【讨论】:

  • 该定理非常适用于这个问题。这只是意味着数据速率将非常有限
【解决方案3】:

随着信道接近 50% 的实际噪声率,根本无法再传输任何信息。对于 Jon Skeet 的回答,如果错误率低于 50% 的噪声,那么您可以通过对预期数据进行更长的突发冗余和统计查看结果以对原始值有一定程度的信心来获取数据。然后将基于噪声的特征推导出给定长度所需的突发长度和置信水平。但是,请理解,您在这里所做的是有效地降低数据速率以提高传输流的净信噪比。

在您的问题中,您可能已将其排除在外,但更好的编码方案可能基于数据流本身的相对存在(或不存在)。换句话说,要传输一个二进制......发送一个 1/0 的交替流。要发送零,不发送任何内容,或者发送恒定电平。这个想法是发送(和接收)任何东西代表一种状态,而发送(和接收)任何东西都代表另一种状态。这实际上类似于bipolar encoding 的数据类型。

【讨论】:

    【解决方案4】:

    噪声信道编码定理表明,您实际上可以实现信道的香农容量。它确实说通道具有非零容量!

    如果您随机化通道中 100% 的位,其中 50% 将保持不变,因此您只需随机翻转 50% 的位。很明显,您不能通过这样的通道发送任何数据——它的香农容量为零。

    【讨论】:

      【解决方案5】:

      如果您的错误率为 50%,则比特流是随机的,并且与原始比特流没有关联。就像您正在用完全随机的比特流对流进行异或运算,结果是完全随机的。而且您对此无能为力。

      翻转率必须低于 50% 才能使任何方案发挥作用。当然,也可以是 50% 以上,但是你可以先反转流,然后像错误率低于 50% 一样进行处理。

      如果错误是完全随机且非常频繁的(例如 25% 的位被翻转),则很难提出稳健的错误检测方案。您需要添加大量冗余。

      【讨论】:

      • 你提出了矛盾。如果 50% 的位是随机的,则不能说整个流是随机的,因为您说只有 50% 的位是随机的。
      • 确实如此,但是你如何判断哪些位是随机的?
      • 我认为“随机”与“不正确”之间存在一些混淆。如果 50% 的位是随机的,那么流仍然有有用的信息。如果 50% 的位不正确,则不会。
      • 如果 50% 的位被翻转,那么整个流是随机的。如果 50% 的位是随机的,这意味着 25% 的位被翻转。
      【解决方案6】:

      你研究过turbo码吗?

      -- MarkusQ

      哇!我误认为 50% 是随机的,而不是 50% 的翻转。

      【讨论】:

        【解决方案7】:

        如果恰好在任何给定传输中翻转了 50% 的位,而不是每个位都以 50% 的概率翻转,您可以通过发送两位的传输来发送一些信息 - - 发送 0 作为 00,发送 1 作为 01。如果接收到的码字的第一位是 1,则另一位不翻转。

        【讨论】:

          猜你喜欢
          • 2013-10-09
          • 2012-10-19
          • 2020-03-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-26
          • 1970-01-01
          相关资源
          最近更新 更多