0

我在 Java 项目中使用 Reed-Solomon 纠错。我使用的库是 JavaReedSolomon ( https://github.com/Backblaze/JavaReedSolomon )。有一个使用 JavaReedSolomon 进行解码的示例:

byte[][] shards = new byte[NUM_SHARDS][SHARD_SIZE];
//shards is the array containing all the shards
ReedSolomon reedSolomon = ReedSolomon.create(NUM_DATA_SHARDS, NUM_PARITY_SHARDS);
reedSolomon.decodeMissing(shards, shardPresent, 0, shardSize);

数组 shardPresent 表示哪些 shard 肯定是正确的,例如,如果你确定第 4 个 shard 是正确的,那么 shardPresent[3] 等于 true。

我的问题是,Reed-Solomon 解码是否一定需要知道哪些分片是正确的,或者这只是这个库如何实现它?

4

1 回答 1

1

答案是否定的:解码过程可以从未知和已知错误(擦除)中恢复。一个 Reed-Solomon 代码(事实上,任何MDS 代码)可以纠正两倍于错误的擦除。有多种方法可以确定错误定位器。

库中的 API 很可能与其用例相对应,即可能有一些关于哪些部分数据是正确的侧信道信息。

于 2016-11-06T14:32:17.853 回答