Mã BCH

Từ testwiki
Bước tới điều hướng Bước tới tìm kiếm

Trong lý thuyết mã hóa, mã BCH là một lớp các mã sửa lỗi vòng xây dựng bằng trường hữu hạn. Mã BCH được phát minh năm 1959 bởi Hocquenghem, và một cách độc lập năm 1960 bởi BoseRay-Chaudhuri.[1] Tên viết tắt BCH gồm chữ cái đầu của tên những người phát minh ra loại mã này.

Một trong những tính năng chính của mã BCH là khi thiết kế, có thể điều chỉnh chính xác số lỗi mã có thể sửa được. Cụ thể hơn, có thể thiết kế mã BCH nhị phân sửa được nhiều lỗi bit. Một lợi thế khác của mã BCH là có thể giải mã dễ dàng bằng một phương pháp đại số gọi là giải mã hội chứng. Điều này giúp đơn giản hóa việc thiết kế bộ giải mã cho mã này bằng phần cứng điện tử sử dụng ít năng lượng.

Mã BCH được dùng trong nhiều ứng dụng như liên lạc vệ tinh,[2] máy nghe CD, DVD, ổ đĩa, SSD[3]mã vạch hai chiều.

Cách xây dựng

Mã BCH nghĩa hẹp nguyên thủy

Với một số nguyên tố q và hai số nguyên dương md thỏa mãn dqm1, một mã BCH nghĩa hẹp nguyên thủy trên trường hữu hạn GF(q) với chiều dàin=qm1 và khoảng cách nhỏ nhất lớn hơn hoặc bằng d được xây dựng như sau.

Đặt α là một phần tử nguyên thủy của GF(qm). Với mọi số nguyên dương i, đặt mi(x)đa thức nhỏ nhất của αi. Đa thức sinh của mã BCH được định nghĩa là bội chung nhỏ nhất g(x)=lcm(m1(x),,md1(x)). Có thể thấy g(x) là một đa thức có hệ số trong GF(q) và chia hết xn1. Do đó mã đa thức định nghĩa bởi g(x) là một mã vòng.

Ví dụ

Đặt q=2m=4 (nên n=15). Ta sẽ xét các giá trị khác nhau cho d. Tồn tại nghiệm nguyên thủy αGF(16) thỏa mãn

Bản mẫu:NumBlk

đa thức nhỏ nhất của nó trên GF(2) là: m1(x)=x4+x+1. Ghi chú là trong GF(24), đẳng thức (a+b)2=a2+ab+ab+b2=a2+b2 là đúng, nên m1(α2)=m1(α)2=0. Vì vậy α2 là nghiệm của m1(x), nên

m2(x)=m1(x)=x4+x+1.

Để tính m3(x), có thể thấy, bằng cách áp dụng (Bản mẫu:EquationNote) nhiều lần, ta thu được hệ các quan hệ tuyến tính sau:

  • 1=0α3+0α2+0α+1
  • α3=1α3+0α2+0α+0
  • α6=1α3+1α2+0α+0
  • α9=1α3+0α2+1α+0
  • α12=1α3+1α2+1α+1

Năm vế phải là các tổ hợp tuyến tính của 4 lũy thừa giống nhau nên chúng phụ thuộc tuyến tính. Thật vậy, ta có tổ hợp tuyến tính α12+α9+α6+α3+1=0. Vì không tồn tại quan hệ phụ thuộc tuyến tính bậc nhỏ hơn nên đa thức nhỏ nhất của α3 là:m3(x)=x4+x3+x2+x+1. Tiếp tục tương tự như vậy, ta tìm được

m4(x)=m2(x)=m1(x)=x4+x+1,
m5(x)=x2+x+1,
m6(x)=m3(x)=x4+x3+x2+x+1,
m7(x)=x4+x3+1.

Mã BCH với d=1,2,3 có đa thức sinh

g(x)=m1(x)=x4+x+1.

Nó có khoảng cách Hamming nhỏ nhất lớn hơn hoặc bằng 3, và do đó sửa được 1 lỗi. Vì đa thức sinh có bậc 4, mã này có 11 bit dữ liệu và 4 bit kiểm tra.

Mã BCH với d=4,5 có đa thức sinh

g(x)=lcm(m1(x),m3(x))=(x4+x+1)(x4+x3+x2+x+1)=x8+x7+x6+x4+1.

Nó có khoảng cách Hamming nhỏ nhất lớn hơn hoặc bằng 5 và do đó sửa được 2 lỗi. Vì đa thức có bậc 8, mã này có 7 bit dữ liệu và 8 bit kiểm tra.

Mã BCH với d=6,7 có đa thức sinh

g(x)=lcm(m1(x),m3(x),m5(x))=(x4+x+1)(x4+x3+x2+x+1)(x2+x+1)=x10+x8+x5+x4+x2+x+1.

Nó có khoảng cách Hamming nhỏ nhất lớn hơn hoặc bằng 7 và do đó sửa được 3 lỗi. Mã này có 5 bit dữ liệu và 10 bit kiểm tra.

Mã BCH với d=8 và lớn hơn có đa thức sinh

g(x)=lcm(m1(x),m3(x),m5(x),m7(x))=(x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)=x14+x13+x12++x2+x+1.

Mã này có khoảng cách Hamming nhỏ nhất bằng 15 và sửa được 7 lỗi. Nó có 1 bit dữ liệu và 14 bit kiểm tra. Mã này chỉ có đúng hai mã tự: 000000000000000 và 111111111111111.

Ghi chú

Bản mẫu:Tham khảo

Tham khảo

Tài liệu nguyên thủy

Tài liệu khác