1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo bài tập lớn môn đại sốtuyếntínhđề tài mã hamming(7,4)

14 30 0

Đ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

Thông tin cơ bản

Tiêu đề Mã Hamming (7,4)
Tác giả Huỳnh Gia Bảo, Trương Gia Hưng, Trịnh Quốc Nam, Kha Tung, Võ Diễm My, Trương Hữu Trí
Người hướng dẫn TS. Đặng Văn Vinh
Trường học Đại Học Bách Khoa
Chuyên ngành Đại Số Tuyến Tính
Thể loại báo cáo
Năm xuất bản 2023
Thành phố TP. HCM
Định dạng
Số trang 14
Dung lượng 1,42 MB

Nội dung

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA BÁO CÁO BÀI TẬP LỚN MÔN ĐẠI SỐ TUYẾN TÍNH ĐỀ TÀI MÃ HAMMING (7,4) LỚP P03, NHÓM STT Tên Trang Huỳnh Gia Bảo Trương Gia Hưng Trịnh Quốc Nam Kha Tung Võ Diễm My Trương Hữu Trí MSSV 2310260 2311364 2352463 2352771 2313629 Giảng viên hướng dẫn: TS Đặng Văn Vinh TP HCM, tháng 12 năm 2023 LỜI CẢM ƠN Trước hết, nhóm chúng em muốn bày tỏ lịng biết ơn chân thành đến Trường Đại học Bách Khoa – ĐHQG TP.HCM tích hợp mơn Đại Số Tuyến Tính vào chương trình học Đặc biệt, chúng em muốn bày tỏ lòng biết ơn sâu sắc đến giảng viên – Thầy Đặng Văn Vinh, chia sẻ kiến thức quý báu thời gian học vừa qua Tham gia lớp học thầy, chúng em cảm nhận phát triển tư nghiêm túc trình học tập Đây kiến thức quan trọng, tảng quan trọng cho tương lai chúng em Được hướng dẫn thầy kiến thức tích lũy, chúng em tự tin trình bày báo cáo tập lớn với đề tài giao Qua trình thực báo cáo này, nhóm chúng em học nhiều kiến thức hữu ích Mặc dù cố gắng hết sức, với vốn kiến thức hạn chế, khơng tránh khỏi thiếu sót Chúng em mong nhận xem xét góp ý thầy để báo cáo nhóm chúng em trở nên hoàn thiện Chân thành cảm ơn thầy [1] MỤC LỤC Richard Wesley Hamming lịch sử đời mã Hamming 2, Cơ sở lý thuyết mã Hamming (7,4) 2.1 Ma trận tạo mã ma trận kiểm tra 2.2 Các loại mã khác 3 Cơ sở lý thuyết giải thích ma trận tạo mã ma trận kiểm tra 3.1 Ma trận tạo mã 3.2 Ma trận kiểm tra Ứng dụng ví dụ 4.1 Ứng dụng 4.2 Cách sử dụng a Bằng thuật toán ma trận b Thuật mã Hamming c Matlab Một số trang web tham khảo .12 [2] NỘI DUNG Richard Wesley Hamming lịch sử đời mã Hamming Richard Wesley Hamming (11/2/1915 - 7/1/1998) nhà tốn học người Mỹ có cơng trình nghiên cứu nhiều ý nghĩa kỹ thuật máy tính viễn thơng Những đóng góp ơng bao gồm mã Hamming, cửa sổ Hamming, số Hamming, gói hình cầu, khái niệm đồ thị Hamming khoảng cách Hamming Trong năm thập niên kỷ 1940, Hamming làm việc Bell Labs máy tính Bell Model V, máy điện (electromechanical) dùng rơ-le (relay-based), với tốc độ chậm, giây đồng hồ chu kỳ máy Nhập liệu cho vào máy thẻ đục lỗ (punch card), máy luôn gây lỗi đọc Trong ngày làm việc tuần, mã đặc biệt dùng để tìm lỗi tìm được, nhấp nháy đèn báo hiệu, báo cho người điều khiển biết để họ sửa, điều chỉnh máy lại Trong thời gian làm việc ngày cuối tuần, người điều khiển máy khơng có mặt, có lỗi xảy ra, máy tính tự động bỏ qua chương trình chạy chuyển sang công việc khác Hamming thường làm việc ngày cuối tuần ông ngày trở nên bực tức ông phải khởi động lại chương trình ứng dụng từ đầu, chất lượng kém, không đáng tin cậy máy đọc thẻ đục lỗ Mấy năm đó, ông dồn tâm lực vào việc xây dựng hàng loạt thuật tốn có hiệu cao để giải vấn đề sửa lỗi Năm 1950, ông công bố phương pháp mà biết Mã Hamming Một số chương trình ứng dụng thời cịn sử dụng mã ơng Cơ sở lý thuyết mã Hamming (7,4) 2.1 Ma trận tạo mã ma trận kiểm tra Trong viễn thông, mã Hamming mã sửa lỗi tuyến tính (linear error-correcting code), đặt tên theo tên người phát minh Mã Hamming phát bit hai bit bị lỗi Mã Hamming cịn sửa lỗi bit bị sai gây Ngược lại với mã ông, mã chẵn lẻ (parity code) đơn giản vừa khơng có khả phát lỗi bit lúc bị hoán vị (0 thành ngược lại), vừa giúp để sửa lỗi mà phát Hiện thời, nói đến mã Hamming thực muốn nói đến mã (7,4) mà Hamming cơng bố năm 1950 Với nhóm bit liệu, mã Hamming thêm bit kiểm tra Thuật toán (7,4) Hamming sửa chữa bit lỗi nào, phát tất lỗi bit, lỗi bit gây Điều có nghĩa tất phương tiện truyền [3] thơng khơng có chùm lỗi đột phát (burst errors) xảy ra, mã (7,4) Hamming có hiệu (trừ phi phương tiện truyền thơng có độ nhiễu cao gây cho bit số bit truyền bị đảo lộn) 2.2 Các loại mã khác Nhiều mã phát lỗi đơn giản sử dụng trước có mã Hamming, khơng có mã hiệu mã Hamming với tổng phí tương đương • Mã chẵn lẻ (bit chẵn lẻ) bit kiểm tra (Parity) Mã chẵn lẻ thêm bit vào liệu, bit cho thêm cho biết số lượng bit có giá trị đoạn liệu nằm trước số chẵn hay số lẻ Nếu bit bị thay đổi trình truyền liệu, giá trị chẵn lẻ thông điệp thay đổi phát lỗi (Chú ý bit bị thay đổi lại bit kiểm tra) Theo quy ước chung, bit kiểm tra có giá trị số lượng bit có giá trị liệu số lẻ, giá trị bit kiểm tra số lượng bit có giá trị liệu số chẵn Nói cách khác, đoạn liệu bit kiểm tra gộp lại với nhau, số lượng bit có giá trị luôn số chẵn Mã chẵn lẻ không bit chứa lỗi phát lỗi Dữ liệu phải loại bỏ hoàn toàn truyền lại từ đầu Trên mơi trường truyền nhiễu, việc truyền thành cơng nhiều thời gian khơng xảy Tuy nhiên, chất lượng kiểm tra tính chẵn lẻ sử dụng bit phương pháp lại tiết kiệm chi phí • Mã-hai-trong-năm (Two-out-of-five code) Xuất năm thập niên kỷ 1940 Mã đảm bảo khối bit (còn gọi khối-5) có xác hai bit có giá trị Máy tính nhận liệu nhập vào có lỗi khối bit khơng bit có giá trị Tuy thế, mã haitrong-năm phát đơn vị bit mà thôi; khối, bit bị lộn ngược thành giá trị 1, bit khác bị lộn ngược thành giá trị 0, quy luật hai-trongnăm cho giá trị (remained true), khơng phát có lỗi xảy • Tái diễn liệu (Repetition) Một mã dùng thời gian mã hoạt động cách nhắc nhắc lại bit liệu vài lần (tái diễn bit truyền) để đảm bảo bit liệu truyền, truyền đến nơi nhận trọn vẹn Chẳng hạn, bit liệu cần truyền có giá trị 1, mã tái diễn n=3 cho truyền gửi giá trị "111" Nếu ba bit nhận khơng giống nhau, trạng báo cho ta biết rằng, lỗi truyền thông xảy Nếu kênh truyền không bị nhiễu, tương đối đảm bảo với hầu hết lần truyền nhóm ba bit gửi, có bit bị thay đổi Do [4] nhóm 001, 010, 100 tương đương cho bit có giá trị 0, nhóm 110, 101, 011 tương đương cho bit có giá trị - lưu ý số lượng bit có giá trị nhóm coi có giá trị 0, đa số so với tổng số bit nhóm, hay bit, tương đương nhóm coi giá trị có số lượng bit nhiều bit có giá trị nhóm Một mã có khả tái dựng lại thông điệp gốc môi trường nhiễu lỗi gọi mã "sửa lỗi" (error-correcting code) Tuy nhiên, mã sửa chữa xác tất lỗi Trong ví dụ trước đó, kênh lật hai bit thu nhận 001, hệ thống phát lỗi kết luận bit gốc 0, điều không xác Nếu tăng kích thước chuỗi bit lên bốn, ta phát tất lỗi hai bit sửa chúng (số lượng bit chẵn lẻ chẵn); mức năm bit, phát sửa tất lỗi hai bit, sửa tất lỗi ba bit Hơn nữa, việc tăng kích thước chuỗi bit chẵn lẻ không hiệu quả, làm giảm thông lượng ba lần trường hợp ban đầu hiệu giảm mạnh ta tăng số lần bit chép để phát sửa nhiều lỗi Cơ sở lý thuyết giải thích ma trận tạo mã ma trận kiểm tra 3.1 Ma trận tạo mã  Trong lý thuyết mã hóa, ma trận tạo mã ma trận có hàng tạo thành sở cho mã tuyến tính Các từ mã tất tổ hợp tuyến tính hàng ma trận này, nghĩa mã tuyến tính khơng gian hàng ma trận tạo mã  Nếu G ma trận, tạo từ mã mã tuyến tính C cơng thức: w = sG  w từ mã mã tuyến tính C  s vectơ đầu vào  Cả w s coi vectơ hàng  Ma trận tạo mã tuyến tính [n, k, d]q có định dạng k ×n  n độ dài từ mã  k số bit thông tin (chiều C dạng không gian vectơ)  d khoảng cách tối thiểu mã  q kích thước trường hữu hạn, nghĩa số lượng ký hiệu bảng chữ (do đó, q = biểu thị mã nhị phân, v.v.)  Số lượng bit dư thừa ký hiệu là: r = n – k Dạng ma trận tạo mã Dạng chuẩn ma trận tạo mã là: G = [Ik | P] Với I ma trận k × k đơn vị P ma trận k × [n – k] Khi ma trận tạo dạng chuẩn, mã C mã có hệ thống k vị trí tọa độ [5] 3.2 Ma trận kiểm tra  Trong lý thuyết mã hóa, ma trận kiểm tra tính chẵn lẻ mã khối tuyến tính C ma trận mơ tả quan hệ tuyến tính mà thành phần từ mã phải thỏa mãn Nó sử dụng để định xem vectơ cụ thể có phải từ mã hay không sử dụng thuật tốn giải mã  Về mặt hình thức, ma trận kiểm tra chẵn lẻ H mã tuyến tính C ma trận tạo mã kép, C⊥ Điều có nghĩa từ mã c thuộc C tích vectơ ma trận Hc⊤ = Dạng ma trận kiểm tra Các hàng ma trận kiểm tra tính chẵn lẻ hệ số phương trình kiểm tra tính chẵn lẻ Nghĩa là, chúng cho thấy kết hợp tuyến tính chữ số (thành phần) định từ mã Ví dụ Biểu diễn gọn gàng phương trình kiểm tra tính chẵn lẻ: c3 + c4 = c1 + c2 = Điều phải thỏa mãn vectơ (c1, c2, c3, c4) từ mã C Từ định nghĩa ma trận kiểm tra chẵn lẻ, theo trực tiếp khoảng cách tối thiểu mã số d tối thiểu cho d – cột ma trận kiểm tra chẵn lẻ H độc lập tuyến tính tồn d cột H phụ thuộc tuyến tính Ứng dụng ví dụ 4.1 Ứng dụng Mã hóa kiểm tra lỗi ( Error Correction Coding – ECC ) ứng dụng để làm tăng độ tin cậy lưu trữ liệu nhờ khả phát sửa lỗi liệu bị hỏng xảy nhớ Có nhiều thuật tốn ECC sử dụng với ưu điểm khác mã Hamming, Reed-Solomon, BCH, LDPC Trong đó, mã Hamming phù hợp với việc kiểm soát lỗi nhớ ưu điểm bật thuật tốn mã hóa giải mã đơn giản nên tốc độ mã hóa giải mã cao [6] 4.2 Cách sử dụng a Bằng thuật toán ma trận  Xét trường số ( hệ nhị phân ), không gian véctơ gồm tất số trường số  Xét ma trận H có cột véctơ khác không �32 : 1 1 0 �= 1 1 0 1 1  N(H) khơng gian nghiệm hệ phương trình tuyến tính HX = Gọi ma trận G ma trận có họ véctơ hàng sở N(H) 1 1 0 1 1 0 1 1 1 1 0 0 1 1 0 0 1 1  Đặt x3 = a, x5 = b, x6 = c, x7 = d  X = a (1;1;1;0;0;0;0 ) + b (1;1;0;1;1;0;0) + c (0;1;0;1;0;1;0) + d ( 1;0;0;1;0;0;1)  Khi : �= 1 1 1 0 0 1 1 0 0 0 0  Gọi E = { ℯ1 = (1;0;…;0); ℯ2 = (0;1;…;0); … ; ℯ7 = (0;…;0;1) } sở tắc �72 { c1;c2;…;c7} họ véctơ cột H  Ta có vài nhận xét sau: Hℯi = ci ≠0, ∀i ∈ { 1;…;7 } Suy ∀i, ℯi ∉ N(H) ( họ véctơ cột H khác khơng ) Nếu v ∈ N(H) , v + ℯi ∉ N(H) ( H(v+ℯi) = Hv + H ℯi = + ci = ci ≠ ) Nếu u véctơ Z2 thỏa Hu = ci => (u + ℯi ) ∈ N(H) ( H(u+ℯi) = Hu + Hℯi = ci + ci = 2ci = 0ci = ) [7] Ngoài ∀j ≠ i, (u + ej ) ∉ N(H) b Thuật mã Hamming Ý tưởng thuật mã Hamming đơn giản: thay truyền thơng điệp a đi, người ta truyền thông điệp v = aG ∈ N(H) người nhận cần kiểm tra véctơ thu có nằm khơng gian nghiệm ma trận H hay khơng để biết lỗi có xảy hay không  Cho đoạn mã a gồm data bit, a = { a1; a2; a3; a4 }  Thực phép tốn v = aG để mã hóa a => v thuộc N(H)  Vì cột 3, 5, 6, G véctơ đơn vị sở tắc v thuộc R4 => Các phần tử v vị trí tạo nên véctơ a, vị trí cịn lại đóng vai trị check bit  Sau gửi véctơ v cho người nhận, thu véctơ w( khác véctơ v sai sót q trình truyền liệu)  Nếu Hw = 0, tức w thuộc N(H) => Khơng có lỗi xảy ra, người nhận có thơng tin cần chuyển a tạo nên từ phần tử vị trí 3, 5, 6, véctơ w  Nếu Hw ≠ có lỗi xảy vị trí thứ i w ( w= v + ℯ i ) Khi Hw=Hv + Hℯi = + Hℯi= ci Dựa vào ta nhận biết lỗi nằm vị trí thứ i sửa lỗi cách đổi  vị trí i w  Giả sử thơng tin cần chuyển a = ( 1; 0; 1; ) Khi v = aG = ( 0; 0; 1; 0; 0; 1; ) Giả sử người nhận thu véctơ w = ( 0; 0; 1; 0; 0; 1; ) Khi Hw = ( 0; 0; 1)T = c7 Như lỗi xảy vị trí thứ véctơ w Ta sửa lỗi cách thay phần tử thứ véctơ w từ thành ta có véctơ w’ = ( 0; 0; 1; 0; 0; 1; 1), sau rút phần tử vị trí thứ 3, 5, 6, thu data bit truyền ban đầu a = ( 1; 0; 1; ) Lưu ý: Ta xếp phần tử khác không �32 cách tùy ý để tạo ma trận H Khi họ véctơ cột G chứa véctơ (1; 0; 0; 0)T , (0; 1; 0; 0)T , (0; 0; 1; 0)T , ( 0; 0; 0; 1)T Tùy vào vị trí véctơ ma trận G mà ta biết vị trí phần tử véctơ a véctơ v = aG [8] c Matlab clc; H = [0 0 1 1; 1 0 1; 1 1]; G = [1 1 0 0; 0 1 0; 1 0; 1 0 1]; str = input('Nhập tin nhắn chữ: '); a = reshape(dec2bin(str, 8).'-'0',[],4); disp('Chuyển chữ dạng nhị phân tạo ma trận nhị phân với số cột = 4:') disp(num2str(a)); disp(' -'); disp('Chuyển thành ma trận mã Hamming:'); v = []; for i = 1:height(a) v = [v;mod(a(i,:)*G, 2)]; end disp(num2str(v)); disp(' -'); x = input('Chọn vị trí muốn mã Hamming bị sai: '); for i = 1:height(x) v(x(i,1),x(i,2)) = mod(v(x(i,1),x(i,2))+1, 2); end disp('Mã Hamming bị sai: '); disp(num2str(v)); disp(' -'); p = v; disp('Kiểm tra mã Hamming '); for i = 1:height(v) u = v(i,:); c = mod(H*u', 2); [9] y = c(1,1)*4 + c(2,1)*2 + c(3,1)*1; if y ~= msg = ['Có lỗi hàng ', num2str(i), ' cột ', num2str(y)]; disp(msg); v(i,y) = mod(v(i,y)+1, 2); end end disp('Mã Hamming sau sửa sai: '); disp(num2str(v)); disp(' -'); b = []; b1 = []; for i = 1:height(v) k = [v(i,3) v(i,5) v(i,6) v(i,7)]; b = [b;k]; k1 = [p(i,3) p(i,5) p(i,6) p(i,7)]; b1 = [b1;k1]; end c = char(bin2dec(reshape(char(b+'0'), 8,[]).')); c1 = char(bin2dec(reshape(char(b1+'0'), 8,[]).')); disp('Chuyển lại liệu chữ: '); disp(c') disp('Nếu không phát sửa lỗi liệu chữ là: '); disp(c1') [10] Figure Nhập chữ admin vào code Figure Chọn vị trí muốn sai, ví dụ hàng cột 4, hàng cột hàng cột [11] Figure Phát lỗi sai sửa Các câu lệnh dùng matlab Lệnh Tác dụng Num2str Chuyển liệu từ kiểu số sang kiểu chuỗi Disp If…else…end Mod(số/biến chia , số bị chia ) Hiển thị giá trị chuỗi Nếu…Thì…Nếu khơng Tốn tử modulo ( lấy phần dư ) For= : : < giá trị cuối > = [A ; B ; C ] ~ Lập ma trận có hàng A , B,C phần tử hàng cách dấu cách Tốn tử logic : khơng ( not ) [12] Một số trang web tham khảo Đặng Văn Vinh (2022) Giáo Trình Đại Số Tuyến Tính Nhà Xuất Bản Đại Học Quốc Gia TP.HCM https://www.sciencedirect.com/topics/computer-science/generator-matrix https://www.sciencedirect.com/topics/engineering/parity-check-matrix https://math.libretexts.org/Bookshelves/Abstract_and_Geometric_Algebra/Abstra ct_Algebra%3A_Theory_and_Applications_(Judson)/08%3A_Algebraic_Coding _Theory/8.04%3A_Parity-Check_and_Generator_Matrices https://www.techtarget.com/whatis/definition/Hamming-code https://fr.wikipedia.org/wiki/Code_de_Hamming_(7,4) https://www.researchgate.net/publication/298710950_Implementing_7_4_hammi ng_code_with_extra_one_parity_bit_and_bit_reverse_scheme_to_correct_errors_ at_the_receiver_side [13]

Ngày đăng: 03/01/2024, 13:50

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w