Giải mã Reed-Solomon

Một phần của tài liệu Ứng dụng mã sửa lỗi cho mạng cảm biến không dây (Trang 41 - 49)

Kết quả của bản tin mã hoá trong dạng đối xứng sử dụng RS(7,3) là đa thức từ mã:

( ) = + + + + + + (2.50)

Giả sử trong quá trình truyền dẫn từ mã này bị lỗi vì vậy hai symbol nhận được bị mất, 7 symbol từ mã ( ) được mô tả dưới dạng đa thức như sau:

( ) = ∑ (2.51)

( ) = 0 + 0. + 0. + + + 0. + 0.

= (000) + (000) + (000) + (001) + (111) + (000) + (000)

Mặt khác, một symbol kiểm tra bị mất với một bít lỗi và một symbol dữ liệu bị mất với 3 bít lỗi. Đa thức từ mã bị lỗi nhận được, ( ) được biểu diễn bằng tổng của đa thức từ mã truyền đi và đa thức lỗi:

( ) = ( ) + ( ) (2.52)

Theo công thức trên, cộng ( ) với ( ) ta nhận được ( ) như sau:

( ) = (100) + (001) + (011) + (100) + (101) + (110) + (111)

= + + + + + + (2.53)

Trong ví dụ trên, bốn thông số chưa biết đó là hai vị trí lỗi và hai giá trị lỗi. Điểm khác biệt quan trọng giữa giải mã bất nhị phân của ( ) là giải phương trình trên, còn trong giải mã nhị phân thì bộ giải mã chỉ cần tìm các vị trí lỗi. Đối với giải mã nhị phân, lỗi xảy ra tại 1 bít nào đó và giá trị của nó từ bị đảo từ 1 thành 0 hay

ngược lại. Nhưng đối với các symbol bất nhị phân không những cần biết về vị trí lỗi mà còn phải xác định các giá trị symbol phải sửa tại các vị trí đó.

2.3.3.1. Tính toán tập hợp

Một tập hợp (symdrome) là kết quả kiểm tra chẵn lẻ được thực hiện trên để xác định có phải là phần tử hợp lệ trong tập từ mã hay không. Nếu phần thực của là một phần tử, tập hợp có giá trị 0. Bất kì giá trị khác 0 nào của biểu thị rằng có lỗi xảy ra. Tương tự với trường hợp nhị phân, với mã RS(7,3) có bốn symbol trong mọi véc tơ tập hợp, giá trị của chúng được tính toán từ đa thức nhận ( ). Công thức mã hoá RS như sau:

( ) = ( ) ( ) (2.54)

Từ công thức trên ta có nhận xét mọi đa thức từ mã hợp lệ là phép nhân của đa thức sinh ( ). Do đó, nghiệm của ( ) phải là nghiệm của ( ). Vì ( ) =

( ) + ( ) nên ( ) xem xét các nghiệm của ( ) trở về 0 chỉ khi ( ) là từ mã hợp lệ. Lỗi sẽ là kết quả của một hay nhiều tính toán mà dẫn tới kết quả khác 0. Tính toán tập hợp symbol được mô tả theo công thức:

= ( )| = ( ) = 1, … , − (2.55)

Trong đó ( ) chứa hai symbol lỗi như công thức (r(X)). Nếu ( ) là từ mã hợp lệ, nó sẽ tạo ra tập hợp symbol bằng 0. Với ví dụ trên, bốn tập symbol như sau:

= ( ) = + + + + + + (2.56) = + + + + + + = = ( ) = + + + + + + = + + + + + = (2.57) = ( ) = + + + + + + = + + + + + +

= (2.58)

= ( ) = + + + + + +

= + + + + + + = 0 (2.59)

Trường hợp trên có 1 lỗi xảy ra ( ≠ 0).

2.3.3.2. Định vị lỗi

Giả sử có v lỗi trong từ mã tại vị trí , , … , . Đa thức lỗi ( ) sẽ được viết lại như sau:

( ) = + + ⋯ + (2.60)

Trong đó 1, 2, …, v là lỗi thứ 1, 2, …, v và j là vị trí lỗi xảy ra. Để sửa từ mã bị sai, mỗi giá trị lỗi và vị trí phải được xác định trong đó l = 1, 2, …, v. Giả thiết

= . Chúng ta thu được − = 2 các symbol tập hợp bởi việc thay thế vào đa thức nhận được với = 1, 2, … 2 :

= ( ) = + + ⋯ + (2.61)

= ( ) = + + ⋯ + (2.62)

= ( ) = + + ⋯ + (2.63)

Có 2 giá trị chưa biết ( giá trị lỗi và vị trí). Công thức trên không thể giải được theo cách thông thường vì nó không tuyến tính. Bất kì kỹ thuật nào giải hệ phương trình trên được gọi là thuật toán giải mã Reed-Solomon.

Tính toán véc tơ tập hợp khác không để tìm ra lỗi. Một đa thức sinh định vị lỗi

( ) = (1 + )(1 + ) … (1 + )

= 1 + + + ⋯ + (2.64)

Nghiệm của ( )là , , … ,1/ . Nghịch đảo của các nghiệm của ( ) là số

các vị trí bị lỗi của đa thức ( ). Chúng ta tạo ra một ma trận từ các tập hợp trong đó tập hợp được sử dụng để dự đoán tập hợp kế tiếp.

… … … … ⋮ ⋯ … … … ⋮ = − − ⋮ − (2.65)

Chúng ta sử dụng mô hình hồi quy dựa trên công thức trên sử dùng ma trận hướng lớn nhất có định thức khác không. Với trường hợp RS(7,3) sửa hai symbol, ma trận có kích thước 2 x 2 và mô hình được viết lại như sau:

= (2.66)

=

0 (2.67)

Để giải các hệ số và và đa thức ( ), chúng ta lấy nghịch đảo của ma trận. Nghịch đảo của một ma trận [ ]theo công thức sau:

[ ] = [ ]

[ ] (2.68)

Do đó,

= − = +

= (2.70)

= =

= = = (2.71)

Kiểm tra mức độ an toàn

Nếu phép nghịch đảo thực hiện đúng, nhân ma trận ban đầu với ma trận nghịch đảo sẽ được ma trận đơn vị.

= + +

+ + =

1 0

0 1 (2.72)

Từ công thức (2.67), các vị trí lỗi được tìm ra dựa vào việc giải các hệ số của đa thức định vị lỗi ( ).

=

0 = = (2.73)

( )được biểu diễn như sau:

( ) = + +

= + + (2.74)

Nghiệm của ( ) là các tương quan của các vị trí lỗi. Các vị trí lỗi được tìm thấy khi các nghiệm được giải. Bất kì phần tử X nào làm cho ( ) = 0 là nghiệm và cho phép ta xác định vị trí của lỗi.

( ) = + + ≠ 0 (2.75)

( ) = + + = ≠ 0 (2.76)

( ) = + + = 0 => ỗ (2.78)

( ) = + + = 0 => ỗ (2.79)

( ) = + + = ≠ 0 (2.80)

( ) = + + = ≠ 0 (2.81)

Lỗi tìm thấy ở vị trí và do đó = và = .

Giá trị của lỗi

Lỗi được kí hiệu trong đó j là vị trí lỗi và l là lỗi thứ l. Mỗi giá trị lỗi gắn với một vị trí cụ thể nên ta kí hiệu thu gọn là . Bước tiếp theo là xác định các giá trị lỗi và tại các vị trí = và = . Ta có:

. Ta có:

= ( ) = + (2.82)

= ( ) = + (2.83)

Chúng ta có thể đưa công thức trên về dạng ma trận:

= (2.84)

= (2.85)

Để giải ra và , tính ma trận nghịch đảo của :

=

=

= = (2.86)

Giải phương trình (2.85) được các giá trị lỗi như sau:

= = +

+ =

+

+ = (2.87)

Sửa đa thức thu được với ước lượng đa thức lỗi

Ta có:

̂( ) = +

= + (2.88)

Thuật toán tập trung sửa đa thức thu sử dụng ước lượng từ mã phát và gửi bản tin giải mã sau cùng. ( ) = ( ) + ̂( ) = ( ) + ( ) + ̂( ) (2.89) ( ) = (100) + (001) + (011) + (100) + (101) + (110) + (111) (2.90) ̂( ) = (000) + (000) + (000) + (001) + (111) + (110) + (000) (2.91) ( ) = (100) + (001) + (011) + (101) + (010) + (110) + (111) = + + + + + + (2.92)

Bởi vì các symbol bản tin được thay thế với 3 bít nên bản tin mã hoá sẽ là:

2.4. Kết luận chương

Chương này giới thiệu về mã sửa lỗi từ các mã đơn giản CRC chỉ phát hiện được lỗi mà không sửa được, đến mã Hamming có thể sửa được 1 lỗi cho đến mã Reed Solomon có khả năng phát hiện và sửa được nhiều hơn 1 lỗi. Để cụ thể hóa việc ứng dụng mã sửa lỗi vào mạng cảm biến không dây, chương kế tiếp sẽ mô hình hóa mạng cảm biến không dây và đưa mã sửa lỗi vào mô hình mạng. Ngoài việc sửa lỗi, chương ba đưa ra mô hình tối ưu năng lượng của mạng khi sử dụng mã sửa lỗi.

CHƯƠNG 3: MÔ HÌNH HOÁ MẠNG CẢM BIẾN KHÔNG DÂY SỬ DỤNG MÃ SỬA LỖI

Trong phạm vi của luận văn này, tôi thực hiện phần mô phỏng truyền ảnh sử dụng mã hoá Reed-Solomon đa chặng trong mạng cảm biến không dây.

Mục đích của việc sử dụng mã sửa sai trong mạng cảm biến là chúng ta có thể phục hồi được ảnh tại phía thu khi lỗi xảy ra trên kênh truyền không dây. Mã RS là một loại mã có nhiều ưu điểm hơn hẳn so với CRC và Hamming chính vì vậy phần mô phỏng tôi quyết định sử dụng mã hoá Reed-Solomon cho bài toán truyền dẫn ảnh.

Như đã đề cập trong chương 1, vấn đề truyền tin tin cậy là một trong những thách thức lớn của mạng cảm biến không. Việc kết hợp truyền tin tin cậy với cân bằng năng lượng trong mạng giúp mạng WSN cải thiện được thời gian sống và tăng số lượng ảnh truyền nhận được tại phía thu. Tôi xin đề xuất mô hình mã hoá Reed- Solomon đa chặng để giải quyết bài toán trên. Các kết quả về việc sử dụng mã Reed-Solomon đa chặng đã được chỉ ra ở [2] và trong luận văn này tôi sẽ cải thiện hơn về chất lượng ảnh kết hợp với việc cân bằng năng lượng sử dụng truyền đồng thời ảnh từ nhiều nút nguồn. Chi tiết mô hình được trình bày phía dưới.

Một phần của tài liệu Ứng dụng mã sửa lỗi cho mạng cảm biến không dây (Trang 41 - 49)