Đề tài Mã Hamming
Trang 1Đề tài : Mã Hamming
Richard W Hamming (1915-1998)
Hamming Code
Nhóm 1
Trang 2Ký hiệu Định nghĩa
u Bản tin gốc
S(x) Tín hiệu truyền N(x) Tín hiệu nhiễu R(x) Tín hiệu nhận
R Chuỗi bit giải điều chế
u Chuỗi bit đã giải mã
Hamming Code
Trang 3Mục đích của lý thuyết Mã hóa trên kênh truyền (channel encoding theory) là tìm những mã
có thể truyền thông nhanh chóng, chứa đựng nhiều mã ký (code word) hợp lệ và có thể sửa lỗi (error correction) hoặc ít nhất phát hiện các lỗi xảy ra (error detection) Các mục đích trên
không phụ thuộc vào nhau, và mỗi loại mã có công dụng tối ưu cho một ứng dụng riêng biệt Những đặc tính mà mỗi loại mã này cần còn tuỳ thuộc nhiều vào xác suất lỗi xảy ra trong quá trình truyền thông
Ở đây ta tìm hiểu mã khối tuyến tính (Linear block codes), bao gồm :
• Mã tuần hoàn (Cyclic codes, mã Hamming là một bộ phận nhỏ)
• Mã tái diễn (Repetition codes)
Trang 4Trong viễn thông (telecommunication), mã Hamming là một mã sửa lỗi tuyến tính (linear
error-correcting code), được đặt tên theo tên của người phát minh ra nó, Richard Hamming
Mã Hamming có thể phát hiện một bit hoặc hai bit bị lỗi (single and double-bit errors) Mã
Hamming còn có thể sửa các lỗi do một bit bị sai gây ra
Ngược lại với mã của ông, mã chẵn lẻ (parity code) đơn giản vừa không có khả năng phát
hiện các lỗi khi 2 bit cùng một lúc bị hoán vị (0 thành 1 và ngược lại), vừa không thể giúp để sửa được các lỗi mà nó phát hiện thấy
Hamming Code
Trang 5Khoảng cách Hamming
Khoảng cách Hamming được sử dụng trong kỹ thuật viễn thông để tính số lượng các bit trong một từ nhị phân (binary word) bị đổi ngược, như một hình thức để ước tính số lỗi xảy ra trong quá trình truyền thông, và vì thế, đôi khi nó còn được gọi là khoảng cách tín hiệu (signal
distance) Việc phân tích trọng số Hamming của các bit còn được sử dụng trong một số ngành, bao gồm lý thuyết tin học, lý thuyết mã hóa, và mật mã học
Trước tiên ta tìm hiểu về trọng số Hamming: trọng số Hamming của một từ mã là số số 1 có trong
từ mã đó Ví dụ với từ mã 00111010 có trọng số Hamming là 4 Khoảng cách Hamming được định nghĩa là các bít khác nhau giữa hai từ mã Khoảng cách Hamming giữa hai từ mã được lấy bằng cách dùng toán tử XOR từng bít của hai từ mã với nhau và khoảng cách Hamming là trọng
số của kết quả tìm được trong phép XOR trên Ví dụ ta có hai từ mã 0110101 và 1110001 ta có:
0 1 1 0 1 0 1XOR
1 1 1 0 0 0 1 -
1 0 0 0 1 0 0Vậy khoảng cách Hamming của 2 từ mã trên là 2
Hamming Code
Trang 6Trọng lượng Hamming
Trọng lượng Hamming (Hamming weight) của một dãy ký tự là khoảng cách Hamming từ một
dãy ký tự toàn số không có cùng chiều dài Có nghĩa là số phần tử trong dãy ký tự không có giá
trị không (0): đối với một dãy ký tự nhị phân (binary string), nó chỉ là số các ký tự có giá trị một
(1), lấy ví dụ trọng lượng Hamming của dãy ký tự 11101 là 4
Đối với một chiều dài cố định "n", khoảng cách Hamming là độ đo trên không gian vectơ của các
từ có chiều dài đó, vì nó thỏa mãn yêu cầu về tính chất số không âm (non-negativity) (số tuyệt đối), hiện thân của tính bất khả phân định (indiscernibles) và tính đối xứng (symmetry), và nó có thể được chứng minh một cách dễ dàng bằng phép quy nạp toàn phần (complete induction) rằng
nó còn thỏa mãn bất đẳng thức tam giác (triangle inequality) nữa
Hamming Code
Trang 7Khoảng cách Hamming giữa hai từ a và b còn được gọi là trọng lượng Hamming (Hamming
weight) của phép toán a−b, dùng một toán tử thích hợp thay thế cho toán tử "−"
Đối với hai dãy ký tự nhị phân a và b, phép toán này tương đương với phép toán a XOR b
Khoảng cách Hamming của các dãy ký tự nhị phân còn tương đương với khoảng cách Manhattan giữa hai giao điểm của một hình giả phương cấp n (n-dimensional hypercube), trong đó n là chiều dài của các từ
Hamming Code
Trang 8Ví dụ đối với mã ASCII 7 bit
Mã ASCII 7 bit cần 4 bit dư thừa để thêm vào dữ liệu gốc Sở dĩ ta chọn là 4 bít vì 24 = 16 sẽ xác định được 16 trường hợp bị lỗi đơn bít (trong dãy ta xét có 11 bit: 7 bit dữ liệu và 3 bit
mã) Các bít dư thừa được đặt vào vị trí 1, 2, 4 và 8 (Chữ d (data) được dùng để biểu thị các bit
dữ liệu và chữ p (parity) để biểu thị các bit chẵn lẻ (parity bits).)
Trang 9Thuật toán :
Mã Hamming là một mã sửa lỗi tuyến , mã này có thể phát hiện một bit hoặc hai bit bị lỗi Mã Hamming còn có thể sửa các lỗi do một bit bị sai gây ra
Có thể tóm tắt các bước cho việc sử dụng mã Hamming như sau:
1) Các vị trí trong một khối được bắt đầu đánh số từ 1: Bit 1, 2, 3…
2) Tất cả các bít ở vị trí số mũ của 2 được dùng làm bít chẵn lẻ Vd: 20, 21, 22, 23, 24…
3) Tất cả các vị trí khác vị trí còn lại sẽ được dùng cho các bit dữ liệu VD: vị trí thứ 2, 3, 5, 6, 7…4) Mỗi bit chẵn lẻ tính giá trị chẵn lẻ cho một số bit trong từ mã theo quy tắc như sau:
Hamming Code
Trang 10Bít chẵn lẻ ở vị trí số 1 (20) sẽ kiểm tra tính chẵn lẻ của các vị trí mà số thứ tự của vị trí đó trong
Tương tự với các bít chẵn lẻ ở vị trí cao hơn: 8, 16, 32…
Tóm lại, mỗi bít chẵn lẻ trong mã Hamming sẽ tính giá trị chẵn lẻ mà tại đó, bit nhị phân của vị trí AND với các bit vị trí sẽ là một số khác không.
Hamming Code
Trang 11Hình 1: Vòng tròn trong mã Hamming
Trong đó, bit R được dùng để tính chẵn lẻ các tổ hợp bít sau:
Bit p1 tính các bit thứ 3, 5, 7, 9, 11 Bit p2 tính các bit thứ 3, 6, 7, 10, 11Bit p3 tính các bit thứ 5, 6, 7
Bit p4 tính các bit thứ 9, 10, 11
Hamming Code
Trang 12Ví dụ, ta có chuỗi bit "1010110" và mã Hamming sử dụng bít chẵn lẻ chẵn thì
p1 = 1, p2 = 0, p3 = 0, p4 = 0
Khi đó, chuỗi dữ liệu truyền đi sẽ là 10100100110
Hình 2: Vòng tròn Hamming
Hamming Code
Trang 13Do mã hamming sử dụng bit chẵn-lẻ-chẵn nên tổng số bít 1 trong 1 vòng tròn là số chẵn Giả
sử trong quá trình truyền xảy ra lỗi tại bit 11, tại phía thu, thuật toán sẽ phát hiện ra tổng số bit 1 trong 3 vòng tròn (vòng bên trái và hai vòng trên dưới) là một số lẻ, trái với quy tắc nên
nó sẽ thay đổi giá trị của bít nằm ở vùng giao của 3 vòng tròn này
Hình 2.3: Bit thứ 11 bị lỗi khiến tổng số bít 1 của 3 vòng tròn bên phải
là một số lẻ
Hamming Code
Trang 14Bộ mã V có thể thay đổi bằng bộ mã V’ có cùng xác suất sai
Các bộ mã tương đương được tạo ra bằng cách biến đổi tương đương trên ma trận sinh : hoán bị cột , tổ hợp tuyến tính các hàng củ thành hàng mới
G Gch = [Ik,k , p k,(n-k)]
Ma Trận Sinh
Trang 15Dưới dạng cấu trúc hệ thống H = [Ir.Q] Trong đó :
Ir là ma trận đơn vị
Ma trận Q gồm 2r – 1 – r cột
Mỗi cột là vector r chiều có trọng số là 2 hoặc lớn hơn
Định nghĩa : với v € V , u € U thì ma trận sinh [H] = [h1 h2 …hn-k] với v.HT =0
Định lý : nếu V có Gch = [Ik,k , p k,(n-k)] thì Hch = [- , Ik,(n-k)]
Trong thực tế để việc tạo và giải mã hamming một cách đơn giản, người ta đổi vị trí các cột trong ma trận H Khi đó các bit cần kiểm tra xen kẽ với các bit mang tin chứ không còn tính chất khối
Ma Trận Thử
Hamming Code
-T K
P
Trang 16Mô tả bằng thuật toán
Ví dụ, với m=3, ma trận của mã [7,4] được viết dưới dạng H(3,7) =
Như ta đã biết, mã Hamming là một mã khối Và với mọi m > 2, luôn tồn tại mã Hamming với các thông số sau:
• Chiều dài từ mã: n = 2m-1
• Chiều dài phần tin: k=2m-m-1
• Chiều dài phần kiểm tra: m=n-k
• Khả năng sửa sai: t=1
Trang 17Xây Dựng Mã Hamming
Hamming Code
Mã hamming có đặc điểm : Ma trận thử H có r hàng , 2r – 1 cột
Xét Ví Dụ : mã hamming ( 7,4 ) có ma trận thử H
Để việc tạo mã đơn giản ta chọn các bit kiểm tra c 1 , c 2 , c 3 ở các vị trí tương ứng 2i với i = 0,1,2, (nghĩa là các vị trí thứ nhất , thứ hai và thứ tư của các ký hiệu từ mã)
V có dạng : v= c 1 c 2 u 1 c 3 u 2 u 3 u 4 , với u = u 1 u 2 u 3 u 4
Trang 19Sơ đồ tạo mã : u = u1 u2 u3 u4
Trang 20Ưu điểm :
Từ ma trận H ta dễ dàng suy ra từ mã v , nghĩa là không cần biết ma trận sinh G ta cũng dễ dàng tìm được v
Hamming Code
Trang 21Sơ Đồ Sửa Lỗi Mã Hamming
Để nhận biết sai và sửa lỗi kênh truyền ta dùng Syndrome
Trang 23Cho : e= 1000000 => s1= eHT = [ 1000000 ] HT = 001 e= 0100000 => s2 = 010
e= 0010000 => s3 = 011 e= 0001000 => s4 = 100 e= 0000100 => s5 = 101 e= 0000010 => s6 = 110 e= 0000001 => s7 = 111
Hamming Code
Trang 24Bản sự thật :
Hamming Code
Trang 25Mạch Sửa Lỗi :
Hamming Code
Trang 26Ví Dụ : tín hiệu thu được r = ( r1 r2 r3 r4 r5 r6 r7 ) = ( 0 0 1 1 0 1 1 )
Vậy : S = ( 1 1 0) , nếu đổi ra nhị phân là 6 , ta nhận thấy S trùng với cột số 6 của ma trận H , có nghĩa
ký hiệu sai là ký hiệu số 6(r) đầu ra thứ 6 của sơ đồ giải mã sẽ có i=1
Ta chỉ cần đảo bit thứ 6 theo thuật toán :
Kết luận : Mã hamming chỉ sửa được 1 lỗi / 1 đường truyền do đó được dùng rất nhiều
trong truyền dữ liệu trong mạng máy tính
Trang 27Độ lợi mã hóa (Coding Gain)
𝑘 𝐸𝑏= 𝑛𝐸𝑠→ 𝐸𝑏= 𝐸𝑠
𝑅
Trang 28Độ lợi mã hóa :
Hamming Code
Trang 30Có thể nói, lịch sử phát triển của mã sửa lỗi được bắt đầu bằng sự ra đời của mã Hamming và định lý Shannon Việc ra đời mã Hamming là cơ sở cho việc phát triển thêm nhiều loại mã hóa mới, có độ tin cậy cao hơn sau này
Mã Hamming có tầm quan trọng cơ bản trong lý thuyết mã hóa và được sử dụng thực tế
trong thiết kế máy tính Ưu điểm của mã này là đơn giản, số bit kiểm tra ít, ngoài ra, mã này hoạt động tốt trong việc phát hiện các lỗi đơn bit và một số trường hợp lỗi hai bit Tuy nhiên,
mã Hamming không thể sửa được bản tin bị lỗi đa bit
Hamming Code
Trang 31MÃ HÓA NGUỒN
Trang 32MÃ SHANNON
Định nghĩa giới hạn của n 0 : m-ni ≤ P(Ui) ≤ m1-ni (1).
• Bước 1: Liệt kê Ui và P(Ui) theo thứ tự giảm dần vào cột 1 và 2
Trang 33Ví Dụ : Cho bộ mã U với xác suất như sau
U i U 1 U 2 U 3 U 4 U 5 U 6 U 7 U 8 U 9 P(U i ) 0.34 0.2 0.19 0.1 0.07 0.04 0.03 0.02 0.01
U i P(u i ) P i n i Dạng nhị phân của P i Từ mã
Trang 34• Độ dài trung bình từ mã :
• Entropy của tập tin :
• Chỉ số kinh tế của bộ mã :
Shannon Code
Trang 35Mã Từ Điển LZ77
• Đưa chuỗi văn bản vào bộ đệm
• Dùng 1 cửa sổ trượt để đọc các ký tự cần mã hóa vào
• Ngõ ra :
+ Khi bắt đầu mã hóa: <0,0,k> (k là kí tự đầu tiên)
+ Lần mã hóa tiếp theo: <i,j,k> So sánh kí tự mã hóa với kí tự đã mã hóa,
nếu giống thì đưa ra từ mã <i,j,k> trong đó : i là vị trí bắt đầu của đoạn/kí tự
giống nằm trong từ điển với đoạn/kí tự đang nén ; j là độ dài của đoạn kí tự giống ; k là ký tự kế tiếp
Dictionary Algorithm
Trang 36Ví Dụ : mã hóa đoạn ký tự sau AABCBBABC
Trang 37Mã Từ Điểm LZSS
• Nếu có 2 kí tự giống trở lên thì mới chép trong từ điển ra <0,i,j>
• Chỉ có 1 kí tự giống hoặc không có kí tự giống <1,k>
Trang 38Hamming Code