1. Trang chủ
  2. » Công Nghệ Thông Tin

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 106 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 814,89 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.

Trang 1

CÁC THUẬT TOÁN NÉN DỮ LIỆU

Bùi Tiến Lên01/01/2017

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 3

Giới thiệu (cont.)

Có hai dạng thuật nén

Spring 2017 Data structure & Algorithm 3

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 4

Giới thiệu (cont.)

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:

Spring 2017 Data structure & Algorithm 4

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 5

Thuật toán nén RLE

dựa trên sự lặp lại

(run)

I Đường chạy sẽ được nén bằng công thức sau

[số ký tự][ký tự]

Spring 2017 Data structure & Algorithm 5

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 6

Thuật toán nén RLE (cont.)

Trang 7

Đánh giá thuật toán RLE

Spring 2017 Data structure & Algorithm 7

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 8

Thuật toán nén LZW

Giới thiệu

[Lempel, 1978]

từ điển Do đó nó còn được gọi là thuật toán nén từ điển

Spring 2017 Data structure & Algorithm 8

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 9

Thuật toán nén dữ liệu

w ← k

XUẤT mã c ← Code(w)

Spring 2017 Data structure & Algorithm 9

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 10

Minh họa thuật toán nén dữ liệu

Trang 11

Minh họa thuật toán nén dữ liệu

Trang 12

Minh họa thuật toán nén dữ liệu

Trang 13

Minh họa thuật toán nén dữ liệu

Trang 14

Minh họa thuật toán nén dữ liệu

Trang 15

Minh họa thuật toán nén dữ liệu

Trang 16

Minh họa thuật toán nén dữ liệu

Trang 17

Minh họa thuật toán nén dữ liệu

Trang 18

Minh họa thuật toán nén dữ liệu

Trang 19

Minh họa thuật toán nén dữ liệu

Trang 20

Minh họa thuật toán nén dữ liệu

Trang 21

Minh họa thuật toán nén dữ liệu

Trang 22

Minh họa thuật toán nén dữ liệu

Trang 23

Minh họa thuật toán nén dữ liệu

Trang 24

Minh họa thuật toán nén dữ liệu

Trang 25

Minh họa thuật toán nén dữ liệu

Trang 26

Minh họa thuật toán nén dữ liệu

Trang 28

Thuật toán giải nén dữ liệu

Trong thuật toán giải nén không cần phải cung cấp hết toàn bộ từđiển mà có thể sử dụng lại kỹ thuật của thuật toán nén dữ liệu đểxây dựng lại từ điển

Trang 29

Minh họa thuật toán giải nén dữ liệu

Cho chuỗi mã hóa nén dữ liệu “0 1 2 4 3 6” →

Trang 30

Minh họa thuật toán giải nén dữ liệu

Cho chuỗi mã hóa nén dữ liệu “0 1 2 4 3 6” → a

Trang 31

Minh họa thuật toán giải nén dữ liệu

Cho chuỗi mã hóa nén dữ liệu “0 1 2 4 3 6” → ab

Trang 32

Minh họa thuật toán giải nén dữ liệu

Cho chuỗi mã hóa nén dữ liệu “0 1 2 4 3 6” → abab

Trang 33

Minh họa thuật toán giải nén dữ liệu

Cho chuỗi mã hóa nén dữ liệu “0 1 2 4 3 6” → abababa

Trang 34

Minh họa thuật toán giải nén dữ liệu

Cho chuỗi mã hóa nén dữ liệu “0 1 2 4 3 6” → ababababa

Trang 35

Minh họa thuật toán giải nén dữ liệu

Cho chuỗi mã hóa nén dữ liệu “0 1 2 4 3 6” → abababababab

Trang 37

Thuật toán nén Huffman

Ý tưởng

Sử dụng tần suất xuất hiện của dữ liệu để nén dữ liệu Những dữliệu nào có tần suất cao thì dùng ít bits còn những dữ diệu nào cótần suất thấp thì dùng nhiều bits

Spring 2017 Data structure & Algorithm 15

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 38

Các phương pháp mã hóa dữ liệu

Có rất nhiều phương pháp để mã hóa dữ liệu

bits) để mã hóa ký tự: ASCII

mã hóa ký tự: Morse, Huffman

Spring 2017 Data structure & Algorithm 16

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 40

Bảng thông kê số lần xuất hiện

Bảng thông kê số lần xuất hiện của ký tự trong dữ liệu được minhhọa qua ví dụ dưới đây

Trang 41

dữ liệu

số của nút con trái phải

là 1

Spring 2017 Data structure & Algorithm 19

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 42

Minh họa cây Huffman

Trang 43

Một số tính chất của cây Huffman

Định lý 1

I Cây Huffman là cây nhị phân đầy đủ

I Các nút có tần suất cao nằm gần gốc

I Các nút có tần suất thấp nằm xa gốc

I Tổng số nút của cây là 2n − 1 với n là số ký tự

Spring 2017 Data structure & Algorithm 21

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 44

Thuật toán nén Huffman

của mỗi ký tự

tương ứng

Spring 2017 Data structure & Algorithm 22

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 45

Phát sinh bảng mã bit cho cây Huffman

Trang 46

Thuật toán tạo cây Huffman

Từ bảng thông kê tần suất xuất hiện của các ký tự ta khởi tạo cây

T gồm có n nút là các ký tự với các trọng số của chúng

là tổng của x và y và chuỗi của z là tổng của x và y

với x và y là nút con trái và phải

Spring 2017 Data structure & Algorithm 24

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 47

Minh họa thuật toán tạo cây Huffman

Hình 4:Khởi tạo cây Huffman

Spring 2017 Data structure & Algorithm 25

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 48

Minh họa thuật toán tạo cây Huffman (cont.)

Hình 5:Thêm nút ED cho cây Huffman

Spring 2017 Data structure & Algorithm 26

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 49

Minh họa thuật toán tạo cây Huffman (cont.)

Hình 6: Thêm nút CED cho cây Huffman

Spring 2017 Data structure & Algorithm 27

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 50

Minh họa thuật toán tạo cây Huffman (cont.)

CED,13 C,6 ED,7 E,2 D,5

Hình 7:Thêm nút BA cho cây Huffman

Spring 2017 Data structure & Algorithm 28

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 51

Minh họa thuật toán tạo cây Huffman (cont.)

Chuỗi ký tự Tần suất

Loại bỏ BA, CED và thêm

CEDBA vào bảng tần suất

Chuỗi ký tự Tần suất

CEDBA 31

CEDBA,31 CED,13 BA,18

B,8 A,10 C,6 ED,7

Trang 52

Một số điểm hạn chế của thuật toán nén Huffman

Hạn chế

dữ liệu phát sinh theo thời gian thực

Spring 2017 Data structure & Algorithm 30

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 53

Adaptive Huffman

Lịch sử

toán và thuật toán còn có tên “thuật toán FGK”

tối ưu cây Huffman

Spring 2017 Data structure & Algorithm 31

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 54

Adaptive Huffman (cont.)

Ưu điểm

Spring 2017 Data structure & Algorithm 32

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 55

Adaptive Huffman (cont.)

Định nghĩa 3

Cây Adaptive Huffman (Adaptive Huffman Tree) là

xuất hiện của ký tự tính đến thời điểm đang xét

các nút con của nó

Transmitted Symbol) luôn có trọng số bằng 0 (tương ứng với

các ký tự chưa xuất hiện trên cây đến thời điểm đang xét)

Spring 2017 Data structure & Algorithm 33

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 56

Adaptive Huffman (cont.)

Spring 2017 Data structure & Algorithm 34

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 57

Adaptive Huffman (cont.)

Trang 58

Thuật toán nén

Spring 2017 Data structure & Algorithm 36

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 59

Thuật toán nén (cont.)

Bước 1: Khởi tạo cây Adaptive Huffman

NYT 0

Hình 10:Cây Adaptive Huffman khởi tạo

Spring 2017 Data structure & Algorithm 37

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 60

Thuật toán nén (cont.)

Bước 2.2: Mã hóa ký tự c Kiểm tra ký tự c có trong cây

Adaptive Huffman hay chưa?

thông thường)

NYT + mã ASCII 8 bit của ký tự c” (?)

Spring 2017 Data structure & Algorithm 38

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 61

Thuật toán nén (cont.)

14

4

c 10

Hình 11: Mã hóa ký tự đã có trong cây: mã của b là 01, mã của c là 1

Spring 2017 Data structure & Algorithm 39

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 62

Thuật toán nén (cont.)

14

4

c 10

Hình 12:Mã hóa ký tự chưa có trong cây: mã của d là : 0001100100

Spring 2017 Data structure & Algorithm 40

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 63

Thuật toán nén (cont.)

Bước 2.3: Cập nhật cây

Lặp p 6= NULL

phải và dưới → trên) có cùng trọng số (không tính nút cha của p)

Spring 2017 Data structure & Algorithm 41

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 64

Thuật toán nén (cont.)

Cho cây Adaptive ban đầu hãy cập nhật cây với chuỗi ký tự “aad”

NYT 0

Hình 13:Cây Adaptive Huffman khởi đầu

Spring 2017 Data structure & Algorithm 42

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 65

Thuật toán nén (cont.)

Đọc dữ liệu “aad”

1

Hình 14: Cập nhật cây sau khi thêm a

Spring 2017 Data structure & Algorithm 43

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 66

Thuật toán nén (cont.)

Đọc dữ liệu “aad”

2

Hình 15: Cập nhật cây sau khi thêm a

Spring 2017 Data structure & Algorithm 44

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 67

Thuật toán nén (cont.)

Hình 16: Cập nhật cây sau khi thêm d

Spring 2017 Data structure & Algorithm 45

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 68

Minh họa cập nhật trọng số

Cho một cây Adaptive Huffman Và thêm a vào cây

188

Hình 17: Cây Adaptive Huffman

Spring 2017 Data structure & Algorithm 46

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 69

Minh họa cập nhật trọng số (cont.)

188

Hình 18: Tìm nút xa nhất có trọng số bằng với a và chuẩn bị hoán đổi

Spring 2017 Data structure & Algorithm 47

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 70

Minh họa cập nhật trọng số (cont.)

188

Trang 71

Minh họa cập nhật trọng số (cont.)

188

Hình 20:Cập nhật trọng số và di chuyển lên nút cha

Spring 2017 Data structure & Algorithm 49

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 72

Minh họa cập nhật trọng số (cont.)

188

Hình 21:Cập nhật trọng số và di chuyển lên nút cha

Spring 2017 Data structure & Algorithm 50

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 73

Minh họa cập nhật trọng số (cont.)

198

Trang 74

Thuật toán giải nén

Spring 2017 Data structure & Algorithm 52

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 75

Đánh giá cây Huffman và Adaptive Huffman

Đánh giá thuật toán cây Huffman và Adaptive Huffman

I ?

I ?

Spring 2017 Data structure & Algorithm 53

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Trang 76

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.

Spring 2017 Data structure & Algorithm 54

CuuDuongThanCong.com https://fb.com/tailieudientucntt

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

🧩 Sản phẩm bạn có thể quan tâm