Báo cáo BTL môn đại số tuyến tính

17 174 1
Báo cáo BTL môn đại số tuyến tính

Đ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

BTL môn đại số tuyến tính chủ đề mã Hamming Ngày nay công nghệ số ngày càng phát triển một cách chóng mặt, đi đôi với công nghệ nghệ số ngày càng phát triển thì việc truyền thông tin là rất quan trọng. Trong quá trình truyền dẫn dữ liệu, chúng ta không thể tránh khỏi lỗi và nhiễu gây sai sót trong quá trình tiếp nhận thông tin. Từ đó đã có rất nhiều phương pháp tìm và sửa lỗi đã được phát minh như: mã chập, mã golay, mã nhị phân, mã chẵn lẻ, mã haitrongnăm, tái biến dữ liệu, mã hamming

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA TOÁN ỨNG DỤNG oo0oo MƠN HỌC: ĐẠI SỐ TUYẾN TÍNH BÁO CÁO BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH CHỦ ĐỀ: MÃ HAMMING (7, 4) PHÁT HIỆN VÀ SỬA LỖI GVHD: Thầy Nguyễn Hữu Hiệp Lớp: L16 DANH SÁCH THÀNH VIÊN NHÓM 03 STT HỌ VÀ TÊN NGUYỄN ĐẠI ĐỒNG NGUYỄN TRẦN GIÁP PHAN THANH HẠO TRƯƠNG NGUYỄN NHẬT ĐƠNG NGUYỄN Q HIỂN NGUYỄN CAO ĐẠT NGUYỄN LÊ THÀNH ĐẠT Tp Hồ Chí Minh, tháng 12 năm 2022 i MSSV 2210780 2210839 2210922 2210779 2211039 2210688 2210690 Nhận xét giáo viên: ………………………………………………………………………… ………………………………………………………………………… ………………………………………………………………………… ………………………………………………………………………… ………………………………………………………………………… ………………………………………………………………………… ………………………………………………………………………… ………………………………………………………………………… ………………………………………………………………………… ………………………………………………………………………… ………………………………………………………………………… Ngày … tháng … năm 2022 Giáo viên chấm điểm ii LỜI MỞ ĐẦU Ngày công nghệ số ngày phát triển cách chóng mặt, đơi với cơng nghệ nghệ số ngày phát triển việc truyền thơng tin quan trọng Trong trình truyền dẫn liệu, tránh khỏi lỗi nhiễu gây sai sót q trình tiếp nhận thơng tin Từ có nhiều phương pháp tìm sửa lỗi phát minh như: mã chập, mã golay, mã nhị phân, mã chẵn lẻ, mã hai-trong-năm, tái biến liệu, mã hamming, … Trang Mục lục LỜI MỞ ĐẦU CHƯƠNG 1: SƠ LƯỢC VỀ MÃ HAMMING Lịch sử đời mã Hamming Các loại mã trước thời kỳ Hamming Ứng dụng mã Hamming CHƯƠNG 2: CƠ SỞ LÝ THUYẾT CỦA MÃ HAMMING (7, 4) Mã Hamming (7, 4) gì? Cách thức thực trình phát sửa lỗi Một số mã Hamming khác CHƯƠNG 3: CÁCH THIẾT LẬP MÃ HAMMING 10 Tạo mã Hamming (7, 4) 10 Tìm lỗi sai sửa sửa mã bên thu 11 CHƯƠNG 4: MÔ TẢ THUẬT TOÁN 12 Tạo mã 12 Giải mã bên thu 13 CHƯƠNG 5: MATHLAB 14 Tổng quan Mathlab 14 Sơ đồ khối 14 Các lệnh 14 Bài code hoàn chỉnh Mathlab 14 Ví dụ minh họa 16 Tài liệu tham khảo 17 Danh mục hình ảnh Hình 2-1 Mã Hamming (7, 4) Hình 2-2 Error-correcting Code function Hình 5-1 Sơ đồ khối 14 Hình 5-2 Bài code hình editor 16 Hình 5-3 Nhập liệu cần truyền 16 Hình 5-4 Nhập mã nhận bên thu 17 Trang CHƯƠNG 1: SƠ LƯỢC VỀ MÃ 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 có nhiều ý nghĩa ngành kĩ thuật máy tính viễn thơng Những đóng góp ơng bao gồm mã Hamming (sử dụng ma trận Hammig), cửa sổ Hamming, số Hamming, giới hạn 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 cards), 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 đương 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 (unreliability) 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 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 sử dụng mã ông Các loại mã trước thời kỳ Hamming 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ẻ: 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) - Mã hai-trong-năm: 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ị Trang - Tái biến liệu: 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 Ứng dụng mã Hamming Thế kỉ trước, mà chưa có cáp quang, cáp đồng loại cáp sử dụng để truyền thông tin, liệu Nhưng cáp đồng lại có tốc độ truyền dẫn khơng cân bằng, thêm vào bất ổn định, bị ảnh hưởng nhiều mơi trường, vậy, dẫn đến việc thông tin, liệu truyền đến nơi bị thiếu hụt, sai lệch Vậy nên, mã Hamming tạo với mục đích sửa lỗi tuyến tính Ưu điểm mã đơn giản, số bit kiểm tra ít, ngồi ra, mã hoạt động tốt việc phát lỗi đơn bit số trường hợp lỗi hai bit Tuy nhiên, với nhu cầu phát triển loài người khả sửa lỗi mã Hamming khơng cịn đáp ứng đa số chương trình Dù vậy, mã Hamming bước tiến lớn viễn thông tảng nhiều mã sửa lỗi Trang CHƯƠNG 2: CƠ SỞ LÝ THUYẾT CỦA MÃ HAMMING (7, 4) Mã Hamming (7, 4) gì? Hình 2-1 Mã Hamming (7, 4) Trong lý thuyết mã hóa, Hamming (7,4) mã sửa lỗi tuyến tính mã hóa bit liệu thành bit liệu cách thêm bit chẵn lẻ Nó phần họ mã Hamming lớn hơn, thuật ngữ mã Hamming thường đề cập đến mã cụ thể mà Richard W Hamming giới thiệu vào năm 1950 Mã Hamming thêm bit kiểm tra cho bit liệu thơng báo Thuật tốn (7, 4) hamming sửa lỗi đơn bit phát lỗi bit bit Nói cách khác, khoảng cách Hamming tối thiểu hai từ mã xác 3, từ nhận giải mã cách xác chúng khoảng cách nhiều từ mã người gửi truyền Điều có nghĩa tình truyền dẫn khơng xảy lỗi, mã Hamming có hiệu lực Trang Cách thức thực trình phát sửa lỗi Hình 2-2 Error-correcting Code function Khi liệu ghi vào nhớ ,tính tốn, miêu tả hàm f, thực liệu để tạo mã Cả mã liệu lưu trữ Vì từ M bit liệu lưu mã có chiều dài K bit sau kích thước thực tế từ lưu trữ M + K bit Khi từ lưu trữ trước đọc, mã sử dụng để phát sửa lỗi Một bit mã K tạo từ bit liệu M so sánh với bit mã lấy So sánh mang lại ba kết quả: I Không phát lỗi Các bit liệu tìm nạp gửi II Phát lỗi sửa lỗi Các bit liệu cộng bit điểu chỉnh lỗi đưa đến điều chỉnh, tạo điều chỉnh M bit gửi III Phát lỗi, khơng thể sửa lỗi Tình trạng báo cáo Mã hoạt động theo cách gọi mã sửa lỗi Một mã đặc trưng số lỗi bit từ mà phát hện Một số mã Hamming khác Với K bit chẵn lẻ, có khoảng từ đến 2𝐾 − Giá trị để khơng có lỗi phát hiện, 2𝐾 − giá trị biết có lỗi bit bị lỗi Bây giờ, lỗi xảy bit liệu M bit kiểm tra K, phải có: 2𝐾 − ≥ 𝑀 + 𝐾 Vậy với K biến, có mã Hamming sau: Trang Bit chẵn lẻ Tổng số bit Bit liệu 15 31 63 127 255 11 26 57 120 247 … 𝐾 … 𝑁 = 2𝐾 − … 𝑀 = 2𝐾 − − 𝐾 Tên Hamming (3, 1) Hamming (7, 4) Hamming (15, 11) Hamming (31, 26) Hamming (63, 57) Hamming (127, 120) Hamming (255, 247) … Hamming (2𝐾 − 1, 2𝐾 − − 𝐾) Trang CHƯƠNG 3: CÁCH THIẾT LẬP MÃ HAMMING Tạo mã Hamming (7, 4) Mã Hamming (7, 4) bao gồm bit liệu bit chẵn lẻ, gọi bit liệu D1, D2, D3, D4 bit chẵn lẻ P1, P2, P4 P1 P2 D1 P4 D2 D3 D4 Với quy tắc xếp sau: Các vị trí khối đánh số từ 1: bit 1, 2, 3, Tất bit chẵn lẻ đặt vào vị trí lũy thừa 2n { n =0, 1, 2,…}.VD: 20 , 21 , 22 ,… Tất vị trí cịn lại dùng cho bit liệu VD: 3, 5, 6, 7, … Mỗi bit chẵn lẻ tính giá trị chẵn lẻ cho số bit từ mà theo quy tắc sau: - Bít chẵn lẻ vị trí số (001) kiểm tra tính chẵn lẻ vị trí mà số thứ tự vị trí hệ nhị phân có bit ngồi Vd: (0001), (0011), (0101), (0111) , - Bít chẵn lẻ vị trí số (010) kiểm tra tính chẵn lẻ vị trí mà số thứ tự vị trí hệ nhị phân có bit thứ Vd: (0010), (0011), (0110), (0111), … - Bít chẵn lẻ vị trí số (100) kiểm tra tính chẵn lẻ vị trí mà số thứ tự vị trí hệ nhị phân có bit thứ Vd: (0101), (0110), 7(0111), … - Tương tự vớ i bít chẵn lẻ vị trí cao hơn: 8, 16, 32… Theo quy tắc trên, ta có sau: P1 = D1 ⊕ D2 ⊕ D4 P2 = D1 ⊕ D3 ⊕ D4 P4 = D2 ⊕ D3 ⊕ D4 ( với ⊕ phép XOR) Ví dụ cụ thể cho quy tắc trên: Ta cần truyền liệu “ 1 0” P1 P2 P4 1 P1 = ⊕ ⊕ = P2 = ⊕ ⊕ = P4 = ⊕ ⊕ = Vậy liệu mà từ máy thu ta truyền “ 1 0 1 0” Trang 10 Tìm lỗi sai sửa sửa mã bên thu Sau nhận mã Hamming dạng: P1 P2 D1 P4 D2 D3 Gọi C1, C2, C3 bit kiểm tra Theo quy tắc ta có được: D4 C1 = P1 ⊕ D1 ⊕ D2 ⊕ D4 C2 = P2 ⊕ D1 ⊕ D3 ⊕ D4 C3 = P4 ⊕ D2 ⊕ D3 ⊕ D4 Nếu C3*4 + C2*2 + C1*1 mã khơng có lỗi, cịn khác khơng mã sai vị trí C3*4 + C2*2 + C1*1 Theo ví dụ trên, truyền liệu “ 1 0 1 0”, bên nhận liệu mã “ 1 0 0”, ta tiến hành giải mã P1 P2 D1 P4 D2 D3 D4 C1 = ⊕ ⊕ ⊕ = C2 = ⊕ ⊕ ⊕ = C3 = ⊕ ⊕ ⊕ = Ta có, C3*4 + C2*2 + C1*1 = 1*4 + 0*2 + 1*1 = 5, ta có mã sai vị trí số Ta cần hốn vị số thành ta mã cần nhận “1 0 1 0” Trang 11 CHƯƠNG 4: MÔ TẢ THUẬT TỐN Tạo mã Mơt phương pháp để truyển đổi bốn bit liệu thành mã Hamming bảy bit sử dụng ma trận chuyển đổi liệu 4x7 [G] Xác định D vecto 1x4 [ D1, D2, D3, D4 ] Có thể tạo ma trận chuyển đổi liệu 4x7[G] cho tích modulo vecto d ma trận [G] (d[G]) mã Hamming 1x7 mong muốn Đây cách thực hiện: Bước Biểu diễn bit liệu vecto cột sau: D1 = | | 0 D2 = | | 0 0 D3 = | | 0 D4 = | | Bước Biểu diễn bit chẵn lẻ vecto cột chứa số hàng tương ứng với bit liệu có phép tính số tất hàng khác Sử dụng định nghĩa bit chẵn lẻ từ ví dụ trên: 1 P1 = | | 1 P2 = | | 1 P4 = | | 1 Bước Tạo ma trận chuyển đổi liệu [G], cách xếp vectơ cột từ bước trước thành ma trận 4×7 cho cột xếp để khớp với bit tương ứng chúng từ mã Để tạo ma trận chuyển đổi liệu tạo từ mã với bit có thứ tự P1, P2, P4, D1, D2, D3, D4 (với bit chẵn lẻ theo sau bit liệu), sử dụng vectơ từ bước trước xếp chúng thành cột sau [P1 P2 D1 P4 D2 D3 D4] Kết ta ma trận chuyển đổi liệu 4x7: 1 𝐺=| 1 1 0 0 1 1 0 0 0 | Việc xếp cột theo thứ tự khác thay đổi vị trí bit từ mã Như thay truyền thơng điệp a đi, người ta truyền thông Trang 12 điệp 𝑣 = 𝑎 𝐺 ∈ 𝑁(𝐻) phần tử 𝑣 vị trí 3, 5, 6, tạo nên vecto a Giải mã bên thu Giả sử người nhận có vecto 𝑤 (do sai sót q trình truyền liệu, 𝑤 khác 𝑣 vị trí đó) Ta viết 𝑤 dạng vecto 1x7 [ P1, P2, D1, P4, D2, D3, D4 ] Biểu diễn bit kiểm tra vecto cột chứa số hàng tương ứng với bit có 𝑤 có phép tính số tất hàng khác |1| 𝐶1 = |1| 1 |1| 𝐶2 = |0| 1 0 |0| 𝐶3 = |1| 1 Để tạo ma trận kiểm tra liệu, ta cần chuyển đổi bit kiểm tra từ vecto 1x7 thành vecto 7x1 xếp chúng lại thành ma trận 3x7 sau: 0 𝐻 = |0 1 1 1 𝐶3 1| (𝐶2) 1 𝐶1 Người nhận cần thực chuyển đổi vecto 𝑤 1x7 [ P1 P2 D1 P4 D2 D3 𝑃1 𝑃2 𝐷1 D4 ] chuyển vị thành vecto 𝑤′ 7x1 𝑃4 , người nhận thực H.𝑤′ để 𝐷2 𝐷3 [𝐷4] kiểm tra xem coi mã nhận có sai sót hay khơng Trang 13 CHƯƠNG 5: MATHLAB Tổng quan Mathlab - Matlab (viết tắt Matrix Laboratory) ngơn ngữ lập trình bậc cao bốn hệ, mơi trường để tính tốn số học, trực quan lập trình - Cơng cụ cho phép thao tác với ma trận, vẽ biểu đồ với hàm số liệu, thực thuật toán, tạo giao diện người dùng, phân tích liệu, phát triển thuật tốn, tạo kiểu mẫu ứng dụng - Phần mềm cơng cụ hỗ trợ đắc lực việc tính tốn, vẽ hình, vẽ biểu đồ thơng dụng thực thi phương pháp tính tốn, mơ tính tốn, thực nghiệm nhiều mơ hình thực tế kỹ thuật Sơ đồ khối Bắt đầu Kết thúc Nhập liệu gồm 4bit cần chuyển dạng ma trận Tạo thành mã Hamming (7, 4) với 4-bit liệu Kiểm tra mã nhận sau tìm sửa lỗi Nhập mã nhận dạng ma trận Hình 5-1 Sơ đồ khối Các lệnh Lệnh Clc Input For Mod Disp Num2str Ý nghĩa Xóa văn khỏi command window Hiển thị chuỗi lên hình vầ chờ nhập dự liệu từ bàn phím Lặp lại số câu lệnh với số lần cụ thể Chia lấy phần dư Hiển thị nội dung mảng chuỗi Chuyển đổi số thành biểu diễn kí tự Bài code hồn chỉnh Mathlab clc Trang 14 G = [ 1 0 0; 0 1 0; 1 0; 1 0 1]; H = [0 0 1 1; 1 0 1; 1 1]; %tạo mã Hamming u = input('Nhập mã muốn chuyển (4bits): '); v = []; for i= 1:height(u) v = [v ; mod(u(i, :) * G, 2)]; end disp (['Chuyển thành mã hamming: ',num2str(v)]); disp(' '); %kiểm tra mã U = input('Nhập mã nhận : '); V = []; for i = 1: height(v) A = U(i , :); V = [V; mod(H * A', 2)]; end c = V(1,1)*4 + V(2, 1)*2 + V(3,1)*1; if (c ~= 0) disp(['Mã nhận sai vị trí số: ', num2str(c)]); end if(c == 0) disp ('Mã khơng có lỗi '); end disp(' -'); Trang 15 Hình 5-2 Bài code hình editor Ví dụ minh họa Hình 5-3 Nhập liệu cần truyền Trang 16 Hình 5-4 Nhập mã nhận bên thu Tài liệu tham khảo - https://vi.wikipedia.org/wiki/M%C3%A3_Hamming https://tongquanvienthong.blogspot.com/2012/03/ma-hamming.html?m=1 Giáo trình đại số tuyến tính (Đặng Văn Vinh ) - Trang 139 Computer organization and architecture designing for performance ninth edition (William Stallings) – chapter 5-2 Hamming(7,4) - Wikipedia Hamming (7,4) Code Discussion and Implementation (michaeldipperstein.github.io) - Tài liệu Matlab Trang 17

Ngày đăng: 20/04/2023, 21:14

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

Tài liệu liên quan