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 は、どのシャードが確実に正しいかを表します。たとえば、4 番目のシャードが正しいと確信している場合、shardPresent[3] は true に等しくなります。

私の質問は、Reed-Solomon デコーディングは、どのシャードが正しいかを知る必要があるのか​​、それともこのライブラリがそれを実装する方法なのかということです。

4

1 に答える 1

1

答えはノーです。デコード手順は、未知のエラーと既知のエラー (消去) の両方から回復できます。Reed-Solomon コード (実際には、任意のMDS コード) は、エラーの 2 倍の消去を修正できます。エラー ロケータを特定する方法は複数あります。

ライブラリ内の API は、そのユース ケースに対応している可能性があります。つまり、データのどの部分が正しいかについてのサイドチャネル情報がある可能性があります。

于 2016-11-06T14:32:17.853 に答える