Professional Documents
Culture Documents
Ni dung
KDLTT hng u tin
Cc phng php ci t
ng dng: xy dng m Huffman
INT2203
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
Minh ha
Php ton
Output
Hng u tin
insert(5,A)
{(5,A)}
insert(9,C)
{(5,A), (9,C)}
insert(3,B)
insert(7,D)
findMin()
findMinKey()
removeMin()
size()
findMin ()
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
findMin()
insert(8, E)
removeMin()
findMin()
insert(8, E)
removeMin()
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
Max heap
Ci t heap
c th dng cu trc lin kt
(con tr)
c th dng mng
INT2203
2 3,B
4 7,D
findMin?
insert?
removeMin?
8,E
INT2203
INT2203
2
5
9
z
z
insertion node
2
5
9
6
7
zz
Upheap
5
9
1
7
INT2203
2
7
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
INT2203
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)
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
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
M sinh ra gi l m Huffman
55
45
(a)
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
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