25/05/2018, 07:59

Bổ đề về tự sửa lỗi và cận hamming

Đặt vấn đề: một từ mã w dài n bit khi được truyền tuần tự từng bit có thể sai e bit. Vấn đề đặt ra là khoáng cách (Hamming) giữa các từ mã và sai số e quan hệ với nhau như thế nào để có thể phân biệt tốt nhất đồng thời ...

Đặt vấn đề: một từ mã w dài n bit khi được truyền tuần tự từng bit có thể sai e bit. Vấn đề đặt ra là khoáng cách (Hamming) giữa các từ mã và sai số e quan hệ với nhau như thế nào để có thể phân biệt tốt nhất đồng thời tất cả các từ mã? Bổ đề sau xác định quan hệ này.

Bổ đề:

Xét bộ mã W={w1, w2, …, ws} gồm có s từ mã nhị phân dài n bit và 1 số nguyên dương e.

Nếu d(wi, wj) _>2e+1 (với mọi i khac j )

Khi đó: tất cả các dãy nhận được v có số bit lỗi <_ e thì v có thể tự điều chỉnh (hay tự sửa lỗi).

Nếu d(wi, wj) _>2e (với mọi i khac j )

Khi đó: tất cả các dãy nhận được v có số bit lỗi < e thì v có thể tự điều chỉnh. Tất cả các dãy nhận được có số bit lỗi = e thì ta chỉ phát hiện là v có lỗi và không thể tự điều chỉnh được.

Ngược lại;

Nếu v có số chữ số bit lỗi <_ e và có thể tự điều chỉnh thì d(wi, wj)_>2e+1 (với mọi i khac j ).

Nếu v có số chữ số bit lỗi <_ e-1 tự điều chỉnh được và tất cả các tín hiệu với số chữ số bit lỗi <_ e được phát hiện thì khoảng cách giữa các từ mã luôn thỏa: d(wi,wj) _>2e (với mọi i khac j ).

Chứng minh và minh họa bổ đề

Giả sử: d(w, w’) _>2e+1 với mọi i khac j . Nếu w và w’ có cùng khoảng cách đối với dãy v thì d(v,w)=d(v,w’)_> e+1. Vậy , nếu d(v, w*) <_ e thì v có thể được giải mã ra w*.

Nếu d(wi,wj)_>2e với mọi i khac j, có khả năng có v, w và w’ với số chữ số lỗi là: d(v,w)=d(v,w’)=e (d(v,w)+ d(v,w’) _> d(w,w’)_>2e). Có thể phát hiện ra các từ mã gần v, nhưng do tồn tại cùng lúc nhiều từ mã gần nhất với v dẫn đến không giải mã được, ngược lại hoàn toàn tương tự.

Minh họa:

d(wi, wj­)= 2e+1= 7, e=3

Nếu v∈Bi thì v được giải mã về wi

Nếu v∈Bj thì v được giải mã về wj

d(wi, wj­) = 2e = 8 (e = 4, e - 1=3)

nếu v∉Bi , v∉Bj => các điểm cách tâm khoảng cách 3 thì luôn được giải mã, còn các điểm cách tâm 4 thì chỉ phát hiện lỗi chứ không thể giải mã được.

Mã 3 chiều (x, y, z) bắt đầu từ gốc 000. Cứ một tín hiệu thay đổi thì mã bị đẩy đi theo 1 cạnh, chẳng hạn:

000 cách 010, 001 bởi 1 cạnh,

011 cách 010, 111 và 001 bởi 1 cạnh.

Như vậy, nếu ta chọn w1=010, w2=001, w3=111 thì khoảng cách giữa chúng là 2

d(w1, w2)=d(w1, w3)=d(w2, w3)=2

yvậy nếu có lỗi phát sinh thì chỉ phát hiện chứ không sửa được.

Cận Hamming.

Đặt vấn đề: trong tổng số 2n dãy nhị nhân dài n bit có thể chọn ra bao nhiêu dãy để tạo thành một bộ mã có thể tự điều chỉnh được e bit lỗi. Định lý cận Hamming cho chúng ta xác định số từ mã có độ dài n bit với giả thiết: có khả năng tự sửa được e bit lỗi (điều kiện cần tự sửa lỗi).

Định lý: Nếu bộ mã W có s từ mã có độ dài n bit có thể tự sửa được e bit lỗi thì

Ghi chú: Cni = n!/(i!*(n-i)!)

Chứng minh:

Xét từ mã nhị phân wi có độ dài n bit và có khả năng tự sửa được e bit lỗi.

Số dãy vj sai khác với wi từ 0 đến e bit là

:

Tương ứng với s từ mã, tổng số dãy vj có thể tự sửa lỗi là :

(2n là tổng số dãy nhị phân dài n bits).

Phân các dạng lỗi

Giả sử ta truyền từ mã n bit wi ∈ W ( 1 <_ i <_ s) và nhận được dãy n bit vj ( 1<_ j <_ 2n).

Các loại lỗi có thể phát hiện sau:

Lỗi có thể tự điều chỉnh:

Trong trường hợp này tồn tại duy nhất từ mã w*i sao cho d(vj, w*i)= Min d(vj, wk) với mọiwk ∈ W.

=> vj được giải mã về w*i

Lỗi chỉ phát hiện không điều chỉnh được:

Trong trường hợp này tồn tại từ mã w*i và w**i sao cho

d(vj, w*i)= d(vj, w**i)=Min d(vj, wk) với mọiwk ∈ W

=> vj không thể giải mã chính xác.

Lỗi không phát hiện được.

Trong trường hợp ta giải mã ra w*i nhưng khác với wi đã truyền.

Bài tập

Cho n=7 và e=2, hãy áp dụng định lý cận Hamming cho biêt số từ mã tối đa của bộ mã W.

Cho n=7 và e=2, hãy áp dụng định lý cận Hamming cho biêt số từ mã tối đa của bộ mã W.

Hãy cho một ví dụ cụ thể minh họa các trường hợp phân loại lỗi.

0