Bagaimana Anda menentukan jumlah kesalahan dalam algoritma Welch-Berlekamp?


9

Dalam algoritma Welch-Berlekamp untuk mendekode kode Reed-Solomon, seseorang diberikan daftar poin (Sebuahsaya,bsaya) mewakili pesan dengan kesalahan e pada bsaya di lokasi yang tidak diketahui (dan e 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

bsayaE(Sebuahsaya)=Q(Sebuahsaya)

untuk semua saya mana E memiliki derajat e dan Q memiliki gelar paling banyak e+k . Variabel adalah koefisien E dan Q .

Untuk memastikan bahwa E memiliki derajat e biasanya ditambahkan batasan bahwa koefisien xe adalah 1 terhadap sistem linear di atas. Namun, dalam praktiknya seseorang tidak perlu tahu e . Salah satu cara yang tidak efisien (tetapi masih polinomial) untuk mengatasinya adalah dengan mencoba e untuk semua nilai yang dimulai dengan (n+k-1)/2-1 turun hingga solusi ditemukan.

Pertanyaan saya adalah: adakah cara yang lebih efisien untuk menentukan e ? Atau, apakah ada modifikasi pada sistem linear yang memungkinkan seseorang untuk menggunakan batas atas pada e 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 e=2 persamaan polinomial yang dimaksud adalah

bsaya(e0+e1x+e2x2)-q0-q1x-q2x2-q3x3-q4x4=0

Dan memasukkan memberikan sistem dalam bentuk matriks:x=0,1,2,3,4

[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 Gaussiane2=1

[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 )EQQ(t+6)(t3+2t2+2t+3)mod7

Untuk saya mendapatkan solusi yang baik:e=1

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.e=2


bsaya

Jawaban:


3

e

E(x)aiE(x)e

eE(x)eeE(x)e

E(x)eE(x)E(x)ne


Untuk mendokumentasikan hasil percakapan tentang "counterexample" dalam pertanyaan:

nk+1(n-k)/2n=5k=3(n-k)/2=1e=1e=2

Jadi, counterexample sebenarnya bukan counterexample, dan itu tidak bertentangan dengan jawaban saya di atas.


1
n-k+1(n-k)/2

E(x)E(x)

n=7e=2

Oke, ini berfungsi pada contoh yang saya coba. Luar biasa!
JeremyKun
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.