Bài giảng Cấu trúc dữ liệu và giải thuật: Các thuật toán nén dữ liệu - Bùi Tiến Lên

76 104 0
Bài giảng Cấu trúc dữ liệu và giải thuật: Các thuật toán nén dữ liệu - Bùi Tiến Lên

Đ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

Bài giảng Cấu trúc dữ liệu và giải thuật: Các thuật toán nén dữ liệu cung cấp cho người học các kiến thức cơ bản về nén dữ liệu, thuật toán nén RLE, đánh giá thuật toán RLE, minh họa thuật toán nén dữ liệu,... Mời các bạn cùng tham khảo.

CÁC THUẬT TOÁN NÉN DỮ LIỆU CuuDuongThanCong.com Bùi Tiến Lên 01/01/2017 https://fb.com/tailieudientucntt Giới thiệu Mục đích nén liệu: Giảm kích thước liệu Tăng tính bảo mật CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Giới thiệu (cont.) Có hai dạng thuật nén Nén bảo tồn thơng tin (lossless compression) Thuật toán nén RLE Thuật toán nén LZW Thuật tốn nén Huffman Nén khơng bảo tồn thơng tin (lossy compression) Thuật toán nén sử dụng biến đổi DFT Thuật toán nén sử dụng biến đổi wavelet CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Giới thiệu (cont.) Định nghĩa Hiệu suất nén: tỉ lệ kích thước giảm sau áp dụng thuật toán nén N −M D= 100 (1) N D: hiệu suất nén N: kích thước liệu trước nén M: kích thước liệu sau nén Hiệu suất nén tùy thuộc vào: Phương pháp nén Đặc trưng liệu CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Thuật toán nén RLE Thuật toán nén Run Length Encoding (RLE) mã hóa liệu dựa lặp lại Một dãy ký tự lặp lại liên tiếp gọi đường chạy (run) Đường chạy nén công thức sau [số ký tự][ký tự] Khi độ dài đường chạy lớn tỉ lệ nén tăng lên CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Thuật tốn nén RLE (cont.) Ví dụ Hãy nén chuỗi sau RLE AAABBCCAAADE Sẽ mã hóa thành CuuDuongThanCong.com Spring 2017 3A2B2C3A1D1E https://fb.com/tailieudientucntt Data structure & Algorithm Đánh giá thuật toán RLE Đơn giản, dễ cài đặt Dùng để nén liệu có nhiều đoạn lặp lại Thích hợp cho liệu ảnh Hiệu suất nén khơng cao CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Thuật toán nén LZW Giới thiệu Được đề xuất Ziv and Lempel cải tiến Welch [Lempel, 1978] Đây thuật toán nén dựa tần suất xuất từ điển Do gọi thuật toán nén từ điển Ảnh định dạng GIF sử dụng thuật toán nén CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Thuật toán nén liệu w ← null while ( ĐỌC ký tự k ) if ( wk có TỪ ĐIỂN ) w = wk; else XUẤT mã c ← Code(w) THÊM wk vào TỪ ĐIỂN w ← k XUẤT mã c ← Code(w) CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Minh họa thuật toán nén liệu Xét chuỗi ký tự “abracadabarabra” → k a b r a c a d a b a r a b r a CuuDuongThanCong.com Spring 2017 w =∅ a b r a c a d a ab a r b br a output https://fb.com/tailieudientucntt Data structure & Algorithm c 10 11 12 13 14 15 word a b c d r ab br ac ca ad da aba ar rab bra 10 Thuật toán nén (cont.) 14 c 10 NYT b Hình 12: Mã hóa ký tự chưa có cây: mã d : 0001100100 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 40 Thuật toán nén (cont.) Bước 2.3: Cập nhật Nếu c có cây? Gọi p nút chứa c Nếu c chưa có cây? tách nút NYT thành hai nút nút NYT (mới) trọng số nút p chứa c có trọng số khởi tạo Lặp p = NULL Nếu p nút gốc tăng trọng số lên Hoán đổi p với nút xa (tính từ nút p theo hướng trái → phải → trên) có trọng số (khơng tính nút cha p) Tăng trọng số p lên Di chuyển p lên nút cha CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 41 Thuật toán nén (cont.) Cho Adaptive ban đầu cập nhật với chuỗi ký tự “aad” CuuDuongThanCong.com Spring 2017 NYT Hình 13: Cây Adaptive Huffman khởi đầu https://fb.com/tailieudientucntt Data structure & Algorithm 42 Thuật toán nén (cont.) Đọc liệu “aad” CuuDuongThanCong.com Spring 2017 NYT a Hình 14: Cập nhật sau thêm a https://fb.com/tailieudientucntt Data structure & Algorithm 43 Thuật toán nén (cont.) Đọc liệu “aad” CuuDuongThanCong.com Spring 2017 NYT a Hình 15: Cập nhật sau thêm a https://fb.com/tailieudientucntt Data structure & Algorithm 44 Thuật toán nén (cont.) Đọc liệu “aad” CuuDuongThanCong.com Spring 2017 a NYT d Hình 16: Cập nhật sau thêm d https://fb.com/tailieudientucntt Data structure & Algorithm 45 Minh họa cập nhật trọng số Cho Adaptive Huffman Và thêm a vào 18 c 4 NYT CuuDuongThanCong.com Spring 2017 10 d e a Hình 17: Cây Adaptive Huffman https://fb.com/tailieudientucntt Data structure & Algorithm 46 Minh họa cập nhật trọng số (cont.) 18 c 4 NYT 10 d e a Hình 18: Tìm nút xa có trọng số với a chuẩn bị hoán đổi CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 47 Minh họa cập nhật trọng số (cont.) 18 c 4 NYT CuuDuongThanCong.com Spring 2017 10 a e d Hình 19: Hốn đổi https://fb.com/tailieudientucntt Data structure & Algorithm 48 Minh họa cập nhật trọng số (cont.) 18 c 4 NYT CuuDuongThanCong.com Spring 2017 10 a e d Hình 20: Cập nhật trọng số di chuyển lên nút cha https://fb.com/tailieudientucntt Data structure & Algorithm 49 Minh họa cập nhật trọng số (cont.) 18 c 4 NYT CuuDuongThanCong.com Spring 2017 11 a e d Hình 21: Cập nhật trọng số di chuyển lên nút cha https://fb.com/tailieudientucntt Data structure & Algorithm 50 Minh họa cập nhật trọng số (cont.) 19 c 4 NYT CuuDuongThanCong.com Spring 2017 11 a e d Hình 22: Cập nhật trọng số kết thúc https://fb.com/tailieudientucntt Data structure & Algorithm 51 Thuật toán giải nén Bước 1: Khởi tạo Adaptive Huffman Bước 2: Lặp liệu Bước 2.1: Đọc ký tự c Bước 2.2: Mã hóa ký tự c Bước 2.3: Cập nhật Adaptive Huffman CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 52 Đánh giá Huffman Adaptive Huffman Đánh giá thuật toán Huffman Adaptive Huffman ? ? CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 53 Tài liệu tham khảo Huffman, D A (1952) A method for the construction of minimum-redundancy codes Proceedings of the IRE, 40(9):1098–1101 Lempel, A (1978) Compression of individual sequences via variable-rate coding IEEE Transactions on Information Theory, 24(5):530–536 Vitter, J S (1987) Design and analysis of dynamic huffman codes Journal of the ACM (JACM), 34(4):825–845 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 54 ... (lossless compression) Thuật toán nén RLE Thuật toán nén LZW Thuật tốn nén Huffman Nén khơng bảo tồn thơng tin (lossy compression) Thuật toán nén sử dụng biến đổi DFT Thuật toán nén sử dụng biến đổi... suất nén: tỉ lệ kích thước giảm sau áp dụng thuật toán nén N −M D= 100 (1) N D: hiệu suất nén N: kích thước liệu trước nén M: kích thước liệu sau nén Hiệu suất nén tùy thuộc vào: Phương pháp nén. .. https://fb.com/tailieudientucntt Data structure & Algorithm 11 Thuật toán giải nén liệu Trong thuật tốn giải nén khơng cần phải cung cấp hết toàn từ điển mà sử dụng lại kỹ thuật thuật tốn nén liệu để xây dựng lại từ điển ĐỌC

Ngày đăng: 11/01/2020, 17:46

Từ khóa liên quan

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

Tài liệu liên quan