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 5 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

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

Nội dung

Một số tính chất của cây HuffmanĐịnh lý 1 ◮ Cây Huffman là cây nhị phân đầy đủ ◮ Các nút có tần suất cao nằm gần gốc ◮ Các nút có tần suất thấp nằm xa gốc ◮ Tổng số nút của cây là 2n − 1

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.)

N: kích thước dữ liệu trước khi nén

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)

Đườ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

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

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

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

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

◮ ?

◮ ?

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: 26/12/2021, 17:20

HÌNH ẢNH LIÊN QUAN

Hình 1: Cây từ điển LZW - 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
Hình 1 Cây từ điển LZW (Trang 27)
Bảng 1: Bảng Morse - 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ảng 1 Bảng Morse (Trang 39)
Bảng thông kê số lần xuất hiện - 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ảng th ông kê số lần xuất hiện (Trang 40)
Hình 2: Cây Huffman - 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
Hình 2 Cây Huffman (Trang 42)
Hình 3: Cây Huffman - 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
Hình 3 Cây Huffman (Trang 45)
Hình 4: Khởi tạo cây Huffman - 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
Hình 4 Khởi tạo cây Huffman (Trang 47)
Hình 5: Thêm nút ED cho cây Huffman - 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
Hình 5 Thêm nút ED cho cây Huffman (Trang 48)
Hình 6: Thêm nút CED cho cây Huffman - 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
Hình 6 Thêm nút CED cho cây Huffman (Trang 49)
Hình 7: Thêm nút BA cho cây Huffman - 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
Hình 7 Thêm nút BA cho cây Huffman (Trang 50)
Hình 8: Thêm nút CEDBA cho cây Huffman - 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
Hình 8 Thêm nút CEDBA cho cây Huffman (Trang 51)
Hình 9: Cây Adaptive Huffman, mỗi nút gồm hai phần: phần thứ nhất chứa ký tự đối với nút lá, phần thứ hai chứa trọng số - 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
Hình 9 Cây Adaptive Huffman, mỗi nút gồm hai phần: phần thứ nhất chứa ký tự đối với nút lá, phần thứ hai chứa trọng số (Trang 57)
Hình 11: Mã hóa ký tự đã có trong cây: mã của b là 01, mã của c là 1 - 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
Hình 11 Mã hóa ký tự đã có trong cây: mã của b là 01, mã của c là 1 (Trang 61)
Hình 12: Mã hóa ký tự chưa có trong cây: mã của d là : 0001100100 - 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
Hình 12 Mã hóa ký tự chưa có trong cây: mã của d là : 0001100100 (Trang 62)
Hình 14: Cập nhật cây sau khi thêm a - 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
Hình 14 Cập nhật cây sau khi thêm a (Trang 65)

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