Dalam algoritma Welch-Berlekamp untuk mendekode kode Reed-Solomon, seseorang diberikan daftar poin mewakili pesan dengan kesalahan pada di lokasi yang tidak diketahui (dan diberikan ke algoritma). Outputnya adalah polinomial yang melewati semua titik yang diberikan kecuali titik-titik di mana kesalahan terjadi.
Metode ini melibatkan penyelesaian sistem persamaan linear formulir
untuk semua mana memiliki derajat dan memiliki gelar paling banyak . Variabel adalah koefisien dan .
Untuk memastikan bahwa memiliki derajat biasanya ditambahkan batasan bahwa koefisien adalah 1 terhadap sistem linear di atas. Namun, dalam praktiknya seseorang tidak perlu tahu . Salah satu cara yang tidak efisien (tetapi masih polinomial) untuk mengatasinya adalah dengan mencoba untuk semua nilai yang dimulai dengan turun hingga solusi ditemukan.
Pertanyaan saya adalah: adakah cara yang lebih efisien untuk menentukan ? Atau, apakah ada modifikasi pada sistem linear yang memungkinkan seseorang untuk menggunakan batas atas pada bukannya nilai yang tepat?
Secara khusus saya ingin menggunakan dekoder khusus ini untuk kode Reed-Solomon, dan bukan algoritma yang sepenuhnya berbeda berdasarkan teknik lain.
Menanggapi jawaban DW, ini adalah contoh kerja saya. Semuanya dilakukan modulo 7.
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]]
Jadi kesalahannya ada di poin ketiga.
Ketika persamaan polinomial yang dimaksud adalah
Dan memasukkan memberikan sistem dalam bentuk matriks:
[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]
Baris terakhir adalah batasan bahwa . Kami menerapkan eliminasi Gaussian
[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]
Dan memilih 1 untuk kedua variabel gratis kami mendapatkan vektor solusi
[2, 2, 1, 4, 1, 0, 1, 1]
Yang diterjemahkan menjadi
E is 2 + 2 t^1 + 1 t^2
Q is 4 + 1 t^1 + 0 t^2 + 1 t^3 + 1 t^4
Dan tidak membagi Q . Perhatikan bahwa faktor Q sebagai ( t + 6 ) ( t 3 + 2 t 2 + 2 t + 3 )
Untuk saya mendapatkan solusi yang baik:
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
Perhatikan bahwa sementara counterexample di atas dihasilkan oleh kode yang saya tulis dari awal (itu pada dasarnya adalah hal pertama yang saya coba), orang dapat memeriksa solusi yang valid dengan tangan, jadi meskipun kode saya bermasalah, masih merupakan counterexample yang valid untuk klaim yang menggunakan berfungsi.