You are on page 1of 42

Bi 8: Hng u tin

Ging vin: Hong Th ip


Khoa Cng ngh Thng tin H Cng Ngh

Ni dung
KDLTT hng u tin
Cc phng php ci t
ng dng: xy dng m Huffman

INT2203

KDLTT hng u tin


(priority queue)
L tp hp trong mi phn
t l mt cp (gi tr u tin,
i tng)

removeMin() loi b v tr v
i tng c gi tr u tin
nh nht. Thc hin c nu
hng khng rng.
findMinKey() tm gi tr u tin
nh nht .Thc hin c nu
hng khng rng
size()
isEmpty()

ta c th so snh c cc
gi tr u tin

Cc php ton
insert(k, o) xen vo hng u
tin i tng o c gi tr u
tin k.
findMin() tm i tng c gi
tr u tin nh nht .Thc hin
c nu hng khng rng

ng dng

INT2203

Qun l bng thng


S dng trong thit k cc
thut ton (Huffman)

Minh ha
Php ton

Output

Hng u tin

insert(5,A)

{(5,A)}

insert(9,C)

{(5,A), (9,C)}

insert(3,B)

{(3,B), (5,A), (9,C)}

insert(7,D)

{(3,B), (5,A), (7,D), (9,C)}

findMin()

{(3,B), (5,A), (7,D), (9,C)}

findMinKey()

{(3,B), (5,A), (7,D), (9,C)}

removeMin()

{(5,A), (7,D), (9,C)}

size()

{(5,A), (7,D), (9,C)}

findMin ()

{(5,A), (7,D), (9,C)}

removeMin()

{(7,D), (9,C)}

removeMin()

{(9,C)}

removeMin()

{}

removeMin()

error

{}

isEmpty()

true

{}
INT2203

Ni dung
KDLTT hng u tin
Cc phng php ci t
ng dng: xy dng m Huffman

INT2203

Cc phng php ci t
findMin

insert

removeMin

Mng c sp

Mng khng sp

DSLK c sp

DSLK khng sp

Cy TKNP

Cy th t b phn
(heap)

INT2203

Ci t hng u tin bi
danh sch
Danh sch
c sp

Danh sch
khng sp

V d

Minh ha mng

Q = {(3,B), (5,A), (7,D), (9,C)}

9,C 7,D 5,A 3,B

findMin()

9,C 7,D 5,A 3,B

insert(8, E)

9,C 8,E 7,D 5,A 3,B

removeMin()

9,C 8,E 7,D 5,A

Q = {(7,D), (3,B), (9,C), (5,A)}

7,D 3,B 9,C 5,A

findMin()

7,D 3,B 9,C 5,A

insert(8, E)

7,D 3,B 9,C 5,A 8,E

removeMin()

7,D 9,C 5,A 8,E

INT2203

Ci t hng u tin bi
cy tm kim nh phn
1. hng u tin

7,D

3,B

2. findMin()

7,D

9,C
3,B

2,F

5,A

9,C

8,E
2,F

5,A

8,E

7,D

3. insert(4,G)

4. removeMin()

3,B

7,D

9,C
3,B

2,F

5,A

9,C

8,E
2,F

5,A

4,G
4,G
INT2203

8,E

Cy th t b phn (heap)
Cy nh phn hon ton

c tt c cc mc ca cy u
khng thiu nh no, tr mc
thp nht c lp y k t
bn tri

1 5
3

2
4

Min heap l mt cy nh phn


hon ton vi tnh cht
kha ca mt nh bt k nh
hn hoc bng kha ca cc
nh con ca n

Max heap
Ci t heap
c th dng cu trc lin kt
(con tr)
c th dng mng

cao ca heap l log(n)

INT2203

Ci t hng u tin bi heap


0 2,F
1 5,A
3 9,C

2 3,B
4 7,D

findMin?
insert?
removeMin?

8,E

2,F 5,A 3,B 9,C 7,D 8,E

INT2203

Xen thm vo heap


Php insert ca hng u
tin tng ng vi php
xen thm mt phn t c
kha k vo heap
Thut ton
Tm ti v tr z a phn
t mi vo (l nh cui
mi)
Lu phn t c kha k vo
z
Khi phc tnh cht th t
b phn ca heap

INT2203

2
5
9

z
z

insertion node
2
5
9

6
7

zz

Upheap

Sau khi xen thm mt kha k mi, heap c th mt i tnh cht th t b


phn
Thut ton upheap khi phc li tnh cht ny bng cch o ch k dc
theo ng i t nh mi hng ti gc
Upheap dng li khi k tin ti gc hoc mt nh c kha ca cha k
V heap c cao O(log n), upheap thc hin trong thi gian O(log n)

5
9

1
7

INT2203

2
7

Loi mt phn t khi heap


Php removeMin ca
hng u tin tng ng
vi php loi gc ca
heap
Thut ton

2
5

6
w

Thay th gc bng nh
cui cng w
Gii phng nh w
Khi phc tnh cht th t
b phn ca heap

nh cui
7
5
9

INT2203

Downheap
Sau khi thay th nh gc vi nh cui (c kha k), heap c th mt
i tnh cht th t b phn
Thut ton downheap khi phc li tnh cht ny bng cch o ch
nh c kha k dc theo ng i t gc xung
Upheap dng khi k tin ti mt l hay mt nh c cc kha con k
Do heap c cao O(log n), downheap thc hin trong thi gian
O(log n)
7
5

5
6

INT2203

Cp nht con tr ti nh cui


Dng trong ci t heap bng cu trc lin kt
C th tm ch cho nh s thm vo bng cch i theo hnh trnh
gm O(log n) nh
i ln ti khi gp mt con tri hoc gp gc
Nu gp mt con tri th chuyn sang con phi
i xung ti khi gp mt l

p dng thut ton tng t cho cp nht con tr ti nh cui trong


php loi b mt nh

INT2203

Minh ha ci t hng u tin


comp

last

heap

<
+
>

(4,C)

(5,A)

(6,Z)

(15,K)

(16,X)

(9,F)

(25,J)

(14,E)

(7,Q)

(12,H)

INT2203

(11,S)

(20,B)

(18,W)

insert(2,T)
(4,C)

(6,Z)

(5,A)

(15,K)

(16,X)

(9,F)

(25,J)

(14,E)

(7,Q)

(12,H)

INT2203

(11,S)

(20,B)

(18,W)

insert(2,T)
(4,C)

(6,Z)

(5,A)

(15,K)

(16,X)

(9,F)

(25,J)

(14,E)

(7,Q)

(12,H)

INT2203

(11,S)

(20,B)

(18,W)

(2,T)

insert(2,T)
(4,C)

(6,Z)

(5,A)

(15,K)

(16,X)

(9,F)

(25,J)

(14,E)

(7,Q)

(12,H)

INT2203

(11,S)

o
(2,T) v
(20,B)
(18,W)

(20,B)

(2,T)

insert(2,T)
(4,C)

(5,A)

(6,Z)

(15,K)

(16,X)

(9,F)

(25,J)

(14,E)

(7,Q)

(12,H)

INT2203

(11,S)

o
(2,T) v
(6,Z)

(2,T)

(18,W)

(20,B)

insert(2,T)
o
(2,T) v
(4,C)

(4,C)

(5,A)

(2,T)

(15,K)

(16,X)

(9,F)

(25,J)

(14,E)

(7,Q)

(12,H)

INT2203

(11,S)

(6,Z)

(18,W)

(20,B)

insert(2,T)
Sau thi gian O (log n) th cy li thnh mt heap
(2,T)

(5,A)

(4,C)

(15,K)

(16,X)

(9,F)

(25,J)

(14,E)

(7,Q)

(12,H)

INT2203

(11,S)

(6,Z)

(18,W)

(20,B)

removeMin()
(4,C)

(6,Z)

(5,A)

(15,K)

(16,X)

(9,F)

(25,J)

(14,E)

(7,Q)

(12,H)

INT2203

(11,S)

(20,B)

(18,W)

removeMin()
(4,C)

(5,A)

(6,Z)
(18,W)

(15,K)

(16,X)

(9,F)

(25,J)

(14,E)

(7,Q)

(12,H)

INT2203

(11,S)

(20,B)

removeMin()
o (18,W)
v (5,A)

(18,W)

(6,Z)

(5,A)

(15,K)

(16,X)

(9,F)

(25,J)

(14,E)

(7,Q)

(12,H)

INT2203

(11,S)

(20,B)

removeMin()
(5,A)

o (18,W)
v (9,F)

(18,W)

(15,K)

(16,X)

(6,Z)

(9,F)

(25,J)

(14,E)

(7,Q)

(12,H)

INT2203

(11,S)

(20,B)

removeMin()
(5,A)

(9,F)

(6,Z)

(15,K)

(16,X)

(18,W)

(25,J)

(14,E)

o (18,W)
v (12,H)

(12,H)

INT2203

(7,Q)

(11,S)

(20,B)

removeMin()
nh cui
(5,A)

(6,Z)

(9,F)

(15,K)

(16,X)

(12,H)

(25,J)

(14,E)

(7,Q)

(18,W)

INT2203

(11,S)

(20,B)

phc tp
phc tp khng gian
Ci bng cu trc lin kt (dng con tr): O(n)
Ci bng cu trc vector (mng): t l vi N (c ca mng)

phc tp thi gian


Php ton

Thi gian

size, isEmpty

O (1)

findMin, findMinKey

O (1)

insert

O (log n)

removeMin

O (log n)

INT2203

Tng kt
findMin

insert

removeMin

Mng c sp

O(1)

O(n)

O(1)

Mng khng sp

O(n)

O(1)

O(n)

DSLK c sp

O(1)

O(n)

O(1)

DSLK khng sp

O(n)

O(1)

O(n)

Cy TKNP

O(h)

O(h)

O(h)

Cy th t b phn
(heap)

O(1)

O(logn)

O(logn)

INT2203

Ni dung
KDLTT hng u tin
Cc phng php ci t
ng dng: xy dng m Huffman

INT2203

Nn d liu

Gi s cn nn mt tp d liu
cha 100000 k t t bng 6 ch
ci (t a n f).
M di ging nhau (a)
biu din mi ch ci bi 3 bit
(thay v 8 bit nh thng l)
t l nn = 3/8

Ch ci

(a) T m 000 001 010 011 100 101


Ch ci
a
Tn sut (K) 45
(b) T m
0

M di khc nhau (b)

dng khi ta bit tn sut ca cc


ch ci
gn m ngn nht cho ch ci
xut hin nhiu nht
kch thc file nn:
(451 + 133 + 123 + 163 + 94 +
54) 1000 = 224 000 bits
t l nn = 0.28
INT2203

b
c
d
e
f
13 12 16
9
5
101 100 111 1101 1100

Ch : khng c m no c lm
tin t ca m khc
o gi l m tin t (prefix code)
o mc ch: phc v gii nn
Bi ton: xy dng m tin t vi
t l nn thp nht
o Li gii: m Huffman

M Huffman
100

Biu din m tin t di dng


cy nh phn

M sinh ra gi l m Huffman

55

45
(a)

ti mi nh, nhnh tri c


gn nhn l 0, nhnh bn phi
c gn nhn l 1
mi k t c lu trong mt
nh l
t m ca mi k t l xu bit
to thnh t cc nhn trn
ng i t gc ti nh l
cha k t

Thut ton Huffman s dng


hng u tin xy dng m
tin t di dng cy nh phn

30

25
0

12
(c)

13
(b)

14

16
(d)

Ch ci
a
Tn sut (K) 45
T m
0

INT2203

5
(f)

9
(e)

b
c
d
e
f
13 12 16
9
5
101 100 111 1101 1100

Thut ton Huffman

Vi mi k t xut hin trong xu


ngun, ta to ra mt nh cha k
t
gn vi gi tr u tin bng tn
sut

T tp cc cy ch c mt nh, ti
mi bc ta kt hp hai cy thnh
mt cy
nh cha s gn vi gi tr u tin
bng tng u tin cc con
ta cn chn hai cy nh phn c
mc u tin nh nht kt hp
thnh mt dng hng u tin.

Algorithm HuffmanCoding(S,F)
Input: Bng ch ci S v bng cc tn
sut F
Output: cy Huffman
To ra mt nh cho mi k t trong S
Khi to hng u tin P cha cc nh
ny
for i=0 to n-1 do
v1 P.removeMin()
v2 P.removeMin()
To ra nh v mi vi
leftChild(v) v1
rightChild(v) v2
f(v) f(v1) + f(v2)
P.insert(v)

INT2203

45
(a)

12
(c)

13
(b)

16
(d)
5
(f)

INT2203

9
(e)

45
(a)

12
(c)

14

13
(b)

16
(d)

5
(f)

9
(e)

INT2203

45
(a)
25
0

12
(c)

13
(b)

14

16
(d)

5
(f)

9
(e)

INT2203

45
(a)
30

25
0

12
(c)

13
(b)

14

16
(d)

5
(f)

9
(e)

INT2203

55

45
(a)

30

25
0

12
(c)

13
(b)

14

16
(d)

5
(f)

9
(e)

INT2203

100
0

1
55

45
(a)

30

25
0

12
(c)

13
(b)

14

16
(d)

5
(f)

9
(e)

INT2203

Ni dung
KDLTT hng u tin
Cc phng php ci t
ng dng: xy dng m Huffman

INT2203

Chun b bi ti
c chng 16 (Thit k thut ton)

INT2203

You might also like