intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:76

83
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: 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

  1. CÁC THUẬT TOÁN NÉN DỮ LIỆU Bùi Tiến Lên 01/01/2017 CuuDuongThanCong.com https://fb.com/tailieudientucntt
  2. Giới thiệu Mục đích của nén dữ liệu: I Giảm kích thước dữ liệu I Tăng tính bảo mật Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 2
  3. Giới thiệu (cont.) Có hai dạng thuật nén I Nén bảo toàn thông tin (lossless compression) I Thuật toán nén RLE I Thuật toán nén LZW I Thuật toán nén Huffman I Nén không bảo toàn thông tin (lossy compression) I Thuật toán nén sử dụng biến đổi DFT I Thuật toán nén sử dụng biến đổi wavelet Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 3
  4. Giới thiệu (cont.) Định nghĩa 1 Hiệu suất nén: tỉ lệ kích thước giảm được sau khi áp dụng thuật toán nén N −M D= 100 (1) N I D: hiệu suất nén I N: kích thước dữ liệu trước khi nén I M: kích thước dữ liệu sau khi nén Hiệu suất nén tùy thuộc vào: I Phương pháp nén I Đặc trưng của dữ liệu Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 4
  5. Thuật toán nén RLE I Thuật toán nén Run Length Encoding (RLE) mã hóa dữ liệu dựa trên sự lặp lại I Một dãy các ký tự lặp lại liên tiếp được gọi là đường chạy (run) I Đường chạy sẽ được nén bằng công thức sau [số ký tự][ký tự] I Khi độ dài đường chạy lớn thì tỉ lệ nén sẽ tăng lên Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 5
  6. Thuật toán nén RLE (cont.) Ví dụ 1 Hãy nén chuỗi sau bằng RLE AAABBCCAAADE Sẽ được mã hóa thành 3A2B2C3A1D1E Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 6
  7. Đánh giá thuật toán RLE I Đơn giản, dễ cài đặt I Dùng để nén các dữ liệu có nhiều đoạn lặp lại I Thích hợp cho dữ liệu ảnh I Hiệu suất nén không cao Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 7
  8. Thuật toán nén LZW Giới thiệu I Được đề xuất bởi Ziv and Lempel và cải tiến bởi Welch [Lempel, 1978] I Đây là một thuật toán nén dựa trên tần suất xuất hiện trong từ điển. Do đó nó còn được gọi là thuật toán nén từ điển I Ảnh định dạng GIF sử dụng thuật toán nén này Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 8
  9. Thuật toán nén dữ liệu w ← null while ( ĐỌC ký tự k ) if ( wk có trong 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) Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 9
  10. Minh họa thuật toán nén dữ liệu Xét một chuỗi ký tự “abracadabarabra” → k w =∅ output c word a a 0 a b b 0 1 b r r 1 2 c a a 4 3 d c c 0 4 r a a 2 5 ab d d 0 6 br a a 3 7 ra b ab 8 ac a a 5 9 ca r r 0 10 ad a ra 11 da b b 7 12 aba r br 13 ar a a 6 14 rab 0 15 bra Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 10
  11. Minh họa thuật toán nén dữ liệu Xét một chuỗi ký tự “abracadabarabra” → k w =∅ output c word a a 0 a b b 0 1 b r r 1 2 c a a 4 3 d c c 0 4 r a a 2 5 ab d d 0 6 br a a 3 7 ra b ab 8 ac a a 5 9 ca r r 0 10 ad a ra 11 da b b 7 12 aba r br 13 ar a a 6 14 rab 0 15 bra Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 10
  12. Minh họa thuật toán nén dữ liệu Xét một chuỗi ký tự “abracadabarabra” → 0 k w =∅ output c word a a 0 a b b 0 1 b r r 1 2 c a a 4 3 d c c 0 4 r a a 2 5 ab d d 0 6 br a a 3 7 ra b ab 8 ac a a 5 9 ca r r 0 10 ad a ra 11 da b b 7 12 aba r br 13 ar a a 6 14 rab 0 15 bra Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 10
  13. Minh họa thuật toán nén dữ liệu Xét một chuỗi ký tự “abracadabarabra” → 0 1 k w =∅ output c word a a 0 a b b 0 1 b r r 1 2 c a a 4 3 d c c 0 4 r a a 2 5 ab d d 0 6 br a a 3 7 ra b ab 8 ac a a 5 9 ca r r 0 10 ad a ra 11 da b b 7 12 aba r br 13 ar a a 6 14 rab 0 15 bra Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 10
  14. Minh họa thuật toán nén dữ liệu Xét một chuỗi ký tự “abracadabarabra” → 0 1 4 k w =∅ output c word a a 0 a b b 0 1 b r r 1 2 c a a 4 3 d c c 0 4 r a a 2 5 ab d d 0 6 br a a 3 7 ra b ab 8 ac a a 5 9 ca r r 0 10 ad a ra 11 da b b 7 12 aba r br 13 ar a a 6 14 rab 0 15 bra Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 10
  15. Minh họa thuật toán nén dữ liệu Xét một chuỗi ký tự “abracadabarabra” → 0 1 4 0 k w =∅ output c word a a 0 a b b 0 1 b r r 1 2 c a a 4 3 d c c 0 4 r a a 2 5 ab d d 0 6 br a a 3 7 ra b ab 8 ac a a 5 9 ca r r 0 10 ad a ra 11 da b b 7 12 aba r br 13 ar a a 6 14 rab 0 15 bra Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 10
  16. Minh họa thuật toán nén dữ liệu Xét một chuỗi ký tự “abracadabarabra” → 0 1 4 0 2 k w =∅ output c word a a 0 a b b 0 1 b r r 1 2 c a a 4 3 d c c 0 4 r a a 2 5 ab d d 0 6 br a a 3 7 ra b ab 8 ac a a 5 9 ca r r 0 10 ad a ra 11 da b b 7 12 aba r br 13 ar a a 6 14 rab 0 15 bra Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 10
  17. Minh họa thuật toán nén dữ liệu Xét một chuỗi ký tự “abracadabarabra” → 0 1 4 0 2 0 k w =∅ output c word a a 0 a b b 0 1 b r r 1 2 c a a 4 3 d c c 0 4 r a a 2 5 ab d d 0 6 br a a 3 7 ra b ab 8 ac a a 5 9 ca r r 0 10 ad a ra 11 da b b 7 12 aba r br 13 ar a a 6 14 rab 0 15 bra Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 10
  18. Minh họa thuật toán nén dữ liệu Xét một chuỗi ký tự “abracadabarabra” → 0 1 4 0 2 0 3 k w =∅ output c word a a 0 a b b 0 1 b r r 1 2 c a a 4 3 d c c 0 4 r a a 2 5 ab d d 0 6 br a a 3 7 ra b ab 8 ac a a 5 9 ca r r 0 10 ad a ra 11 da b b 7 12 aba r br 13 ar a a 6 14 rab 0 15 bra Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 10
  19. Minh họa thuật toán nén dữ liệu Xét một chuỗi ký tự “abracadabarabra” → 0 1 4 0 2 0 3 k w =∅ output c word a a 0 a b b 0 1 b r r 1 2 c a a 4 3 d c c 0 4 r a a 2 5 ab d d 0 6 br a a 3 7 ra b ab 8 ac a a 5 9 ca r r 0 10 ad a ra 11 da b b 7 12 aba r br 13 ar a a 6 14 rab 0 15 bra Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 10
  20. Minh họa thuật toán nén dữ liệu Xét một chuỗi ký tự “abracadabarabra” → 0 1 4 0 2 0 3 5 k w =∅ output c word a a 0 a b b 0 1 b r r 1 2 c a a 4 3 d c c 0 4 r a a 2 5 ab d d 0 6 br a a 3 7 ra b ab 8 ac a a 5 9 ca r r 0 10 ad a ra 11 da b b 7 12 aba r br 13 ar a a 6 14 rab 0 15 bra Spring 2017 CuuDuongThanCong.com Data structure & Algorithm https://fb.com/tailieudientucntt 10
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2