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

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

76 4 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

Định dạng
Số trang 76
Dung lượng 196,74 KB

Nội dung

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 tốn nén RLE ◮ Thuật toán nén LZW ◮ Thuật toá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 100 (1) D= 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 tố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 toá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 cịn gọi thuật tố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 ... thuật nén ◮ ◮ Nén bảo tồn thơng tin (lossless compression) ◮ Thuật tốn nén RLE ◮ Thuật toán nén LZW ◮ Thuật toá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... 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 tồn từ điển mà sử dụng lại kỹ thuật thuật toán nén liệu để xây dựng lại từ điển ĐỌC... sau áp dụng thuật toán nén N −M 100 (1) D= 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

Ngày đăng: 26/12/2021, 17:20

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

TÀI LIỆU LIÊN QUAN