Đề tài Mã Hamming

38 2.7K 11
Đề tài  Mã Hamming

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đề tài Mã Hamming

Đề tài : Mã Hamming Richard W Hamming (1915-1998) Nhóm 1 Hamming Code Ký hiệu Định nghĩa u Bản tin gốc v Mã hóa 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 Hamming Code Chuỗi bit đã giải mã Mụ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) Mã chẵn lẻ (Parity codes) Mã Reed-Solomon (Reed Solomon codes) Mã BCH (BCH code) Mã Reed-Muller Mã hoàn hảo (Perfect codes) Hamming Code Trong viễn thông (telecommunication), mã Hamming là một mã sửa lỗi tuyến tính (linear errorcorrecting 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 Khoả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ó: 0110101 XOR 1110001 -1000100 Vậy khoảng cách Hamming của 2 từ mã trên là 2 Hamming Code Trọ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 Khoả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 Ví 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).) 11 10 d 7 9 d 6 87 d 5 Hamming Code p 4 6 d 4 5 d 3 4 d 2 3 p 3 2 d 1 1 p 2 p 1 Thuậ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 Bí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 hệ nhị phân có bít ngoài cùng là 1 Vd: 1 (1), 3 (11), 5 (101), 7 (111), 9 (1001) Bít chẵn lẻ ở vị trí số 2 (10) sẽ kiểm tra tính chẵn lẻ của các vị trí mà số thứ tự của vị trí đó trong hệ nhị phân có bít thứ 2 là 1 Vd: 2 (10), 3 (111), 6 (110), 7 (111), 10 (1010)… Bít chẵn lẻ ở vị trí số 4 (100) sẽ kiểm tra tính chẵn lẻ của các vị trí mà số thứ tự của vị trí đó trong hệ nhị phân có bít thứ 3 là 1 Vd: 4, 5, 6, 7, 12, 13, 14, 15… 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 Bản sự thật : Hamming Code Mạch Sửa Lỗi : Hamming Code Ví Dụ : tín hiệu thu được r = ( r1 r2 r3 r4 r5 r6 r7 ) = ( 0 0 1 1 0 1 1 ) Khi đó : S1= r4 + r5 + r6 + r7 = 1 + 0 + 1 + 1 = 1 S2 = r2 + r3 + r6 + r7 = 0 + 1 + 1 + 1 = 1 S3 = r1 + r3 + r5 + r7 = 0 + 1 + 0 + 1 = 0 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 Hamming Code Độ lợi mã hóa (Coding Gain) • Tốc độ mã R = k/n k: số symbol dữ liệu n: tổng symbol • SNR từ và SNR của bit : • Với một sơ đồ mã hóa, độ lợi mã hóa tại một xác suất lỗi bit được định nghĩa là sự khác biệt giữa năng lượng cần thiết cho 1 bit thông tin đã mã hóa để đạt được xác suất lỗi cho trước và truyền dẫn không mã hóa Hamming Code Độ lợi mã hóa : Hamming Code Hamming Code Có 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 MÃ HÓA NGUỒN MÃ 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 • Bước 2: Pi = • Bước 3: Tính ni theo bất đẳng thức (1) • Bước 4: Đổi Pi ra dạng nhị phân Shannon Code Ví Dụ : Cho bộ mã U với xác suất như sau Ui P(Ui) U1 0.34 U2 0.2 U3 0.19 Ui P(ui) Pi ni Dạng nhị phân của Pi U1 U2 0.34 0.2 0 0.34 2 3 0 0.01010111 00 010 U3 0.19 0.54 3 0.10001010 100 U4 U5 U6 0.1 0.07 0.04 0.73 0.83 0.9 4 4 5 0.10111010 0.111010100 0.11100110 1011 1101 11100 U7 U8 U9 0.03 0.02 0.01 0.94 0.97 0.99 6 6 7 0.11110000 0.11110000 0.11111101 111100 111110 1111110 Shannon Code U4 0.1 U5 0.07 U6 0.04 U7 0.03 U8 0.02 U9 0.01 Từ mã • Độ dài trung bình từ mã : • Entropy của tập tin : • Chỉ số kinh tế của bộ mã : Shannon Code Mã 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: (k là kí tự đầu tiên) + Lần mã hóa tiếp theo: So sánh kí tự mã hóa với kí tự đã mã hóa, nếu giống thì đưa ra từ mã 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 Ví Dụ : mã hóa đoạn ký tự sau AABCBBABC Bước Vị trí Ký tự giống 1 1 2 3 4 2 4 5 A 5 7 Dictionary Algorithm Chuỗi Ngõ ra A B AB C BB < 2,1,B> AB ABC Mã 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 • Chỉ có 1 kí tự giống hoặc không có kí tự giống VD: mã hóa AABBCBBAABC Bước 1 Vị trí 1 Kí tự giống 2 2 3 3 4 5 6 7 4 5 6 8 BB ABB 8 11 C Dictionary Algorithm Ngõ ra A B The End Hamming Code  05 ... thông tin mã hóa để đạt xác suất lỗi cho trước truyền dẫn khơng mã hóa Hamming Code Độ lợi mã hóa : Hamming Code Hamming Code Có thể nói, lịch sử phát triển mã sửa lỗi bắt đầu đời mã Hamming định... trọng số Hamming bit sử dụng số ngành, bao gồm lý thuyết tin học, lý thuyết mã hóa, mật mã học Trước tiên ta tìm hiểu trọng số Hamming: trọng số Hamming từ mã số số có từ mã Ví dụ với từ mã 00111010... từ mã 0110101 1110001 ta có: 0110101 XOR 1110001 -1000100 Vậy khoảng cách Hamming từ mã Hamming Code Trọng lượng Hamming Trọng lượng Hamming (Hamming weight) dãy ký tự khoảng cách Hamming

Ngày đăng: 09/08/2015, 16:13

Mục lục

    Ví Dụ : Cho bộ mã U với xác suất như sau

    Mã Từ Điển LZ77

    Ví Dụ : mã hóa đoạn ký tự sau AABCBBABC

    Mã Từ Điểm LZSS

Tài liệu cùng người dùng

Tài liệu liên quan