You are on page 1of 9

Data Compression

Gi i thi u Gii thut nn RLE Gii thut nn Huffman

Winter 2006

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

29

Gii thut nn Huffman


Gi i thi u Huffman tnh (Static Huffman) Huffman ng (Adaptive Huffman)

Winter 2006

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

30

15

Gii thut nn Huffman Gii thiu


Hnh thnh
V n :
M t gi i thu t nn b o ton thng tin; Khng ph thu c vo tnh ch t c a d li u; ng d ng r ng ri trn b t k d li u no, v i hi u su t t t

T t ng chnh:
Phng php c: dng 1 dy c nh (8 bits) bi u di n 1 k t Huffman:
S d ng vi bits bi u di n 1 k t (g i l m bit bits code) di m bit cho cc k t khng 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 di M ha b ng m c di thay i (Variable Length Encoding)

David Huffman 1952: tm ra phng php xc nh m t i u trn d li u tnh


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

Gii thut nn Huffman Gii thiu (tt)


Gi s c d li u nh sau:
f = ADDAABBCCBAAABBCCCBBBCDAADDEEAA

Bi u di n bnh th ng (8 bits/k t ):
Sizeof(f) = 10*8 + 8*8 + 6*8 + 5*8 + 2*8 = 248 bits
K t A B C D E
Winter 2006

l n xu t hi n trong file f 10 8 6 5 2
32

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

16

Gii thut nn Huffman Gii thiu (tt)


Bi u di n b ng m c di thay i (theo b ng):
Sizeof(f) = 10*2 + 8*2 + 6*2 + 5*3 + 2*3 = 69 bits K t A B C D E
Winter 2006

M 11 10 00 011 010
33

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

Static Huffman
Thu t ton nn T o cy Huffman Pht sinh b ng m bit Lu tr thng tin dng gi i nn Thu t ton gi i nn

Winter 2006

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

34

17

Static Huffman (tt)


Thu t ton nn:
[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] Pht sinh cy Huffman d a vo b ng th ng k [b3] T cy Huffman [b4] Duy t file pht sinh b ng m bit cho cc k t Thay th cc k t b ng m bit tng ng

[b5] Lu l i thng tin c a cy Huffman dng gi i nn

Winter 2006

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

35

Static Huffman (tt)


[b1] f = ADDAABBCCBAAABBCCCBBBCDAADDEEAA K t A B [b2] C D E K t [b3] A B [b4] C D E fnn = 11011011111110100000101111111010000000 1010100001111110110110100101111
Winter 2006 Data Structure & Algorithm - Data Compression - Nguyen Tri Tuan, DH.KHTN Tp.HCM 36

l n xu t hi n 10 8 6 5 2 M bit 11 10 00 011 010

18

Static Huffman (tt)


T o cy Huffman:
M t cy Huffman: m Huffman c bi u di n b ng 1 cy nh phn
M i nt l ch a 1 k t Nt cha s ch a cc k t c a nh ng nt con
M i nt c gn m t tr ng s : Nt l c tr ng s b ng s l n xu t hi n c a k t trong file Nt cha c tr ng s b ng t ng tr ng s c a cc nt con

Winter 2006

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

37

Static Huffman (tt)


T o cy Huffman: (tt)
Tnh ch t cy Huffman:
Nhnh tri tng ng v i m ho bit 0; nhnh ph i tng ng v i m ho bit 1 Cc nt c t n s th p n m xa g c m bit di Cc nt c t n s cao n m g n g c m bit ng n S nt c a cy: (2n-1)

Winter 2006

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

38

19

Static Huffman (tt)


// C u trc d li u lu tr #define MAX_NODES 511 typedef struct { char c; long nFreq; int nLeft; int nRight; } HUFFNode; cy Huffman // 2*256 - 1

// // // //

k t tr ng s cy con tri cy 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 cy Huffman: (tt)
Thu t ton pht sinh cy:
[b1] Ch n trong b ng th ng k 2 ph n t x,y c tr ng s th p t o thnh nt 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 nt x v y kh i b ng; [b3] Thm nt z vo b ng; [b4] L p l i b c [b1] - [b3] cho n khi ch cn l i 1 nt duy nh t trong b ng nh t

(*) Qui c: - nt c tr ng s nh n m bn nhnh tri; nt c tr ng s l n n m bn nhnh ph i; - n u tr ng s b ng nhau, nt c k t nh n m bn nhnh tri; nt c k t l n n m bn nhnh ph i - n u c cc node c tr ng s b ng nhau u tin x l cc 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 A B C D E SLXH 10 8 6 5 2 K t A B ED C SLXH 10 8 7 6

K t BA CED

SLXH 18 13
Minh h a qu trnh t o cy

K t CED A B

SLXH 13 10 8

Winter 2006

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

41

Static Huffman (tt)

Cy Huffman sau khi t o


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

21

Static Huffman (tt)


Pht sinh m bit cho cc k t :
M c a m i k t c t o b ng cch duy t t nt g c n nt l ch a k t ; Khi duy t sang tri, t o ra 1 bit 0; Khi duy t sang ph i, t o ra 1 bit 1;

K t A B C D E
Winter 2006

M 11 10 00 011 010
43

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

Static Huffman (tt)


Lu tr thng tin dng gi i nn:
P.Php 1: lu b ng m bit
K t A B C D E M 11 10 00 011 010

P.Php 2: lu s l n xu t hi n
K t A B C D E S l n xu t hi n 10 8 6 5 2

Winter 2006

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

44

22

Static Huffman (tt)


Thu t ton gi i nn: [b1] Xy d ng l i cy Huffman (t thng tin c lu) [b2] Kh i t o nt hi n hnh pCurr = pRoot [b3] c 1 bit b t file nn fn [b4] N u (b==0) th pCurr = pCurr.nLeft ng c l i pCurr = pCurr.nRight [b5] N u pCurr l nt 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 ton 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)

Cy Huffman v qui trnh gi i nn cho chu i c m ho 1000110

Winter 2006

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

46

23

You might also like