2016-11-06 101 views
0

我在一個Java項目中使用Reed-Solomon錯誤更正。我使用的庫是JavaReedSolomon(https://github.com/Backblaze/JavaReedSolomon)。存在使用JavaReedSolomon解碼的一個示例:使用Reed Solomon解碼,我們是否需要知道哪些分片是正確的?

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表示碎片肯定是正確的,例如,如果是肯定的第四碎片是正確的,那麼shardPresent [3]等於true。

我的問題是,Reed-Solomon解碼必然需要知道哪些分片是正確的,或者這個庫如何實現它?

回答

1

答案是否定的:解碼過程可以從未知和已知錯誤(擦除)中恢復。 Reed-Solomon代碼(實際上,任何MDS code)都可以糾正錯誤的兩倍。有multiple ways來確定錯誤定位器。

庫中的API很可能與其使用情況相對應,即可能存在一些關於數據的哪些部分是正確的側通道信息。