Reed-Solomon kodlarının kodunu çözmek için Welch-Berlekamp algoritmasında , bilinmeyen konumlarda hataları olan bir mesajı temsil eden noktaların listesi verilir (ve algoritmaya verilir). Çıktı, hataların meydana geldiği durumlar dışında verilen tüm noktalardan geçen bir polinomdur.
Yöntem, formun doğrusal denklemleri sisteminin çözülmesini içerir
derecesine ve en fazla derecesine sahip olduğu tüm için . Değişkenler ve katsayılarıdır .
derecesine sahip olduğundan emin olmak için, genellikle katsayısının 1 olduğu kısıtlamasını yukarıdaki doğrusal sisteme ekler . Ancak, uygulamada bir mutlaka bilmiyor . Bununla uğraşmak Bir verimsiz (ama yine de polinom zamanlı) yolu denemektir ile başlayan tüm değerler için bir çözüm bulunana dek aşağı gidiyor.
Sorum şu: belirlemek için daha etkili bir yolu yoktur ? Alternatif olarak, doğrusal sistemde tam değer yerine bir üst sınır kullanmasına izin veren bir değişiklik var mı?
Özellikle Reed-Solomon kodları için bu özel kod çözücüyü kullanmak istiyorum, diğer tekniklere dayanan tamamen farklı bir algoritma değil.
DW'nin cevabına yanıt olarak, işte çalışan örneğim. Her şey modulo 7 yapılır.
plain message is: [2, 3, 2]
polynomial is: 2 + 3 t^1 + 2 t^2
encoded message is: [[0, 2], [1, 0], [2, 2], [3, 1], [4, 4]]
corrupted message is: [[0, 2], [1, 0], [2, 3], [3, 1], [4, 4]]
Hata üçüncü noktada.
olduğunda , söz konusu polinom denklemi
Ve takmak sistemi matris biçiminde verir:
[2, 0, 0, 6, 0, 0, 0, 0, 0]
[0, 0, 0, 6, 6, 6, 6, 6, 0]
[3, 6, 5, 6, 5, 3, 6, 5, 0]
[1, 3, 2, 6, 4, 5, 1, 3, 0]
[4, 2, 1, 6, 3, 5, 6, 3, 0]
[0, 0, 1, 0, 0, 0, 0, 0, 1]
Son satır, kısıtlamasıdır . Gauss eliminasyonunu uyguladık
[1, 0, 0, 0, 0, 0, 1, 4, 0]
[0, 1, 0, 0, 0, 0, 3, 3, 1]
[0, 0, 1, 0, 0, 0, 0, 0, 1]
[0, 0, 0, 1, 0, 0, 2, 1, 0]
[0, 0, 0, 0, 1, 0, 2, 2, 5]
[0, 0, 0, 0, 0, 1, 4, 5, 2]
Ve her iki serbest değişken için 1 seçerek,
[2, 2, 1, 4, 1, 0, 1, 1]
Hangi anlama gelir
E is 2 + 2 t^1 + 1 t^2
Q is 4 + 1 t^1 + 0 t^2 + 1 t^3 + 1 t^4
Ve , . Not olduğu gibi faktörler
İçin Ben iyi bir çözüm elde edersiniz:
system is:
[2, 0, 6, 0, 0, 0, 0]
[0, 0, 6, 6, 6, 6, 0]
[3, 6, 6, 5, 3, 6, 0]
[1, 3, 6, 4, 5, 1, 0]
[4, 2, 6, 3, 5, 6, 0]
[0, 1, 0, 0, 0, 0, 1]
reduced system is:
[1, 0, 0, 0, 0, 0, 5]
[0, 1, 0, 0, 0, 0, 1]
[0, 0, 1, 0, 0, 0, 3]
[0, 0, 0, 1, 0, 0, 3]
[0, 0, 0, 0, 1, 0, 6]
[0, 0, 0, 0, 0, 1, 2]
solution is [5, 1, 3, 3, 6, 2]
Q is 3 + 3 t^1 + 6 t^2 + 2 t^3
E is 5 + 1 t^1
P(x) = 2 + 3 t^1 + 2 t^2 # this is correct!
r(x) = 0
Yukarıdaki karşı örnek örneği sıfırdan yazdığım kod tarafından oluşturulmuş olsa da (temelde denediğim ilk şeydi), çözümlerin elle geçerli olduğunu kontrol edebiliriz, bu yüzden kodum buggy olsa bile hala iddia için geçerli bir karşı örnek kullanarak çalışır.