SlideShare a Scribd company logo
1 of 9
Download to read offline
Data Compression
Gi i thi u
Giải thuật nén RLE
Giải thuật nén Huffman

Winter 2006

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

29

Giải thuật nén Huffman
Gi i thi u
Huffman tĩnh (Static Huffman)
Huffman đ ng (Adaptive Huffman)

Winter 2006

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

30

15
Giải thuật nén Huffman – Giới thiệu
Hình thành
V nđ :
M t gi i thu t nén b o toàn thông tin;
Không ph thu c vào tính ch t c a d li u;
ng d ng r ng rãi trên b t kỳ d li u nào, v i hi u su t t t

Tư tư ng chính:
Phương pháp cũ: dùng 1 dãy c đ nh (8 bits) đ bi u di n 1 ký t
Huffman:
S d ng vài bits đ bi u di n 1 ký t (g i là “mã bit” – bits code)
Đ dài “mã bit” cho các ký t không gi ng nhau:
Ký t xu t hi n nhi u l n
bi u di n b ng mã ng n;
Ký t xu t hi n ít
bi u di n b ng mã dài
Mã hóa b ng mã có đ dài thay đ i (Variable Length Encoding)

David Huffman – 1952: tìm ra phương pháp xác đ nh mã t i ưu
trên d li u tĩnh
Winter 2006

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

31

Giải thuật nén Huffman – Giới thiệu (tt)
Gi s có d li u như sau:
f = “ADDAABBCCBAAABBCCCBBBCDAADDEEAA”

Bi u di n bình thư ng (8 bits/ký t ):
Sizeof(f) = 10*8 + 8*8 + 6*8 + 5*8 + 2*8
= 248 bits
Ký t

S

l n xu t hi n
trong file f

A
B

8

C

6

D

5

E
Winter 2006

10

2

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

32

16
Giải thuật nén Huffman – Giới thiệu (tt)
Bi u di n b ng mã có đ dài thay đ i (theo
b ng):
Sizeof(f) = 10*2 + 8*2 + 6*2 + 5*3 + 2*3
= 69 bits
Ký t
A

Mã
11

B
C
D
E
Winter 2006

10
00
011
010

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

33

Static Huffman
Thu t toán nén
T o cây Huffman
Phát sinh b ng mã bit
Lưu tr thông tin dùng đ gi i nén
Thu t toán gi i nén

Winter 2006

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

34

17
Static Huffman (tt)
Thu t toán nén:
[b1] Duy t file
lo i ký t

L p b ng th ng kê s l n xu t hi n c a m i

[b2] Phát sinh cây Huffman d a vào b ng th ng kê
[b3] T cây Huffman
[b4] Duy t file

phát sinh b ng mã bit cho các ký t

Thay th các ký t b ng mã bit tương ng

[b5] Lưu l i thông tin c a cây Huffman dùng đ gi i nén

Winter 2006

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

35

Static Huffman (tt)
[b1]
f = “ADDAABBCCBAAABBCCCBBBCDAADDEEAA”

Ký
t

S

l n xu t
hi n

A

8

C

6

D

5

E

[b2]

10

B

2
Ký
t

Mã bit

A

11

B

10

C

00

D

011

E

010

[b3]

[b4]

fnén = 11011011111110100000101111111010000000
1010100001111110110110100101111
Winter 2006

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

36

18
Static Huffman (tt)
T o cây Huffman:
Mô t cây Huffman: mã Huffman đư c bi u di n b ng
1 cây nh phân
M i nút lá ch a 1 ký t
Nút cha s ch a các ký t
c a nh ng nút con
M i nút đư c gán m t tr ng
s :
Nút lá có tr ng s b ng s
l n xu t hi n c a ký t
trong file
Nút cha có tr ng s b ng
t ng tr ng s c a các nút
con

Winter 2006

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

37

Static Huffman (tt)
T o cây Huffman: (tt)
Tính ch t cây Huffman:
Nhánh trái tương ng v i mã hoá bit ‘0’; nhánh ph i tương
ng v i mã hoá bit ‘1’
Các nút có t n s th p n m xa g c
mã bit dài
Các nút có t n s cao n m g n g c
mã bit ng n
S nút c a cây: (2n-1)

Winter 2006

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

38

19
Static Huffman (tt)
// C u trúc d li u lưu tr
#define MAX_NODES 511

cây Huffman
// 2*256 - 1

typedef struct {
char
c;
long
nFreq;
int
nLeft;
int
nRight;
} HUFFNode;

ký t
tr ng s
cây con trái
cây con ph i

//
//
//
//

HUFFNode HuffTree[MAX_NODES];
Winter 2006

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

39

Static Huffman (tt)
T o cây Huffman: (tt)
Thu t toán phát sinh cây:
[b1] Ch n trong b ng th ng kê 2 ph n t x,y có tr ng s th p
t o thành nút cha z:
z.c = min(x.c + y.c);
z.nFreq = x.nFreq + y.nFreq;
z.nLeft = x (*)
z.nRight = y (*)
[b2] Lo i b nút x và y kh i b ng;
[b3] Thêm nút z vào b ng;
[b4] L p l i bư c [b1] - [b3] cho đ n khi ch còn l i 1 nút duy
nh t trong b ng

nh t

(*) Qui ư c:
- nút có tr ng s nh n m bên nhánh trái; nút có tr ng s l n n m bên nhánh ph i;
- n u tr ng s b ng nhau, nút có ký t nh n m bên nhánh trái; nút có ký t l n n m
bên nhánh ph i
- n u có các node có tr ng s b ng nhau
ưu tiên x lý các node có ký t ASCII
nh trư c

Winter 2006

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

40

20
Static Huffman (tt)
Ký
t

SLXH
10

Ký
t

SLXH

A
B

8

A

10

C

6

B

8

D

5

ED

7

E

2

C

6

Ký
t

SLXH

CED

13

Ký
t

SLXH

BA

18

A

10

13

B

8

CED

Minh h a quá trình t o cây
Winter 2006

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

41

Static Huffman (tt)

Cây Huffman sau khi t o
Winter 2006

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

42

21
Static Huffman (tt)
Phát sinh mã bit cho các ký t :
Mã c a m i ký t đư c t o b ng cách duy t t nút g c đ n nút
lá ch a ký t đó;
Khi duy t sang trái, t o ra 1 bit 0;
Khi duy t sang ph i, t o ra 1 bit 1;

Ký
t
A

11

B

10

C

00

D

011

E
Winter 2006

Mã

010

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

43

Static Huffman (tt)
Lưu tr thông tin dùng đ gi i nén:
P.Pháp 1: lưu b ng mã bit

P.Pháp 2: lưu s l n xu t hi n

Ký
t

Ký
t

A

11

A

10

B

10

B

8

C

00

C

6

D

011

D

5

E

Winter 2006

Mã

010

E

2

S

l n xu t
hi n

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

44

22
Static Huffman (tt)
Thu t toán gi i nén:
[b1] Xây d ng l i cây Huffman (t thông tin đư c lưu)
[b2] Kh i t o nút hi n hành pCurr = pRoot
[b3] Đ c 1 bit b t file nén fn
[b4] N u (b==0) thì pCurr = pCurr.nLeft
ngư c l i pCurr = pCurr.nRight
[b5] N u pCurr là nút lá thì:
- Xu t ký t t i pCurr ra file
- Quay l i bư c [b2]
ngư c l i
- Quay l i bư c [b3]
[b6] Thu t toán s d ng khi h t file fn
Winter 2006

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

45

Static Huffman (tt)

Cây Huffman và qui trình gi i nén cho chu i đư c mã hoá “1000110”

Winter 2006

Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM

46

23

More Related Content

Similar to Thuat nen huffman_3272

Hệ điều hành (chương 3)
Hệ điều hành (chương 3)Hệ điều hành (chương 3)
Hệ điều hành (chương 3)
realpotter
 
Chuong10
Chuong10Chuong10
Chuong10
na
 
Nmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co SoNmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co So
Cuong
 
Microprocessor final ver1_part2
Microprocessor final ver1_part2Microprocessor final ver1_part2
Microprocessor final ver1_part2
Mit Rin
 
Lớp 10: Bai2 thong tinvadulieu1
Lớp 10: Bai2 thong tinvadulieu1Lớp 10: Bai2 thong tinvadulieu1
Lớp 10: Bai2 thong tinvadulieu1
Heo_Con049
 

Similar to Thuat nen huffman_3272 (20)

Hệ điều hành (chương 3)
Hệ điều hành (chương 3)Hệ điều hành (chương 3)
Hệ điều hành (chương 3)
 
slide 8051
slide 8051 slide 8051
slide 8051
 
Bai 2-t tva-dl-k10
Bai 2-t tva-dl-k10Bai 2-t tva-dl-k10
Bai 2-t tva-dl-k10
 
Phan1 chuong1
Phan1 chuong1Phan1 chuong1
Phan1 chuong1
 
TIN HOC 10 BAI 2 THONG TIN VA DU LIEU
TIN HOC 10 BAI 2 THONG TIN VA DU LIEUTIN HOC 10 BAI 2 THONG TIN VA DU LIEU
TIN HOC 10 BAI 2 THONG TIN VA DU LIEU
 
Bai 2 thong tin va du lieu
Bai 2 thong tin va du lieuBai 2 thong tin va du lieu
Bai 2 thong tin va du lieu
 
Tim hieu thanh ghi in asm
Tim hieu thanh ghi in asmTim hieu thanh ghi in asm
Tim hieu thanh ghi in asm
 
Chuong10
Chuong10Chuong10
Chuong10
 
Nmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co SoNmlt C03 Cac Kieu Du Lieu Co So
Nmlt C03 Cac Kieu Du Lieu Co So
 
Đề tài giáo trình: Lập trình hệ thống và điều khiển thiết bị từ xa
Đề tài giáo trình: Lập trình hệ thống và điều khiển thiết bị từ xaĐề tài giáo trình: Lập trình hệ thống và điều khiển thiết bị từ xa
Đề tài giáo trình: Lập trình hệ thống và điều khiển thiết bị từ xa
 
Tin 10 - Bài 2: Thông tin và dữ liệu
Tin 10 - Bài 2: Thông tin và dữ liệuTin 10 - Bài 2: Thông tin và dữ liệu
Tin 10 - Bài 2: Thông tin và dữ liệu
 
Tnkts p2
Tnkts p2Tnkts p2
Tnkts p2
 
Tnkts de1
Tnkts de1Tnkts de1
Tnkts de1
 
Bai2_TIN10
Bai2_TIN10Bai2_TIN10
Bai2_TIN10
 
Bao cao full
Bao cao fullBao cao full
Bao cao full
 
1616 bai tap_vxl
1616 bai tap_vxl1616 bai tap_vxl
1616 bai tap_vxl
 
1616 bai tap_vxl
1616 bai tap_vxl1616 bai tap_vxl
1616 bai tap_vxl
 
Baitap vxl
Baitap vxlBaitap vxl
Baitap vxl
 
Microprocessor final ver1_part2
Microprocessor final ver1_part2Microprocessor final ver1_part2
Microprocessor final ver1_part2
 
Lớp 10: Bai2 thong tinvadulieu1
Lớp 10: Bai2 thong tinvadulieu1Lớp 10: Bai2 thong tinvadulieu1
Lớp 10: Bai2 thong tinvadulieu1
 

Recently uploaded

xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdfxemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
Xem Số Mệnh
 
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
ltbdieu
 
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoiC6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
dnghia2002
 
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptxBài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
DungxPeach
 
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdfSLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
hoangtuansinh1
 
bài tập lớn môn kiến trúc máy tính và hệ điều hành
bài tập lớn môn kiến trúc máy tính và hệ điều hànhbài tập lớn môn kiến trúc máy tính và hệ điều hành
bài tập lớn môn kiến trúc máy tính và hệ điều hành
dangdinhkien2k4
 

Recently uploaded (20)

TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
 
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdfxemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Giáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình PhươngGiáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình Phương
 
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hộiTrắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
 
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
 
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoiC6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptxBài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
 
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdfSLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
 
Access: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.pptAccess: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.ppt
 
Kiến thức cơ bản về tư duy số - VTC Net Viet
Kiến thức cơ bản về tư duy số - VTC Net VietKiến thức cơ bản về tư duy số - VTC Net Viet
Kiến thức cơ bản về tư duy số - VTC Net Viet
 
bài tập lớn môn kiến trúc máy tính và hệ điều hành
bài tập lớn môn kiến trúc máy tính và hệ điều hànhbài tập lớn môn kiến trúc máy tính và hệ điều hành
bài tập lớn môn kiến trúc máy tính và hệ điều hành
 
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdfxemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
 
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
 
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdfxemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
 
Đề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
Đề thi tin học HK2 lớp 3 Chân Trời Sáng TạoĐề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
Đề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
 
Bài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiệnBài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiện
 

Thuat nen huffman_3272

  • 1. Data Compression Gi i thi u Giải thuật nén RLE Giải thuật nén Huffman Winter 2006 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 29 Giải thuật nén Huffman Gi i thi u Huffman tĩnh (Static Huffman) Huffman đ ng (Adaptive Huffman) Winter 2006 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 30 15
  • 2. Giải thuật nén Huffman – Giới thiệu Hình thành V nđ : M t gi i thu t nén b o toàn thông tin; Không ph thu c vào tính ch t c a d li u; ng d ng r ng rãi trên b t kỳ d li u nào, v i hi u su t t t Tư tư ng chính: Phương pháp cũ: dùng 1 dãy c đ nh (8 bits) đ bi u di n 1 ký t Huffman: S d ng vài bits đ bi u di n 1 ký t (g i là “mã bit” – bits code) Đ dài “mã bit” cho các ký t không gi ng nhau: Ký t xu t hi n nhi u l n bi u di n b ng mã ng n; Ký t xu t hi n ít bi u di n b ng mã dài Mã hóa b ng mã có đ dài thay đ i (Variable Length Encoding) David Huffman – 1952: tìm ra phương pháp xác đ nh mã t i ưu trên d li u tĩnh Winter 2006 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 31 Giải thuật nén Huffman – Giới thiệu (tt) Gi s có d li u như sau: f = “ADDAABBCCBAAABBCCCBBBCDAADDEEAA” Bi u di n bình thư ng (8 bits/ký t ): Sizeof(f) = 10*8 + 8*8 + 6*8 + 5*8 + 2*8 = 248 bits Ký t S l n xu t hi n trong file f A B 8 C 6 D 5 E Winter 2006 10 2 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 32 16
  • 3. Giải thuật nén Huffman – Giới thiệu (tt) Bi u di n b ng mã có đ dài thay đ i (theo b ng): Sizeof(f) = 10*2 + 8*2 + 6*2 + 5*3 + 2*3 = 69 bits Ký t A Mã 11 B C D E Winter 2006 10 00 011 010 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 33 Static Huffman Thu t toán nén T o cây Huffman Phát sinh b ng mã bit Lưu tr thông tin dùng đ gi i nén Thu t toán gi i nén Winter 2006 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 34 17
  • 4. Static Huffman (tt) Thu t toán nén: [b1] Duy t file lo i ký t L p b ng th ng kê s l n xu t hi n c a m i [b2] Phát sinh cây Huffman d a vào b ng th ng kê [b3] T cây Huffman [b4] Duy t file phát sinh b ng mã bit cho các ký t Thay th các ký t b ng mã bit tương ng [b5] Lưu l i thông tin c a cây Huffman dùng đ gi i nén Winter 2006 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 35 Static Huffman (tt) [b1] f = “ADDAABBCCBAAABBCCCBBBCDAADDEEAA” Ký t S l n xu t hi n A 8 C 6 D 5 E [b2] 10 B 2 Ký t Mã bit A 11 B 10 C 00 D 011 E 010 [b3] [b4] fnén = 11011011111110100000101111111010000000 1010100001111110110110100101111 Winter 2006 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 36 18
  • 5. Static Huffman (tt) T o cây Huffman: Mô t cây Huffman: mã Huffman đư c bi u di n b ng 1 cây nh phân M i nút lá ch a 1 ký t Nút cha s ch a các ký t c a nh ng nút con M i nút đư c gán m t tr ng s : Nút lá có tr ng s b ng s l n xu t hi n c a ký t trong file Nút cha có tr ng s b ng t ng tr ng s c a các nút con Winter 2006 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 37 Static Huffman (tt) T o cây Huffman: (tt) Tính ch t cây Huffman: Nhánh trái tương ng v i mã hoá bit ‘0’; nhánh ph i tương ng v i mã hoá bit ‘1’ Các nút có t n s th p n m xa g c mã bit dài Các nút có t n s cao n m g n g c mã bit ng n S nút c a cây: (2n-1) Winter 2006 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 38 19
  • 6. Static Huffman (tt) // C u trúc d li u lưu tr #define MAX_NODES 511 cây Huffman // 2*256 - 1 typedef struct { char c; long nFreq; int nLeft; int nRight; } HUFFNode; ký t tr ng s cây con trái cây con ph i // // // // HUFFNode HuffTree[MAX_NODES]; Winter 2006 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 39 Static Huffman (tt) T o cây Huffman: (tt) Thu t toán phát sinh cây: [b1] Ch n trong b ng th ng kê 2 ph n t x,y có tr ng s th p t o thành nút cha z: z.c = min(x.c + y.c); z.nFreq = x.nFreq + y.nFreq; z.nLeft = x (*) z.nRight = y (*) [b2] Lo i b nút x và y kh i b ng; [b3] Thêm nút z vào b ng; [b4] L p l i bư c [b1] - [b3] cho đ n khi ch còn l i 1 nút duy nh t trong b ng nh t (*) Qui ư c: - nút có tr ng s nh n m bên nhánh trái; nút có tr ng s l n n m bên nhánh ph i; - n u tr ng s b ng nhau, nút có ký t nh n m bên nhánh trái; nút có ký t l n n m bên nhánh ph i - n u có các node có tr ng s b ng nhau ưu tiên x lý các node có ký t ASCII nh trư c Winter 2006 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 40 20
  • 7. Static Huffman (tt) Ký t SLXH 10 Ký t SLXH A B 8 A 10 C 6 B 8 D 5 ED 7 E 2 C 6 Ký t SLXH CED 13 Ký t SLXH BA 18 A 10 13 B 8 CED Minh h a quá trình t o cây Winter 2006 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 41 Static Huffman (tt) Cây Huffman sau khi t o Winter 2006 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 42 21
  • 8. Static Huffman (tt) Phát sinh mã bit cho các ký t : Mã c a m i ký t đư c t o b ng cách duy t t nút g c đ n nút lá ch a ký t đó; Khi duy t sang trái, t o ra 1 bit 0; Khi duy t sang ph i, t o ra 1 bit 1; Ký t A 11 B 10 C 00 D 011 E Winter 2006 Mã 010 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 43 Static Huffman (tt) Lưu tr thông tin dùng đ gi i nén: P.Pháp 1: lưu b ng mã bit P.Pháp 2: lưu s l n xu t hi n Ký t Ký t A 11 A 10 B 10 B 8 C 00 C 6 D 011 D 5 E Winter 2006 Mã 010 E 2 S l n xu t hi n Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 44 22
  • 9. Static Huffman (tt) Thu t toán gi i nén: [b1] Xây d ng l i cây Huffman (t thông tin đư c lưu) [b2] Kh i t o nút hi n hành pCurr = pRoot [b3] Đ c 1 bit b t file nén fn [b4] N u (b==0) thì pCurr = pCurr.nLeft ngư c l i pCurr = pCurr.nRight [b5] N u pCurr là nút lá thì: - Xu t ký t t i pCurr ra file - Quay l i bư c [b2] ngư c l i - Quay l i bư c [b3] [b6] Thu t toán s d ng khi h t file fn Winter 2006 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 45 Static Huffman (tt) Cây Huffman và qui trình gi i nén cho chu i đư c mã hoá “1000110” Winter 2006 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 46 23