You are on page 1of 43

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

----- -----

BÁO CÁO
KỸ THUẬT PHÁT THANH TRUYỀN HÌNH

Sinh viên: Nguyễn Tiến Xuyên


MSV: B15DCVT468

Hà Nội năm 2019

1
contents
I. Reed-Solomon code .................................................................................................................... 3
1. Giới thiệu ............................................................................................................................... 3
2. Mã hóa ................................................................................................................................... 3
II. Decoding algorith .................................................................................................................... 4
1. Thuật toán lý thuyết ................................................................................................................ 4
1.1 Giải mã hội chứng ............................................................................................................ 5
1.2 Giải mã mã tuần hoàn ...................................................................................................... 9
1.3 Thuật toán giải mã cho các mã tuần hoàn: ................................................................................ 12
2. Tìm vị trí lỗi .............................................................................................................................. 13
2.1 Thuật toán Peterson-Gorenstein-Zierler ......................................................................... 13
2.2 Thuật toán Berlekamp-Massey ............................................................................................... 21
2.3 Thuật toán Sugiyama ............................................................................................................. 26
2.4 Chien search......................................................................................................................... 27
3.Tìm giá trị lỗi ............................................................................................................................ 28
3.1 Thuật toán Forney ................................................................................................................. 29
3. Giải mã xóa .......................................................................................................................... 30
5. Gusruswami-Sudan thuật toán ..................................................................................................... 34
5.1 Thuật toán K¨otter ................................................................................................................. 36
5.2 Thuật toán Roth-Ruckenstein ................................................................................................. 38
5.3 Thuật toán K¨otter-Vardy ...................................................................................................... 39

2
I. Reed-Solomon code
1. Giới thiệu

Trong lý thuyết mã hóa, mã Reed-Solomon (RS) là một mã vòng sửa lỗi tuyến tính
phát minh bởi Irving S. Reed và Gustave Solomon. Bằng cách thêm vào t ký hiệu kiểm tra,
𝑡
mã RS có thể nhận ra không quá t ký hiệu lỗi và sửa không quá [ ] ký hiệu lỗi. Dưới dạng
2
mã xóa, nó có thể sửa không quá t ký hiệu bị xóa ở các vị trí đã biết, hoặc nhận dạng và sửa
cả ký hiệu lỗi và ký hiệu bị xóa. Ngoài ra, mã RS còn hữu hiệu cho việc sửa nhiều bit lỗi liên
tiếp, do một dãy b+1 bit bị lỗi liên tiếp chỉ có thể ảnh hưởng đến hai ký hiệu có kích thước b.
Tham số t có thể được chọn tùy ý tùy theo người thiết kế mã trong một giới hạn khá rộng.
Trong mã hóa Reed-Solomon, các ký hiệu là các hệ số của một đa thức p(x) trên một
trường hữu hạn. Ý tưởng ban đầu của mã RS là tạo ra n ký hiệu mã từ k ký hiệu nguồn bằng
cách tính p(x) tại n>k điểm, truyền tải n giá trị này, và dùng kĩ thuật nội suy để xây dựng lại
các ký hiệu nguồn. Thay vào đó, mã RS cũng có thể được xem là mã vòng BCH, trong đó
các ký hiệu mã được xây dựng từ hệ số của đa thức tích của p(x) và một đa thức sinh. Cách
nhìn này dẫn đến thuật toán giải mã hiệu quả do Elwyn Berlekamp và James Massey, được
gọi là thuật toán giải mã Berlekamp-Massey.
Hơn nữa, mã Reed-Solomon là:
• Mã tuyến tính, trong đó kết quả của sự kết hợp tuyến tính của bất kỳ hai từ mã nào là từ mã
• Mã tuần hoàn, trong đó kết quả của sự dịch chuyển theo chu kỳ của từ mã là từ mã,
• Mã khối, trong đó chuỗi dữ liệu được chia thành các khối có độ dài cố định và các khối này
được mã hóa độc lập,
• Mã phi nhị phân, trong đó các ký hiệu mã không phải là nhị phân 1 hoặc 0.
Mã Reed-Solomon có độ dài n phần tử và mã hóa k phần tử thông tin, được ký hiệu là
RS (n, k). Mã RS (n, k) có các thuộc tính sau:
• Từ mã bao gồm n ký hiệu mã,
• Từ mã hóa k yếu tố thông tin,
• Số phần tử điều khiển dự phòng là r = n - k,
𝑟
• Mã có khả năng sửa lỗi là t = [ ],
2
• Khoảng cách Hamming tối thiểu là dmin = r + 1.
2. Mã hóa

2.1 Định nghĩa ban đầu


Cách định nghĩa đầu tiên của mã Reed-Solomon là mã hóa k ký hiệu bằng cách xem
chúng như hệ số của một đa thức p(x) bậc k-1 trên một trường hữu hạn kích thước N, và tính
giá trị của đa thức đó tại n>k điểm. Tính giá trị của một đa thức bậc k-1 tại hơn k điểm tạo ra
một hệ phương trình nhiều phương trình hơn số ẩn số, do đó cho phép tìm lại k hệ số từ n giá
trị thông qua nội suy. n có thể nhận mọi giá trị không quá N.

3
Giả sử (x1, x2,..., xn) là một danh sách gồm n phần tử khác nhau của trường F. Bộ mã
C được tạo từ các dãy n phần tử nhận được từ việc tính giá trị một đa thức bậc nhỏ hơn k bất
kì trên trường F tại các giá trị xi.
𝐶 = {(𝑓(𝑥1 ), 𝑓(𝑥2 ), … , 𝑓(𝑥𝑛 ))|𝑓 ∈ 𝐹 [𝑥], 𝑑𝑒𝑔(𝑓) < 𝑘}
trong đó F[x] là vành đa thức trên F, và k, n được chọn sao cho 1≤ k ≤ n ≤ N.
Giả sử α là một phần tử sinh của nhóm nhân của F. Dãy (x1, x2,..., xn) với n=N có thể được
chọn là (0, α0, α1,…, αN-2).
Khi loại bỏ 0 khỏi dãy trên, do αN-1 = 1, với mọi đa thức p(x), đa thức p(αx) cũng là
một đa thức cùng bậc, và mã của nó chính là mã của p(x) xoay trái một vị trí. Do đó mã
Reed-Solomon có thể được xem là một mã vòng.
2.2 Định nghĩa cổ điển dưới dạng mã BCH
Mỗi ký hiệu mã có thể được xem là một hệ số của đa thức tích s(x) bằng tích của đa
thức nguồn p(x) với một đa thức sinh g(x) bậc t=N-k-1. Giả sử α là một phần tử sinh của
nhóm nhân trong trường hữu hạn đã cho. Đa thức sinh g(x) được định nghĩa là đa thức có α,
α2,…, αt là nghiệm.
g(x) = (x – a) (x – a2) … (x – at) = g0 + g1x + … + gt-1xt-1 + xt
Người gửi gửi đi N-1 hệ số của s(x)=p(x)g(x) và người nhận chia đa thức nhận được
cho đa thức g(x) để xác định xem mã nhận được có lỗi hay không. Nếu phần dư khác không
thì mã nhận được có lỗi. Đặt r(x) là đa thức dư của phép chia trên. Người nhận có thể tính giá
trị của r(x) tại các nghiệm của g(x) và xây dựng một hệ phương trình để tìm ra các lỗi.
Mã Reed-Solomon là một trường hợp đặc biệt của một lớp rộng hơn, gọi là mã BCH.
Thuật toán Berlekamp-Massey được thiết kế để giải mã cho mã BCH, và do đó cũng dùng
được cho mã Reed-Solomon. Có thể thấy mã Reed-Solomon là một trường hợp đặc biệt của
mã BCH dễ dàng hơn trong một định nghĩa khác của mã Reed-Solomon sau đây.
Cho trước một trường F kích thước q. Giả sử n = q-1 và α là một phần tử sinh của
nhóm nhân của F. Cũng giả sử được cho trước 1≤ k ≤ n. Mã Reed-Solomon với các tham số
trên có chứa mã tự (f0, f1,…, fn-1) khi và chỉ khi α, α2,…, αn-k là nghiệm của đa thức:
p(x) = f0 + f1x + … + fn-1xn-1
Với định nghĩa này, rõ ràng mã Reed-Solomon là một mã đa thức, và cụ thể hơn là
một mã BCH. Đa thức sinh g(x) là đa thức nhỏ nhất với nghiệm α, α2,…, αn-k, và các mã tự
chính là các đa thức chia hết cho g(x).

II. Decoding algorith


1. Thuật toán lý thuyết
Thuật toán cho mã RS (n,k) kiểm tra tất cả mọi bộ k ký hiệu trong số n ký hiệu nhận
được. Nói chung, để có thể giải mã thì cần nhận được ít nhất k ký hiệu đúng, và đây cũng
chính là số ký hiệu cần thiết để nội suy ra đa thức thông điệp. Thuật toán giải mã thử nội suy

4
mọi bộ k ký hiệu và so sánh giá trị của đa thức thu được ở các vị trí khác với giá trị nhận
được. Đa thức nào cho giá trị đúng ở nhiều vị trí nhất chính là đa thức thông điệp. Tuy nhiên
số tập hợp con gồm k ký hiệu là rất lớn nên thuật toán này không có giá trị thực tiễn. Số tập
hợp con là:
𝑛!
(𝑛 − 𝑘 )! 𝑘!
quá lớn với ngay cả những mã khá nhỏ. Để sửa 3 lỗi của mã (255,249), thuật toán phải
kiểm tra 359 tỉ tập hợp con.
1.1 Giải mã hội chứng

Mã RS (n, k) là không gian con k chiều của không gian n chiều. Nó được kết nối với
hai ma trận sau :
+ Ma trận trình tạo G, bao gồm các vectơ độc lập tuyến tính k, được sử dụng để tạo ra
từ mã c = mG, trong đó m biểu thị vectơ k chiều của các phần tử thông tin.
+ Ma trận kiểm tra chẵn lẻ H, được sử dụng để giải mã vector nhận được.
Ma trận kiểm tra chẵn lẻ được sử dụng để tính toán các hội chứng. Hội chứng s được
tính như sau:
s = rHT
Trong đó r biểu thị vectơ nhận được và HT là ma trận biến đổi H. Nếu vectơ nhận
được là từ mã, thì hội chứng là vectơ 0 : s = cHT = 0, nếu vecto nhận được là lỗi, có thể được
viết rằng từ mã trong kênh truyền thông đã được thêm vectơ lỗi: r = c + e, trong đó e biểu thị
vectơ lỗi.
Đối với ma trận trình tạo mã RS (n, k) như sau:

Từ mã cho các yếu tố thông tin m = (m1, ..., mk) có thể được thể hiện
như sau:

Ví dụ 1: Cho là mã RS (7,3) được tạo trong GF (8) bởi đa thức p (x) = x3 + x + 1. Ma


trận máy phát G như sau:

5
Với m = (α, α2,1):

Xây dựng từ mã với ma trận G cho kết quả tương tự như sử dụng phương pháp ban
đầu. Đặt m → m (x):

Sử dụng phương pháp mã hóa gốc :

Ma trận kiểm tra chẵn lẻ cho mã RS (n, k) là:

Đặt vectơ nhận được là r = (r0, r1, r2, ..., rn-1):

6
Có thể nhận thấy rằng các yếu tố hội chứng đặc biệt là giá trị điện toán của đa thức r
(x), trong đó:

Đối với mã RS (n, k), trong đó các gốc của đa thức g (x) là các phần tử 2t liên tiếp α,
α , ..., α2t, mã đúng là:
2

Các yếu tố đặc biệt của vector hội chứng là:

Ví dụ 2: Ma trận kiểm tra chẵn lẻ cho mã RS (7,3):

7
Nó có thể được viết rằng:

Hội chứng sau đó chỉ phụ thuộc vào vectơ lỗi, có nghĩa là có thể tạo ra mảng mà trong đó
vectơ hội chứng được gán cho các mẫu lỗi. Mảng như vậy có 2 cột và hàng qn-k cho mã RS
(n, k) trong GF (q). Giải mã là một quá trình của hội chứng điện toán và sau đó là mô hình
lỗi phát sinh trong mảng được gán cho hội chứng tính toán. Khi mô hình lỗi được tìm thấy,
sau đó nó được thêm vào vector nhận được. Phương pháp này vẫn không thực tế, vì kích
thước của mảng như vậy có thể rất lớn.
Ví dụ 3: Đã có ba từ mã của mã RS (7,3) được tạo trên GF (8) với đa thức trình tạo:
p (x) = x3 + x + 1:

Tất cả ba vectơ là kết quả của việc giải mã vectơ thông tin m = (α, α2,1) với ba phương thức:
mã BCH không hệ thống, mã BCH có hệ thống, phương thức ban đầu. Tất cả ba vectơ nằm
trong cùng một không gian tuyến tính của mã RS (7,3). Đặt vectơ lỗi là e (x) = αx6 → e =
(0,0,0,0,0,0, α). Các vectơ nhận được như sau:

Bảng 1: Đoạn mảng hội chứng cho mã RS (7,3).

8
Vectơ hội chứng s = (s1, s2, s3, s4) cho các vectơ nhận được như sau:

Giá trị của vectơ hội chứng cho ba vectơ nhận được là như nhau. Vectơ hội chứng cho vectơ
nhận được là s = (1, α6, α5, α4). Đoạn mảng hội chứng cho mã RS (7,3) được hiển thị trong
bảng 1. Đối với vectơ hội chứng s = (1, α6, α5, α4) có mẫu lỗi được gán e = (0,0,0,0,0,0, α).
Các vectơ nhận được sửa chữa bằng cách thêm mẫu lỗi vào vectơ nhận được.

1.2 Giải mã mã tuần hoàn

Ma trận trình tạo mã tuần hoàn như sau:

Ví dụ 4: Đối với mã RS (7,3) trên GF (8) được tạo bởi p (x) = x3 + x + 1, có đa thức
trình tạo sau:

Đặt vectơ thông tin là m = (α, α2,1). Mã cho vectơ này là:

9
Vectơ m = (α, α2,1) có thể được viết dưới dạng đa thức m (x) = α + α2x + x2.
Codeword có thể được tạo như sau:

Kết quả của cả hai phương pháp đều giống nhau. Mã hệ thống có thể được tạo nếu ma
trận trình tạo G sẽ có dạng như vậy mà ở phần bên phải sẽ có ma trận danh tính.
Ví dụ 5: Để tạo ma trận trình tạo mã hệ thống RS (7,3) được sử dụng trong ma trận G
từ ví dụ 4. Ma trận này có thể được chuyển đổi thành ma trận như sau:

Đặt vectơ thông tin là m = (α, α2,1). Từ mã cho vectơ này là:

Đối với cùng một vectơ m → m (x) = α + α2x + x2, từ mã cũng có thể được tạo như
sau:

Kết quả của cả hai phương pháp đều giống nhau. Đa thức trình tạo mã RS (n, k) tuần
hoàn chia đa thức xn+1. Để tạo ma trận kiểm tra chẵn lẻ H, phải có đa thức h (x) có dạng:

Ma trận kiểm tra chẵn lẻ cho mã RS (n, k) như sau:

10
Nó đúng khi mà cHt=0.
Ví dụ 6: Đối với mã RS (7,3), trong đó g (x) = x4 + α3x3 + x2 + αx + α3:

Ma trận kiểm tra chẵn lẻ cho mã RS (7,3) có dạng:

Ma trận kiểm tra chẵn lẻ 4.2 có thể có dạng như vậy, ở phần bên trái được đặt ma trận danh
tính.

Ta có: cH’T=0
Sử dụng ma trận kiểm tra chẵn lẻ trong hình thức này, có thể có các hội chứng được tạo ra,
đó cũng sẽ là các mẫu tự lỗi. Các lỗi phải được đặt ở các vị trí r0, r1, ..., rn − k 1 của vectơ nhận
được r. Hơn nữa, không thể có nhiều lỗi hơn khả năng sửa lỗi của mã.
Ví dụ 7: Ma trận kiểm tra chẵn lẻ 4.3 cho mã RS (7,3) sau khi một số biến đổi có thể được
viết là:

Đưa ra sau vector nhận được:

11
Sử dụng ma trận kiểm tra chẵn lẻ, có thể có véc tơ hội chứng tính toán:

Hội chứng ở dạng đa thức s’ = (0,0, α3,1) → s’ (x) = x3 + α3x2 giống như vectơ lỗi e (x).
Vector nhận được có thể được sửa chữa như sau:

Đối với mã tuần hoàn thì mã đúng là:


m(x)g(x) + s’(x) = r(x)
s’(x) = r(x) mod g(x)
Mã khác có thể có:
r(x) = c(x) + e(x) & r(x) = c(x) + s’(x)
e(x) = r(x) mod g(x)
Từ các phương trình trên có thể nhận thấy rằng e (x) = s’(x). Điều này đúng khi các lỗi nằm
ở các vị trí r0, r1, ..., rn − k 1 của vectơ r nhận được.
1.3 Thuật toán giải mã cho các mã tuần hoàn:
1. Đặt i = 0 và i biểu thị số đơn vị dịch chuyển của vectơ nhận được từ bên trái.
2. Đặt ri(x) biểu thị vectơ nhận được r(x) và dịch chuyển i lần theo hướng trái.
Tính: s’i(x) = ri (x) mod g (x).
3. Gọi w(y) biểu thị giá trị mật độ Hamming của vectơ y. Mật độ Hamming mô tả số
lượng các yếu tố khác không của vector:

12
w=w(s’i(x))
4. Nếu w ≤ t, trong đó t biểu thị khả năng sửa lỗi của mã, ta có:

sau đó dịch chuyển ri(x) theo đúng hướng i-lần và kết thúc. Nếu w > t, sau đó tiếp
tục.
5. Nếu i = k, trong đó k biểu thị số phần tử điều khiển của từ mã, nó sẽ kết thúc và
báo hiệu rằng mẫu lỗi không thể sửa được xảy ra. Nếu i < k, thì tiếp tục.
6. Chuyển tuần hoàn một lần ri(x) theo hướng trái.
7. i=i+1.
8. Quay lại bước 2.

2. Tìm vị trí lỗi


Reed-Solomon có thể được coi là mã BCH không phân biệt, có nghĩa là các ký hiệu
mã là không phân biệt. Trong quá trình giải mã mã nhị phân, cần có một thông tin để sửa lỗi,
đó là vị trí lỗi. Những lỗi này có thể được sửa bằng cách thêm 1 vào giá trị ở vị trí lỗi. Đối
với các mã không phân biệt thì điều này phức tạp hơn một chút, vì ngoại trừ vị trí lỗi, cũng
phải có giá trị lỗi được biết. Trong chương này, có các thuật toán được mô tả cho các vị trí
lỗi và giá trị lỗi.
2.1 Thuật toán Peterson-Gorenstein-Zierler

Sử dụng định nghĩa 4.1, đúng là:


si = r(αi) = c(αi) + e(αi)
Đối với các gốc 2t liên tiếp của đa thức trình tạo mã, đúng là:
si = c(αi) = 0
Hội chứng có thể được biểu thị như sau:

si = e(αi) = ej(αi)j
j=0
Lỗi xảy ra tại chỗ, trong đó ej 6 = 0, do đó, đối với số lỗi xảy ra v, các vị trí lỗi được ký hiệu
là k1, k2, ..., kv:
∑ ∑
si = ekj (αi)kj = ekj (αkj )i
j=1 j=1

Đặt Xj = αkj. Giá trị này phụ thuộc vào vị trí lỗi và được gọi là bộ định vị lỗi:

13
Các giá trị liên tiếp 2t của các hội chứng có thể được biểu thị như sau:
s1 = ek1X1 +ek2 X2 + ...+ek v Xv
s2 = ek 1 1 +ek2 X2 + ...+ek v v

s2t = ek 1 1 +ek2X2t + ...+ek v v

Hãy để có một đa thức với các gốc của phép nhân bội của Xj
.Đa thức như vậy được gọi là đa thức định vị lỗi:

Λ(x) = (1 − Xj x) = Λv xv + Λv−1xv−1 + . . . + Λ1x + Λ0 ( 4.6)

j=1
Nhìn vào định nghĩa của đa thức định vị lỗi 4.6, có thể nhận thấy rằng A 0 = 1. hội chứng thứ
k có thể được biểu thị là [12]:
Λvsk−v + Λv−1sk−v+1 + ... + Λ1sk−1 = −sk
Ví dụ 4.8. Đối với mã RS (7,3) khả năng sửa lỗi t = 2, hãy để số lỗi xảy ra là v = t. Đúng là
Λ0 = 1 và đa thức Λ (x) phải là bậc 2:
Λ(x) = Λ2x2 + Λ1x + 1
Sử dụng phương trình 4.7, nó có thể được tính toán:

dla k = 3 Λ2s3−2 + Λ2−1s3−2+1 = −s3


Λ2s1 + Λ1s2 = −s3

dla k = 4 Λ2s4−2 + Λ2−1s4−2+1 = −s4


Λ2s2 + Λ1s3 = −s4
Giả sử số lỗi xảy ra là v, phương trình v tiếp theo 4.7 có thể được biểu thị bằng:

14
Nếu có 2t liên kết và các ký tự s1, s2, ..., s2t - 1, s2t và không đúng là s1 = s2 = ... = s2t = 0,
thì thuật toán Peterson-Gorenstein-Zierler như sau : 1. Giả sử rằng v = t. 2. Kiểm tra xem ma
trận M (v) có phải là số ít không.
• Nếu xác định của ma trận M (v) bằng 0, có nghĩa là detM (v) = 0, thì ma trận là số ít. Trong
trường hợp này, giảm giá trị v xuống 1, v = v - 1. Nếu v = 0, thì tín hiệu và tín hiệu không thể
sửa được đã xảy ra, nếu không, hãy quay lại điểm 2.
• Nếu xác định ma trận M (v) không bằng thành 0, có nghĩa là detM (v) 6 = 0, sau đó ma trận
là không có giá trị và tiếp tục.

3. Giải phương trình sau:

4. Kết quả là đa thức vị trí lỗi là:

15
Xác định ma trận M (v) có thể được tính bằng cách mở rộng Laplace. Để có một ma trận
gồm m hàng và cột:

Mở rộng Laplace có thể được thể hiện như sau:

4. Kết quả là đa thức vị trí lỗi là:

Λ(x) = Λv xv + Λv−1xv−1 + . . . + Λ1x + 1


Xác định ma trận M (v) có thể được tính bằng cách mở rộng Laplace. Để có một ma trận
gồm m hàng và cột:

Mở rộng Laplace có thể được thể hiện như sau:

Chỉ số 1 ≤ i m biểu thị số hàng của ma trận A. Cofactor Di, j của phần tử ai, j có thể được
biểu thị là:
Di,j = (−1)i+j detAi,j,

Trong đó Ai, j biểu thị ma trận A od order m - 1 là kết quả của việc xóa hàng thứ i và cột thứ
j của ma trận A [11]. Trong trường Galois của đặc tính 2, có thể giảm rằng (1) i + j = 1 cho
mỗi hàng i và cột j, do đó, đồng yếu tố có thể được biểu thị như sau:
Di,j = detAi,j
Các bộ phương trình có thể được tính bằng cách loại bỏ Gaussian. Hãy để có một bộ phương
trình sau đây:

16
2. Đặt biến i = 1. 3. Nhân hàng thứ i với a − 1 i, i. 4. Với 1 j ≤ m; i 6 = j tính rj = aj, iri + rj,
trong đó rj biểu thị hàng thứ j. 5. Tăng i lên 1, i = i + 1. Nếu i> m thì nish, khác đi đến điểm

3. Kết quả là ma trận sau:

Ví dụ 4.9.
Đối với mã RS (15, 7), hãy để từ mã mẫu mực là:
c(x) = α6x14 + αx13 + x12 + α2x11 + αx10 + αx9
+α2x8 + α3x7 + α7x6 + α9x5 + α5x4 + α9x3 + x + α10
Vectơ lỗi như sau:
e(x) = αx14 + α2x9 + x4
Vector nhận được như sau:
r(x) = α11x14 + αx13 + x12 + α2x11 + αx10 + α5x9
+α2x8 + α3x7 + α7x6 + α9x5 + α10x4 + α9x3 + x + α10

Mã RS (15,7) có khả năng sửa lỗi là t = 4. Bước đầu tiên của việc tìm kiếm
vị trí lỗi ing là để tính giá trị hội chứng 2t. Rễ của đa thức trình tạo mã là các phần tử liên
tiếp α, α2 ,. . . , α2t.
s1 = r(α) = α6
s2 = r(α2) = α9
s3 = r(α3) = α7
s4 = r(α4) = α3
s5 = r(α5) = α6
s6 = r(α6) = α4

17
s7 = r(α7) = 1
s8 = r(α8) = α3
Giai đoạn tiếp theo là kiểm tra xem ma trận M (v = t = 4) có phải là số không:

18
Xác định ma trận M (4) bằng 0, có nghĩa là ma trận là số ít. Bước tiếp theo là tính toán xác
định của ma trận M (3):

Xác định ma trận M (3) không bằng 0, có nghĩa là ma trận đó


là vô nghĩa. Nó cũng có nghĩa là ba lỗi đã xảy ra. Phải có
bộ phương trình sau:
Xác định ma trận M (3) không bằng 0, có nghĩa là ma trận đó
là vô nghĩa. Nó cũng có nghĩa là ba lỗi đã xảy ra. Phải có
bộ phương trình sau:

Sử dụng loại bỏ Gaussian có các hệ số tính toán của đa thức


Λ (x):

Biến i = 1, vì vậy hàng đầu tiên được nhân với a−1 i,i = a−1 1,1 = α−6 = α9:

19
Đến hàng thứ hai được thêm hàng đầu tiên nhân với α9 và hàng thứ ba được thêm vào hàng
đầu tiên nhân với α7.

Theo kết quả của các bước tiếp theo, ma trận sẽ thu được:

Kết quả của tập hợp các phương trình là 3 = α12, 2 = 0, 1 = 0. Đa thức định vị lỗi như sau:
Λ (x) = α12x3 + 1
Rễ của đa thức này là x1 = α, x2 = α6, x3 = α11. Lỗi định vị là
X1 = x − 11 = α14, X2 = x − 12 = α9, X3 = x − 13 = α4. Đa thức định vị lỗi có thể được biểu
thị như sau:
Λ (x) = (α14x - 1) (α9x - 1) (α4x - 1)
Điều đó có nghĩa là đã xảy ra lỗi ở các vị trí 14, 9 và 4 của vectơ nhận được.

20
2.2 Thuật toán Berlekamp-Massey

Thuật toán Berlekamp-Massey tìm thấy đa thức định vị lỗi [10] [14] [4] [5].
Sử dụng phương trình 4.7 cho một số phần tử đầu tiên của mã sửa lỗi

Hình 4.1: LFSR tạo ra các hội chứng tiếp theo với việc sử dụng đa thức
Λ (x) = α12x3 + 1.

khả năng của t, nó có thể được biểu thị cho v và v <j 2t là:

−sv + 1 = s1sv + 2sv 1 +. . . + Λv s1


−sv + 2 = Λ1sv + 1 + 2sv +. . . + Λv s2
−s2t = 1s2t 1 + 2s2t 2 +. . . + Λv s2t – v
Ví dụ 4.10.
Cho là mã RS (15, 7) khả năng sửa lỗi t = 4. Trong vectơ nhận được
Xảy ra 3 lỗi. Đã tính toán đa thức định vị lỗi sau:
Λ (x) = α12x3 + 1
Các hội chứng 2t tiếp theo cho vector nhận được:
s1 = α6

21
s2 = α9
s3 = α7
s4 = α3
s5 = α6
s6 = α4
s7 = 1
s8 = α3
Đối với số lỗi v = deg (x) = 3, đúng là:

−s4 = Λ1s3 + Λ2s2 + Λ3s1


α3 = 0 • α7 + 0 • α9 + α12 • α6

−s5 = Λ1s4 + Λ2s3 + Λ3s2


α6 = 0 • α3 + 0 • α7 + α12 • α9

−s6 = Λ1s5 + Λ2s4 + Λ3s3


α4 = 0 • α6 + 0 • α3 + α12 • α7

7s7 = Λ1s6 + Λ2s5 + Λ3s4


1 = 0 • α4 + 0 • α6 + α12 • α3

8s8 = Λ1s7 + Λ2s6 + Λ3s5


α3 = 0 • 1 + 0 • α4 + α12 • α6
LFSR (Đăng ký thay đổi phản hồi tuyến tính) có thể được sử dụng để tính toán đồng
bộ hóa tiếp theo trống LFSR, tạo ra các hội chứng tiếp theo s1, s2 ,. . . , s8 được hiển thị trên
pic-ture 4.1.
Lúc đầu, flip-flop được khởi tạo với syndromes s1, s2, s3.
Số nhân nhân với hằng số, là một trong các hệ số lỗi-đa thức định vị (x). Với mỗi chu kỳ
đồng hồ được tạo ra giá trị tiếp theo của hội chứng.Vấn đề tìm hệ số của đa thức định vị lỗi
có thể là nhấn vào vấn đề xây dựng LFSR như vậy, tạo ra sự đồng bộ tiếp theo trống s1, s2 ,.

22
. . , s2t. Thuật toán Berlekamp-Massey tạo LFSR như vậy trong các lần lặp 2t. Thuật toán
Berlekamp-Massey như sau cho s1, s2 ,. . . , s2t, trong đó không đúng là s1 = s2 =. . . = s2t =
0:
1. Đặt biến L0 = 0. Biến L0 biểu thị độ dài của LFSR theo rth lặp đi lặp lại Đặt biến r = 0.
Biến r đại diện cho bộ đếm lặp. Đặt đa thức định vị lỗi là (0) (x) = 1. Đặt đa thức phụ trợ as
B (x) = 1, sẽ được sử dụng để xây dựng LFSR.
2. Tăng bộ đếm lặp r lên 1, r = r + 1.
3. Tính giá trị chênh lệch (r). Sự khác biệt được định nghĩa là khác nhau sự lên men giữa giá
trị của hội chứng sr, cần được tạo ra bởi
LFSR và giá trị, được sản xuất thực sự bởi LFSR:

23
4. So sánh (r) với số không:
• Nếu (r) = 0, điều đó có nghĩa là LFSR thực sự tạo ra hội chứng sr và nó không nên
được sửa đổi, vì vậy Λ (r) (x) = Λ (r − 1) (x), Lr = Lr − 1.
• Nếu (r) = 0, điều đó có nghĩa là LFSR cần được sửa đổi. Ở đó có thể được sửa đổi
hai điều - chiều dài của LFSR và hệ số của đa thức (r − 1) (x). Có các hệ số mới được
tính toán của
Λ (r) (x):
Λ(r)(x) = Λ(r−1)(x) − Δ(r)xB(x)
Độ dài mới của LFSR trong lần lặp r đã cho được mô tả là:
Lr = max[Lr−1,r − Lr−1]
Đó là sự thật, độ dài của LFSR phải được thay đổi, nếu:
2Lr−1 ≤ r – 1

Xác định ma trận M (4) bằng 0, có nghĩa là ma trận là số ít. Bước tiếp theo là tính toán
xác định của ma trận M (3):
5. Nếu deg Λ (r) (x)> t, trong đó t biểu thị khả năng sửa lỗi của mã, sau đó kết thúc và
báo hiệu rằng mẫu lỗi không thể sửa được đã xảy ra, khác tiếp tục.
6. Nếu r = 2t thì kết thúc. Đa thức định vị lỗi là Λ (x) = (2t) (x).
Nếu r <2t thì quay lại điểm 2.
Ví dụ 4.11.
Cho là hội chứng sau
s1
=
α6

24
s2 = α 9
s3 = α 7
s4 = α 3
s5 = α 6
s6 = α 4
s7 = 1
s8 = α 3
Với việc sử dụng thuật toán Berlekamp-Massey, sẽ tạo ra LFSR, tạo ra các hội chứng
này và đa thức định vị lỗi Λ (x).
Đầu tiên, các biến được khởi tạo:

Λ (0) (x) = 1 B (x) = 1


Biến r được tăng thêm 1, r = 1 Sai lệch được tính:
Sai lệch không bằng 0, sau đó LFSR nên được sửa đổi:
Λ (1) (x) = Λ (r − 1) (x) −Δ (r) B (x) = Λ (0) (x) −Δ (1) B (x) x = 1 − α6 • 1x = α6x +
1
Nó cũng hài lòng rằng:
2Lr − 1 r - 1
0≤0
Độ dài của LFSR cũng nên được thay đổi và đa thức phụ B (x) là sửa đổi

25
Bảng xếp hạng 4.2: Các từ theo hướng tới cho vui chơi Berlekamp-Massey,
2.3 Thuật toán Sugiyama
Thuật toán Sugiyama được sử dụng để tìm đa thức định vị lỗi và nó
Hợp kim thuật toán Euclide mở rộng để giải quyết nhiệm vụ này [14]. Cho là theo sau
đa thức, trong đó các hệ số là các hội chứng tiếp theo:

S(x) = s1x + s2x2 + s3x3 + . . . + s2tx2t = s nxn
n=1
Cho là phương trình sau:

Λ(x)S(x) = Ω(x) mod x2t+1

Phương trình này được gọi là phương trình chính. Đa thức (x) được gọi là bộ
đánh giá lỗi đa thức và được sử dụng để tìm giá trị lỗi. Phương trình trên có thể được
thể hiện như:

a(x)x2t+1 + Λ(x)S(x) = Ω(x),

trong đó a (x) là một đa thức thỏa mãn phương trình.

Nhận dạng Bezout cho hai đa thức a (x) và b (x), trong đó com- lớn nhất ước số
mon là GCD (a (x), b (x)) = c (x), có thể được biểu thị dưới dạng:

a (x) m (x) + b (x) n (x) = c (x),

Trong đó m (x) và n (x) là một số đa thức. Phương trình này có thể được giải
bằng thuật toán Euclide mở rộng. Kết quả của thuật toán là lỗi định vị polyno-mial
(x).
Thuật toán Sugiyama cho hội chứng đa thức S (x), trong đó deg S (x)> 0, như sau:

2. Kiểm tra xem mức độ t (x) nhỏ hơn hoặc bằng khả năng sửa lỗi mã t:

26
• Nếu deg t (x) t, kết thúc. Kết quả là:

Λ (x) = (A2,2 (0)) - 1A2,2 (x)

Nếu deg Λ (x) = 0, báo hiệu rằng mẫu lỗi không thể sửa được có xảy ra
• Jesli deg t (x)> t, sau đó tiếp tục.

3. Tính toán

4. Tính toán

Thuật toán tiếp tục cho đến khi deg t (x) t. Kết quả của thuật toán là (x) =
α12x3 + 1, giống như kết quả của thuật toán Peterson-Gorenstein-Zierler và thuật toán
Berlekamp-Massey cho cùng một dữ liệu đầu vào.
2.4 Chien search
Chien search là một phương pháp tìm gốc của đa thức định vị lỗi Λ (x) [13]
[14]. Đối với trường GF (2m), hãy kiểm tra các phần tử tiếp theo 1, α ,. . . , α2m 2 cho
dù chúng là gốc hay không của Λ (x).
Đa thức (x) có thể được biểu thị dưới dạng:
Λ(x) = Λtxt + Λt−1xt−1 + . . . + Λ1x + Λ0
Phần tử αi là gốc của đa thức Λ (x) nếu nó thỏa mãn:
Λ(αi) = Λtαit + Λt−1αi(t−1) + . . . + Λ1αi + Λ0 = 0
Nhớ lại rằng Λ0 = 1:
Λ(αi) − 1 = Λtαit + Λt−1αi(t−1) + . . . + Λ1αi = −1 It is
đúng với phần tử αi + 1 rằng:

Λ(αi+1) − 1 = Λtα(i+1)t +
Λt−1α(i+1)(t−1) + . . . +
Λ1αi+1
Λ(αi+1) − 1 = Λtαitαt +
Λt−1αi(t−1)αt−1 + . . . +
Λ 1 αi α

27
Có thể nhận thấy rằng giá trị của (αi + 1) có thể được tính bằng cách sử dụng
giá trị được tính toán trước đó của Λ (αi). Nếu giá trị của đa thức (Λ (αi) - 1) bằng 1,
thì có nghĩa là, phần tử đó là αi là gốc của đa thức Λ (x).

3.Tìm giá trị lỗi


Sử dụng công thức (4.5) :

Giá trị 2t tiếp theo có thể được biểu diễn như sau:

Sau khi tìm thấy đa thức định vị lỗi Λ(x), có một số lỗi đã biết là v = deg Λ(x),
bộ định vị lỗi X1, X2 ,. . . , Xv và các giá trị tiếp theo s1, s2 ,. . . , s2t. Phương trình trên
giới hạn tại v, có thể được biểu diễn bằng :

Các phương trình trên có thể được giải bằng cách sử dụng phép loại bỏ
Gaussian. Hãy nhớ rằng bộ định vị lỗi có dạng Xj = αkj, sau đó vectơ lỗi có thể được
biểu diễn là:

Ví dụ 4.13.
Cho các giá trị sau:
𝑠1 = 𝛼 6
𝑠2 = 𝛼 9
𝑠3 = 𝛼 7

28
Đa thức định vị lỗi Λ(x) = 𝛼12 𝑥 3 + 1 = (𝛼14 𝑥 − 1)(𝛼 9 𝑥 − 1)(𝛼 4 𝑥 − 1) là
bậc 3, có nghĩa là đã xảy ra 3 lỗi. Để tìm giá trị lỗi, bộ phương trình sau phải được
giải:

Với việc sử dụng loại bỏ Gaussian, có thể tìm thấy các giá trị lỗi:

Kết quả của tập hợp các phương trình là:𝑒𝑘1 = 𝛼, 𝑒𝑘2 = 𝛼 2 , 𝑒𝑘3 = 1. Vectơ lỗi
có dạng sau:

3.1 Thuật toán Forney


Thuật toán Forney được sử dụng để tìm giá trị lỗi. Giá trị lỗi có thể được tính
bằng cách sử dụng phương trình sau :

Đa thức đánh giá lỗi được tính như sau:

Đa thức Λ’(x) là một đạo hàm của Λ (x) và nó được tính như sau:

Ví dụ 4.14.
Cho đa thức sau:

Cho đa thức định vị lỗi:

Đạo hàm của đa thức định vị lỗi được biểu diễn bằng:

29
Mã RS (15, 7) được sử dụng, vì vậy khả năng sửa lỗi là t = 4. Đa thức Ω (x)
như sau:

Lỗi được tính toán:

Đa thức lỗi như sau:

3. Giải mã xóa

Giải mã xóa cho phép cơ hội tăng số lượng vị trí sai có thể được sửa. Có thêm
ký hiệu mới được gọi là thành phần xóa. Thành phần này biểu thị rằng người nhận
không thể nhận ra ký hiệu đã nhận và đánh dấu nó là xóa. Mã có khả năng sửa lỗi t có
thể sửa số lỗi v và xóa f:

Thành phần xóa cung cấp thêm thông tin trước khi bắt đầu giải mã, nó biết đâu
là vị trí sai. Ta có biểu thức:

trong đó f biểu thị số lần xóa trong vectơ nhận được và Yj biểu thị vị trí thứ j của mã
xóa. Đa thức này được gọi là đa thức định vị vị trí xóa.Biểu thức được biến đổi cho
mã xóa như sau:

30
Phương trình chính của mã xóa như sau:

Thuật toán Sugiyama có thể được sử dụng để giải phương trình này, các vị trí
bị xóa được thay bằng bằng số 0.
Biến đổi thuật toán Sugiyama cho mã xóa như sau:
1 0
1. Đặt biến 𝑠(𝑥) = 𝑥 2𝑡+1 , 𝑡(𝑥) = Θ(𝑥), 𝐴(𝑥) = [ ]
0 1
2. Kiểm tra xem mức độ của t(x) nhỏ hơn hoặc bằng khả năng sửa lỗi t:
 Nếu:

Thu được kết quả:

 Tiếp tục nếu khác.


3. Tính toán:

4. Tính toán:

5. Tính toán:

6. Quay trở lại bước 2.


Sau khi tính toán các vị trí lỗi, các giá trị lỗi và thành phần xóa phải
được tìm thấy. Có biểu thức sau:

Đa thức này được gọi là đa thức định vị lỗi / xóa. Đa thức này có thể được sử
dụng biến đổi thuật toán Forney để tìm các giá trị lỗi và xóa. Biến đổi thuật toán
Forney như sau:

31
Ví dụ 4.15.
Mã RS (15, 7) như sau:

Có vectơ lỗi như sau:

Thành phần xóa được đánh dấu ở vị trí 10 và 1, do đó Y1 = α10 ; Y2 = α. Vectơ


nhận được là:

Mã có thể sửa tối đa t = 4 lỗi. Xảy ra v = 3 lỗi và f = 2 lần xóa. Nó thỏa mãn rằng:

Biểu thức cho thấy thành phần xóa như sau:

Vị trí xóa được thay bằng số 0:

Các giá trị được tính toán như sau:

𝑠1 =0
𝑠2 =𝛼
𝑠3 =1
𝑠4 = 𝛼8
𝑠5 = 𝛼5
𝑠6 = 𝛼13
𝑠7 = 𝛼2
𝑠8 =1
Biến đổi biểu thức như sau:
32
Biểu thức định vị lỗi thu được bằng biến đổi thuật toán Sugiyama. Dữ liệu đầu vào là:

Kết quả thuật toán Sugiyama là:

Biểu thức đánh giá lỗi như sau:

Biểu thức xác định lỗi / xóa như sau:

Đạo hàm ta được:

Các giá trị lỗi có được như sau:

Các giá trị xóa như sau:


33
Vector nhận được sau khi sửa như sau:

Hàm f(x) biểu diễn biểu thức xóa, được sử dụng để sửa vectơ nhận được.
5. Gusruswami-Sudan thuật toán
Những thuật toán mô tả trong những phần trước có thể sửa lỗi, Số không lớn
hơn khả năng sủa lỗi của code. Khả năng lỗi của code được tính t=(dmin-1)/2. Giải mã
có thể mô tả như tìm kiếm từ mã trong quả cầu bao quanh vecto nhân được có bán
kính t, Nếu số lỗi không lớn hơn t, thì trong quả cầu này chỉ được đặt mộttừ mã. Tăng
bán kính của hình cầu này và tìm kiếm từ mã trong hình cầu mới, nó có thể xảy ra,
rằng sẽ tìm thấy hai hoặc nhiều từ mã và có lẽ chỉ một trong số đó là từ mã gốc. Giải
mã như vậy được gọi là danh sách giải mã và nó cho phép giải mã các vectơ nhận
được vượt quá giới hạn sửa lỗi khả năng t.
Thuật toán Guruswami-Sudan được sử dụng để giải mã các từ mã được tạo
bằng phương pháp ban đầu. Từ mã được tạo bằng cách đánh giá đa thức thông tin cho
các phần tử trong tập hỗ trợ, tập hợp các phần tử khác không của trường được sử dụng
để tạo mã. Cho là một số đa thức thông tin mức độ nhỏ hơn k cho mã RS(n, k).
Codeword được tạo như sau:

Từ mã cũng có thể thực hiện dưới dạng tập hợp các điểm

Vecto nhận được từ kênh truyền có thể được mô tả như sau

Nếu vị trí thứ I , thì có nghĩa là đã xảy ra lỗi trong vị trí này.
Thuật toán Guruswami-Sudana tìm thấy tập hợp đa thức p (x) như vậy có thể
chuyển đổi vectơ nhận được thành từ mã trong khoảng cách Hamming ít hơn hoặc
bằng khả năng sửa lỗi đã cho của thuật toán. Thuật toán GuruswamiSudan bao gồm
hai bước chính:
 Bước nội suy: Bước đầu tiên của giải mã là xây dựng đa thức của hai
biến:
34
Trong đó các số 0 của đa thức này là các điểm của vectơ nhận được (αi ,ri−1),
Q(αi , ri−1) = 0. Đa thức Q (x, y) có độ (1, k- 1) nhỏ nhất có thể Để xây dựng đa thức
Q (x, y), có tham số được sử dụng gọi là bội số của số 0 m, biểu thị số lần trong đó các
điểm (αi, ri-1) là các số 0 của đa thức Q (x, y) hoặc có bao nhiêu lần đa thức Q (x, y)
đi qua các điểm (αi, ri-1).
 Bước Factorization: Bước giải mã thứ hai là nhân tử của đa thức Q(x, y)
thành đa thức loại y - pi (x), trong đó pi (x) có độ ít hơn k. Một trong các
đa thức pi (x) có lẽ là thông tin gốc đa thức được sử dụng để tạo ra từ

Để làm việc với thuật toán Guruswami-Sudan, phải có các phương pháp toán
học cơ bản, được sử dụng với thuật toán.
 Weighted degree.
Thuật toán Guruswami-Sudan sử dụng các đơn thức loại xi yj. Suốt trong quá
trình giải mã được tiến hành so sánh các đơn thức như vậy. Một trong phương pháp để
giải quyết vấn đề này là giới thiệu mức độ có trọng số (u, v) (w-độ), trong đó u và v là
một số nguyên dương và chúng là không phải cả hai số không:

Đôi khi nó có thể xảy ra, cho hai đơn thức khác nhau xi1yj1 và xi2yj2 giá trị của
mức độ trọng số là như nhau. Để giải quyết vấn đề như vậy, đã đưa ra thứ tự từ điển
(w-lex) và thứ tự từ điển đảo ngược (w-revlex), trong đó:

Mức độ đa thức Q (x, y) bao gồm các đơn thức

 Số hệ số đa thức
Bước nội suy của thuật toán Guruswami-Sudan tạo ra đa thức sau của hai biến:

Đa thức này cũng có thể được biểu thị như sau:


35
Trong đó φi (x, y) biểu thị đơn thức thứ i-th xi yj theo thứ tự nhất định (w-lex
hoặc w-revlex).Tham số C có thể được biểu thị như sau:

Đúng là một số đa thức Q (x, y) đi qua điểm (xi, yi) m lần, nếu đạo hàm Hasse
Qr, s (x, y) cho các điểm (xi, yi) bằng với Qr, s (xi, yi) = 0 cho tất cả các cặp 0 ≤ r + s
<m. Số lượng các cặp như vậy (r, s) có thể được biểu thị như sau:

Đối với mã RS (n, k) có n điểm, qua đó đi qua đa thức Q (x, y), vì vậy số cặp
(r, s) cho n điểm được biểu thị bằng:

 Error correction capability (Khả năng sửa lỗi


Khả năng sửa lỗi của thuật toán Guruswami-Sudan cho mã RS (n, k) phụ thuộc
vào độ dài của từ mã n, số phần tử thông tin k và tham số m, là thứ tự của bội số của
số không. Mức độ trọng số cho mã RS (n, k) được đặt thành (1, k− 1). Mức độ trọng
số và thứ tự w-lex giải quyết thứ tự các đơn thức loại xi yj . Khả năng sửa lỗi của thuật
toán cho tham số m như sau:

 List of results( Danh sách kêt quả)


Thuật toán Guruswami-Sudan trả về danh sách các đa thức, trong đó có lẽ được
đặt đa thức thông tin gốc. Số phần tử trả về tối đa như sau:

5.1 Thuật toán K¨otter


Thuật toán K¨otter tính đạo hàm Hasse Qr, s (x, y) cho tất cả các điểm của vectơ
nhận được. Phần tử chính của thuật toán là thứ tự các cặp (r, s), đó là các tham số của
đạo hàm Hasse. Thứ tự này như sau:
(0, 0),(0, 1), . . . ,(0, m − 1),(1, 0),(1, 1), . . . ,(1, m − 2), . . . ,(m − 1, 0)
36
Nó có thể được mô tả như:
K = {(0, 0),(0, 1), . . . ,(0, m−1),(1, 0), . . . ,(m−1, m−1)}\{(i, j) : i+j < m}
Thuật toán K¨otter được sử dụng để xây dựng đa thức Q (x, y) trong bước nội
suy của thuật toán Guruswami-Sudan và như sau:
1. Đã cho là dữ liệu đầu vào sau:
• số phần tử được trả về tối đa trong danh sách Lm,
• tập hợp n điểm (αi, i) cho i = {1, 2 ,. . . , n}, tượng trưng cho vectơ nhận được,
• thứ tự bội số của số 0 cho các điểm (αi, βi) - m,
• thứ tự loại (1, k - 1) w-revlex cho mã RS (n, k),
• bảng theo thứ tự các cặp (r, s) – K
2. Tạo đa thức Lm + 1 gj (x, y) = yj, trong đó j = {0, 1 ,. . . , Lm}.
3. Đặt biến i = 1, sẽ chỉ ra số lượng đánh giá hiện tại điểm (αi, βi).
4. Nếu i> n, sau đó chuyển đến điểm 14, nếu không, hãy đặt điểm mới (a, b) =
(αi, i) và tiếp tục
5. Đặt biến j = 1, sẽ chỉ cặp (r, s) trong bảng K.

6. Nếu j> , sau đó tăng biến i = i + 1 và quay lại điểm 4, khác đặt cặp
đối số đạo hàm Hasse hiện tại (r, s) = K [j].
7. Với mỗi gj đa thức (x, y), trong đó j = {0, 1 ,. . . , Lm}, tính toán sai lệch - j,
sẽ được sử dụng để sửa đổi gj đa thức (x, y):
∆j = Qr,sgj (a, b)
8. Xây dựng tập J, bao gồm các chỉ số j, trong đó ∆j khác 0.
9. Nếu đặt J trống, sau đó tăng j = j + 1 và chuyển đến điểm 6, nếu không thì
tiếp tục.
10. Tìm đa thức bậc ít nhất trong tập J và nhớ chỉ số j*của nó:
j* = arg min{gj (x, y) : j ∈ J}
11. Đặt hai biến phụ:
f = gj∗ (x, y) ∆ = ∆j ∗
12. Với mỗi gj đa thức (x, y), trong đó j thuộc J, thực hiện
• if j khác j* , compute:
gj (x, y) = ∆gj (x, y) − ∆jf
37
• if j = j* , compute:
gj (x, y) = ∆(x − a)f
13. Tăng biến j = j + 1 và đi đến điểm 6.
14. Chọn đa thức bậc ít nhất trong tập gj (x, y) và trả về:
Q (x, y) = gj (x, y),
trong đó degw gj (x, y) ít nhất cho j = {0, 1 ,. . . , Lm}
5.2 Thuật toán Roth-Ruckenstein
Thuật toán Roth-Ruckenstein được sử dụng để nhân hệ số đa thức Q (x, y)
thành đa thức y − pi (x), chia Q (x, y), Có thể thiết lập tối đa bậc của đa thức pi (x) và
đối với mã RS (n, k) là k-1. Thuật toán hoạt động đệ quy và tìm kiếm sâu tất cả các
giải pháp có thể. Mỗi cuộc gọi đệ quy là tìm hệ số mới của một số đa thức tìm kiếm
(x). Độ sâu đệ quy tối đa là k - 1.
Thuật toán của Roth-Ruckenstein như sau:
1. Dữ liệu đầu vào như sau:
• Đa thức của hai biến Q (x, y), được xác định thành đa thức loại y pi(x)
có độ nhỏ hơn hoặc bằng k - 1,
• Mức tối đa của đa thức pi (x), là k - 1,
• Biến u mô tả độ sâu của đệ quy. Đối với cuộc gọi đầu tiên của thuật
toán u = 0 và cho các cuộc gọi tiếp theo, giá trị này được truyền dưới dạng
tham số.
• Đa thức pi (x). Đối với cuộc gọi đầu tiên, nó là pi (x) = 0 và đối với tất
cả các cuộc gọi tiếp theo, nó được truyền dưới dạng tham số. Trên độ sâu đệ
quy u = 0 có các hệ số tính toán cho x0 , trên độ sâu u = 1 cho x1 Đối với mỗi
cuộc gọi mới của thuật toán, có một bản sao của đa thức pi (x), có hệ số được
tính trong nhánh đệ quy trước đó.
2. Tìm gốc của đa thức Q (0, y), thay thế y bằng tất cả các phần tử của trường
Galois trên đó được tạo mã.
3. Với mỗi gốc αn của đa thức Q (0, y) làm:
• Tính:
Qi(x, y) ← Q(x, xy + αn)
• Tìm đơn thức như vậy của loại xr cho số mũ lớn nhất r, trong đó x
r chia Qi (x, y) không có phần dư,
• Chia đa thức Qi(x, y) cho đơn thức xr
38
• Đặt gốc αi làm hệ số của đa thức pi (x) cho xu
- if (u + 1) <k, sau đó mở cuộc gọi đệ quy mới và đi đến điểm 2 ,
với các tham số của đa thức Qi (x, y), đa thức pi (x) và độ sâu đệ quy u
+ 1,
- else if (u + 1) = k và Qi (x, 0) = 0, thì đa thức pi (x) được trả về
khi kết quả và nhánh đệ quy được đánh giá được đóng lại,
- else close đóng dòng của đệ quy.
5.3 Thuật toán K¨otter-Vardy
Thuật toán K¨otter-Vardy được sử dụng để chuyển đổi thông tin độ tin cậy xác
suất thành tập hợp các điểm sẽ được sử dụng tiếp theo để xây dựng đa thức Q(x, y).
Để mỗi điểm được chỉ định thứ tự bội của số 0 mb. Tiếp theo, có tập hợp các điểm
được tạo và nó được sử dụng làm dữ liệu đầu vào cho thuật toán Guruswami-Sudan.
Thuật toán K¨ottera-Vardy như sau:
1. Dữ liệu đầu vào như sau:
• Ma trận độ tin cậy Π, trong đó đối với mã RS (n, k) được tạo trên GF
(q), nó bao gồm n cột và q hàng. Mỗi cột mô tả phần tử cụ thể trong vectơ nhận
được và trong các hàng có xác suất đưa ra mô tả phần tử đã cho đó là một phần
tử trong GF (q). Đối với mỗi cột tổng xác suất là 1.
• Tham số s, biểu thị tổng của tất cả các đơn hàng của bội số của

số không mb,
2. Tạo ma trận M có cùng số cột và hàng như ma trận Π và đặt tất cả các giá trị
về 0.
3. Tìm trong ma trận Π một phần tử có giá trị lớn nhất trên một số vị trí (i, j),
có nghĩa là hàng thứ i và cột thứ j.
4. Compute:

5. Compute:

6. Giảm s xuống 1, s ← s - 1. Nếu s = 0 thì trả về ma trận M. Các điểm được sử


dụng trong quá trình nội suy là các phần tử khác không của ma trận M trên vị trí (j, i),
39
trong đó j biểu thị số cột và i số hàng. Thứ tự nhân của số 0 cho các điểm đã cho là mb
← Mj, i. Nếu s> 0, sau đó quay lại điểm 3
Bộ giải mã sử dụng thuật toán K¨otter-Vardy, nhận dưới dạng dữ liệu đầu vào
nhận vector từ kênh truyền thông. Trong trường hợp thuật toán được mô tả trước đây,
đó là thông tin cứng, có nghĩa là các phần tử của vectơ là các phần tử của trường
Galois. Trong trường hợp thuật toán K¨otter-Vardy, đây là thông tin mềm, trong đó
đối với mỗi phần tử của vectơ nhận được, có khả năng tính toán rằng phần tử đó là
một phần tử trong trường Galois. Các phần tử trường Galois được biểu diễn dưới dạng
vectơ nhị phân, vì vậy chúng bao gồm các phần tử 1 và 0. Đối với các phần tử giải mã
mềm của trường Galois được biểu diễn dưới dạng vectơ của các số hữu tỷ. Họ cung
cấp thêm thông tin để giải mã mềm và đôi khi có thể sửa nhiều lỗi hơn
Để giải mã cứng. Đã tạo ra một phương pháp can thiệp vào vectơ nhận được và
để tạo ma trận độ tin cậy.
Thuật toán can thiệp từ mã như sau:
1. Dữ liệu đầu vào:
• Từ mã của mã RS (n, k), trong đó các phần tử của vectơ là nhị phân,
• Tham số d, ảnh hưởng đến biên độ nhiễu,
• Tham số e, ảnh hưởng đến tần số của tiếng ồn.
2. Điều chế từ mã, theo đó 1 → 1 và 0 → 1
3. Đối với mỗi bit của từ mã, hãy làm:
• chọn xóa giá trị ngẫu nhiên erand từ 0 đến 32767, sử dụng phân phối
xác suất thống nhất. Nếu erand < e, hãy tính:

sau đó, nếu erand chẵn thì để đánh giá bit thêm giá trị X và nếu erand là số
lẻ thì từ bit được đánh giá trừ giá trị X.
Phương pháp tạo ma trận độ tin cậy Π như sau:
1. Dữ liệu đầu vào:
• Vectơ nhận được từ kênh truyền thông, có bit được biểu diễn
dưới dạng số hữu tỷ,
• Tham số s, được sử dụng để tính xác suất cho một số phần tử
mà nó là một trong các phần tử trong GF(q).
2. Với mỗi phần tử của vectơ nhận được ri, trong đó i = {0, 1 ,. . . , n −
1}, làm:
40
• Tính khoảng cách Manhattan giữa vectơ của phần tử của vectơ
nhận được và mỗi phần tử trong GF(pm):

Với r(a) biểu thị bit thứ a của vectơ ri,, αj biểu thị phần tử thứ j
của Gf (pm), α (a) biểu thị bit thứ a của phần tử αj. Nhắc lại rằng 0 → 1
và 1 → -1.
• Tiếp theo, với mỗi giá trị tính toán của khoảng cách, hãy làm:
d(ri , αj) ← d(ri , αj) –s
• Tính toán, trong đó GF (pm) = GF(q):

So sánh việc xây dựng tập hợp các điểm của K¨otter-Vardy để nội suy đa thức
Q (x, y) và phương pháp ban đầu cho thuật toán Guruswami-Sudan, có thể thấy rằng:
• số điểm được sử dụng để nội suy cho mã RS(n, k) có thể thay đổi so với n,
• giá trị của thứ tự bội số của số 0 có thể thay đổi theo từng điểm. Số lượng tất
cả các lần lặp phải được thực hiện để nội suy đa thức Q (x, y) như sau:

Số đa thức trả về tối đa L trong quá trình nhân hóa của đa thức Q (x, y) có thể
được biểu thị bằng:

41
Nếu có các điểm đã cho để nội suy đa thức Q (x, y), các lệnh của chúng của bội
số của số 0, số đa thức trả về tối đa, sau đó nội suy Q (x, y) có thể được bắt đầu. Thuật
toán K¨otter đã sửa đổi cho thuật toán K¨otter-Vardy như sau:
1. Đã cho là dữ liệu đầu vào sau:
• Số lượng đa thức trả về tối đa L,
• Tập hợp các điểm h (αi, i) cho i = {1, 2 ,. . . , h}, được tạo bởi thuật toán
K¨otterVardy,
• Tập hợp các số 0 cho mỗi điểm mi cho i = {1, 2 ,. . . , h},
• Đặt (1, k - 1) w-revlex cho mã RS (n, k),
• Tập hợp các bảng theo thứ tự các cặp (r, s) cho mỗi điểm (αi, i) – Ki cho i
= {1, 2 ,. . . , i}.
2. Tạo đa thức L + 1 gj (x, y) = yj, trong đó j = {0, 1 ,. . . , L}.
3. Đặt biến i = 1, sẽ chỉ số điểm được đánh giá hiện tại (αi, ii).
4. Nếu i> h, sau đó chuyển đến điểm 14, khác đặt điểm (a, b) = (αi, βi) và tiếp
tục.
5. Đặt biến j = 1, sẽ chỉ cặp (r, s) trong bảng Ki.
6. Nếu , biến tăng i = i + 1 và quay lại điểm 4,khác đặt làm cặp hiện tại
(r, s) = Ki[j].
7. Với mỗi gj đa thức (x, y), trong đó j = {0, 1 ,. . . , L}, tính giá trị của sự khác
biệt ∆j, được sử dụng để sửa đổi đa thức gj (x, y)
∆j = Qr,sgj(a, b)
8. Tạo tập hợp J, bao gồm các chỉ số j, trong đó ∆j khác 0.
9. Nếu tập J trống, sau đó tăng biến j = j + 1 và chuyển đến điểm 6,else tiếp túc
10. Trong tập hợp J tìm đa thức có mức độ nhỏ nhất và ghi nhớ
chỉ số j*:
j* = Arg min {gj (x, y): j ∈J}
11. Đặt hai biến phụ:
f = gj∗ (x, y) ∆ = ∆j ∗
42
12. Với mỗi đa thức gj (x, y), trong đó j ∈ J, do:
• if j khác j* , compute:
gj (x, y) = ∆gj (x, y) − ∆jf
• if j = j∗ , compute:
gj (x, y) = ∆(x − a)f
13. Tăng biến j = j + 1 và đi đến điểm 6.
14. Từ tập hợp đa thức gj (x, y), chọn mức độ ít trọng số này và trả về:
Q (x, y) = gj (x, y),
trong đó degw gj (x, y) ít nhất cho j = {0, 1 ,. . . , L}.
Thuật toán Roth-Ruckenstein ban đầu có thể được sử dụng để nhân tố đa thức
Q (x, y).

43

You might also like