You are on page 1of 15

Mã sửa lỗi

Reed-Solomon
I. Giới thiệu sơ lược
Mã sửa lỗi nói chung được sử
dụng rộng rãi cho độ tin cậy và
khả năng phục hồi, và thậm chí để
giảm độ trễ và tăng thông lượng.
Reed-Solomon đặc biệt được sử
dụng từ mã QR hoặc mã vạch đến
giao tiếp vệ tinh. Nó không chỉ
phục hồi dữ liệu bằng cách xóa
nhanh chóng, nó còn sửa lỗi dữ
liệu và xác định phần dữ liệu cụ
thể nào là xấu hoặc bị hỏng. Đó là
lý do tại sao đĩa CD và DVD bị trầy
xước vẫn hoạt động.
Đầu tiên chúng ta tóm tắt nhanh về đa thức
Không thể thảo luận về bất cứ điều gì liên quan đến
mã hóa mà không chạm vào chủ đề của đa thức.Một
đa thức f(x) bậc n là một đa thức trông như thế này:
F(x)=
Thông tin tối thiểu để xác định một đa thức:
Bất kỳ hàm đa thức nào bậc n−1được xác định duy
nhất bởi bất kỳ n những điểm mà nằm trên đa thức
này.
Đây là một ví dụ về đa thức bậc 3,f(x)= , được đánh giá với
các giá trị của x={−1;0;1;2} :

Ta có các điểm (−1;-7), (0;2), (1;1),


(2;−4)
chúng ta có thể điền các giá trị vào
f(x) ta có được hệ phương trình sau:

Chúng ta sử dụng thuật toán Gaussian hoặc


Lagrange ta tính được kết quả (=(2,3,−5,1).
=>f(x)=
II. Reed Solomon Mã hóa thông qua đánh giá đa
thức
Tạo thông tin dư thừa bằng cách đánh giá một đa thức ở nhiều giá trị hơn của x hơn là thực sự
cần thiết.
Thông tin dư thừa cho phép chúng ta tìm thấy bản gốc giá trị trong trường hợp một từ mã bị
hỏng
Đặc tảtrong
giaoquá trình truyền.
thức
• Đồng ý về một bảng chữ cái.
• Đồng ý về độ dài k của từ thông điệp.
• Đồng ý về độ dài n của từ mã.(Sự khác biệt về độ dài giữa từ mã và từ tin nhắn càng dài
thì càng dư thừa và các ký hiệu bị hỏng có thể được sửa lỗi nhiều hơn.)
• Đồng ý về cách một số đa thức p(x) nên được xây dựng từ các ký hiệu của từ thông điệp.
• Đồng ý về các giá trị của x để đánh giá đa thức p(x).
• Đồng ý rằng từ mã được hình thành bằng cách đánh giá p(x) với số lượng x đã được thỏa
thuận về ở bước trước.
Encoder
Ví Dụ
• Thông điệp gốc là: (2;3;-5;1)
• Tạo đa thức p(x) = (k=4)
• Đánh giá đa thức tại 6 giá trị của x={-1;0;1;2;3;4} (n=6) (4,-2)

• Ta được 6 điểm: (−1;-7), (0;2), (1;1), (2;−4), (3;−7), ( 4;−2)


• Suy ra từ mã là: (-7;2;1;−4;−7;−2) (3; -7)

Decoder
• Nhận 6 ký hiệu của từ mã. Nếu không có lỗi, đó vẫn là (-7;2;1;−4;−7;−2)
• Lấy bất kỳ 4 trong số 6 ký hiệu nhận được và liên kết chúng với giá trị tương ứng
của x .
Nếu chúng ta lấy 4 ký hiệu từ mã đầu tiên, chúng ta sẽ nhận được (−1;-7), (0;2),
(1;1), (2;−4)
• Sử dụng 4 điểm này để rút ra các hệ số của đa thức p(x) đã được sử dụng bởi máy
phát.
Chúng ta sử dụng thuật toán Gaussian hoặc Lagrange được kết quả các hệ số
(2;3;-5;1)
Một lỗi đơn giản bộ giải mã REED
SOLOMON
Để sửa tối đa s ký hiệu cần ít nhất 2s ký hiệu dư thừa.

Ví dụ trên, có 2 ký hiệu dư thừa đã được thêm vào, cho


phép chúng ta sửa 1 ký hiệu bị hỏng.
• Giả sử bộ giải mã nhận được từ mã (-7;2;6;−4;−7;−2)
(Ký tự thứ 3 bị đổi thành 6 không phải 1, như vậy đã có
1 lỗi)
• Liên kết từng ký hiệu với giá trị tương ứng của x ta có
các điểm: (−1;-7), (0;2), (1;6), (2;−4), (3;−7), ( 4;−2)
• Từ 6 tọa độ này, lập tất cả các kết hợp của 4 điểm
• Từ các kết hợp đó ta suy ra các hệ số
Một lỗi đơn giản bộ giải mã REED
SOLOMON
(−1;-7),(0;2),(1;6),(2;−4)→(2;8;−5 / 2;−3/2)
(−1;-7),(0;2),(1;6),(3;−7)→(2;27/4 ;−5/2;−1/4)
(−1;-7),(0;2),(1;6),(4;−2)→(2,;19/3 ;−5/2;1/6)
(−1;-7),(0;2),(2;−4),(3;−7)→(2;3;−5 ;1)
(−1;-7),(0;2),(2;−4),(4;−2)→(2;3;−5 ;1)
(−1;-7),(0;2),(3;−7),(4;−2)→(2;3;−5 ;1)
(−1;-7),(1;6),(2;−4),(3;−7)→(19/2; 17/4;−10;9/4)
(−1;-7),(1;6),(2;−4),(4;−2)→(26/3; 14/3;−55/6;11/6)
(−1;-7),(1;6),(3;−7),(4;−2)→(7;61/ 12;−15/2;17/12)
(−1;-7),(2;−4),(3;−7),(4;−2)→(2;3;− 5;1)
(0;2),(1;6),(2;−4),(3;−7)→(2;18;−35 / 2;7 / 2)
(0;2),(1;6),(2;−4),(4;−2)→(2;49/3 ;−15;8/3)
(0;2),(1;6),(3;−7),(4;−2)→(2;13;−65 / 6;11 / 6)
(0;2),(2;−4),(3;−7),(4;−2)→(2;3;−5 ;1)
(1;6),(2;−4),(3;−7),(4;−2)→(2;3;−5 ;1)
Một lỗi đơn giản bộ giải mã REED
SOLOMON

• Các hệ số (2;3;−5;1) xuất hiện đến 6 lần. Tất cả các kết quả khác đều
khác nhau với nhau, vì vậy (2;3;−5;1) là kết quả chính xác!

 Kết Luận
Đây là một thuật toán sửa lỗi đơn giản, nhưng không phải vậy một cái có
thể sử dụng được, trong ví dụ nhỏ này có 4 ký hiệu và 2 ký hiệu dư thừa
mà đã cần đa thức. Trong thực tế có nhiều ký hiệu hơn thì ta cần đa
thức, con số này có thể rất lớn nên không thực tế lắm.
Rõ ràng là cần có một thuật toán tốt hơn nhiều để làm cho giải mã Reed-
Solomon trở nên hữu ích. May mắn những thuật toán này tồn tại:
“Một từ mã như một chuỗi các hệ số đa thức”
III. Một từ mã như một chuỗi các hệ số đa thức

 Một thông điệp có k ký hiệu, và chúng ta cần n các ký hiệu để


tạo thành một từ mã (n>k). Nếu một từ mã bao gồm các hệ số
của một đa thức, chúng ta cần tạo ra một đa thức s(x) bậc =
(n−1).
Dưới đây là một số thuộc tính mong muốn cho s(x):
• k các hệ số của nó phải giống với các ký hiệu của từ thông điệp
để tạo một mã có hệ thống
• Khi s(x) được đánh giá tại (n−k) giá trị của x, kết quả phải là 0.
Sau đây là một cách để tạo một đa thức với các thuộc tính này:
• Tạo đa thức p(x) với các ký hiệu ()như các hệ số, giống như trước.
• Tạo một đa thức gọi là generator polynomial
g( x)=(x−)(x−). . . (x−).
Như trước đây, các giá trị( ,. . . , )là các tham số cố định của giao thức và được thỏa
thuận giữa bộ mã hóa và bộ giải mã trước. Tuy nhiên, lần này chỉ có (n−k) giá trị
của , nhiều như có các ký hiệu dư thừa.
• Thực hiện phân chia đa thức của , sao cho p(x) =q(x)g( x)+r(x).
q(x) là thương số của phép chia; r(x) là phần dư của phép chia
• Xác định đa thức s(x)=p(x) − r(x).
• Ở bộ giải mã nhận được đa thức s’(x), thay lần lượt các giá trị của vào s’(x), nếu
s’()=0 thì từ mã nhận được không bị lỗi, nếu khác 0 thì đã có lỗi.
Khi xảy ra lỗi ta sử dụng thuật toán Peterson và thuật toán Berlekamp–Massey
để sửa lỗi.
Ví dụ
Ta lấy lại đa thức ở ví dụ trước
 Encoder
• Từ thông điệp chuyển đổi thành đa thức p(x)= .
• Hãy sử dụng = 1và = 2 là gốc của generator polynomial:
g(x)=(x−1)(x−2) = 2 − 3x + .
• Chia p(x) g(x). Nó trả về: - + +2 = .
Chúng tôi là chỉ quan tâm đến phần cuối cùng, phần còn lại r(x)=(18−17x).
• s(x)=p(x) − r(x) hoặc s(x)=(2 + - + )−18+17x.
• Từ mã là (2;3;−5;1;−18;17).
• Là một bước xác minh, bạn có thể điền các giá trị của 1 và 2 vào s(x).
Nó sẽ có kết quả bằng 0.
 Decoder
Bây giờ chúng ta hãy thực hiện một bước giải mã khi có lỗi.
• Từ mã nhận được là(2,3,−4,1,−18,17). Ký hiệu thứ ba đã được thay đổi từ -5 thành -4.
• Đa thức nhận được s′(x) là như vậy s′(x) = 2 + - + + 18−17x
• Điền vào gốc của g(x), 1 và 2, thành s′(x) để tìm 2 kết quả: s′(1)=1vàs′(2)=16.
• Các kết quả không phải là 0, đã có lỗi !
• Có 2 ký hiệu dư thừa, vì vậy số lượng ký hiệu bị hỏng tối đa mà chúng ta có thể khôi
phục là 1. Cách đơn giản nhất để tìm ra ký hiệu nào đã bị hỏng là xem qua tất cả 6 khả
năng và xem liệu chúng ta có nhận được một phương trình nhất quán hay không. Giống
như thế này:
• Giả sử hệ số đầu tiên là sai, và tất cả những người khác đều đúng. Trong trường hợp
đó,
là một ẩn số, và tất cả các hệ số khác được biết đến:s(x)= + −4+ −18+17x.
Nếu chúng tôi điền vào x = 1, chúng tôi nhận được: +3−4+1−18+17=0→ = 1.
Cho x = 2: 4+24−64+32−18+34=0→ =3/4.
• Chúng ta có các giá trị mâu thuẫn cho , vì vậy chúng ta có thể kết luận rằng không phải
• Chúng ta có thể làm tương tự cho tất cả các hệ số khác. Đối với tất cả chúng, bạn
sẽ nhận được các giá trị mâu thuẫn, ngoại trừ :
Cho x = 1: 2 + 3+ +1−18+17=0→ =−5.
Cho x = 2: 8 + 24 + 16+32−18+34=0→ =−5. Các giá trị phù hợp!
• Từ mã nhận được đã được sửa thành(2,3,−5,1,−18,17). Từ tin nhắn là 4 từ đầu
tiên ký hiệu của từ mã.
15

YOU CAN ALSO SPLIT YOUR


CONTENT
White Black
Is the color of milk and fresh Is the color of ebony and of
snow, the color produced by outer space. It has been the
the combination of all the symbolic color of elegance,
colors of the visible solemnity and authority.
spectrum.

You might also like