请推荐使用非常奇怪的数据通道的纠错算法。
频道由两部分组成:Corrupter和Eraser。
Corrupter收到一个由3个符号字母组成的10000个符号组成的单词,例如{'a','b','c'}。
腐败者改变每个符号的概率为10%
例如:
Corrupter input: abcaccbacbbaaacbcacbcababacb...
Corrupter output: abcaacbacbbaabcbcacbcababccb...
橡皮擦接收腐败输出并以94%的概率擦除每个符号
橡皮擦在4个符号的字母表中生成相同长度的单词{'a','b','c','*'}。
例如:
Eraser input: abcaacbacbbaabcbcacbcababccb...
Eraser output: *******a*****************c**...
因此,在橡皮擦输出上,大约6%* 10000 = 600个符号不会被删除,大约90%* 600 = 540个将保留其原始值,大约60个将被破坏。
哪种带纠错的编码解码算法最适合此频道?
提供了大量有用的数据,提供了>成功解码的概率为99.99%?
是否可以通过此通道传输40个字节的数据? (256 ^ 40~3 ^ 200)
答案 0 :(得分:1)
这里有一些你至少可以分析的东西:
将你的40个字节分成13个25位的块(有一些浪费,所以这个位显然可以改进)
2 ^ 25< 3 ^ 16所以你可以将25位编码成16 a / b / c" trits" - 再次浪费意味着改进的余地。
有10,000个可用的trits,你可以给你的13个编码字节三元组中的每一个输出769个输出。在16个trits上选择(可能是随机的)769个不同的线性(mod 3)函数 - 每个函数由16个trits指定,并且在这些trits和16个输入trits之间采用矢量点积。这为您提供了769输出。
通过考虑所有可能的(2 ^ 25)块并选择与大多数幸存的trits相匹配的块来解码。只要存在至少16个幸存的特技,你就有希望得到正确的答案,我认为excel通过BINOMDIST告诉我()经常发生这样的事情很有可能它将会发生在13 25位块。
我不知道你从乱码中获得了什么错误率,但是随机线性代码具有相当好的声誉,即使这个因为我的脑死解码技术而具有短的块大小。在最坏的情况下,您可以尝试模拟25位块的编码传输和解码,并从那里开始工作。如果您假装乱码阶段也会消失,那么您可以获得比错误率更准确的下限,并以更高的擦除概率重新计算。
我认为如果你能负担得起每25位块的2 ^ 25个猜测,这实际上可能在实践中有效。 OTOH如果这是课堂上的一个问题,我猜你需要证明你对班上已经讨论过的一些不那么特别的技巧的了解。