You are on page 1of 23

Bi Tp Phc Tp Thut Ton

Haidt3@fpt.com.vn
Bi 1: Vit mt thut ton (th tc) tnh gi tr ca f
n
trong h thc hi f
n
= f
n-1
+ f
n-2
,

n > 2, f
0
= 1, f
1
= 1 . nh gi phc tp v thi gian ca thut ton va vit. C thut ton khc hiu qu
hn khng?.
Gii:
TONG_TRUYHOI(F, n)
1. for i 0 to n
2. do if i < 2
3. then F[0] 1
4. F[1] 1
5. else F[n] F[n-1] + F[n-2]
6. return F

Gi , v ln lt l thi gian thc hin ca php gn, php so snh v php tr v ca thut
ton. Khi , c n+1 php so snh dng 2, do tng ng c n+1 php gn cc dng lnh 3, 4,
5; cui cng l mt php tr v dng 6. Suy ra, thi gian thc thi ca thut gii ny l: T(n) =
(n+1) + (n+1) + = O(n)


Bi 2: Vit thut ton tnh tch ca hai ma trn vung cp n v nh gi phc tp v thi gian
ca thut ton ny.
Gii:
Tch ca hai ma trn vung A v B cp n vi
A c chiu l n n (ma trn n hng n ct)
B c chiu l n n
l mt ma trn C c chiu l n n

MATRIX-MULTIPLY(A, B, n)
1. for i 1 to n
2. do for j 1 to n
3. do C[i, j] 0
4. for k 1 to n
5. do C[i, j] C[i, j] + A[i, k]B[k, j]
6. return C

Gi v theo th t l thi gian thc hin ca php gn v php tr v ca thut ton. Ta c: n
2

php gn dng 3; n
3
php gn dng lnh 5 v mt lnh tr v dng lnh 6. Do tng thi
gian thc thi ca thut gii l: T(n) = n
2
+ n
3
+ = O(n
3
)


Bi 3: Vit thut ton tnh tch ca hai ma trn v nh gi phc tp v thi gian chy ca ca
thut ton ny.
Gii:
Tch ca hai ma trn A v B vi
A c chiu l p q (ma trn p hng q ct)
B c chiu l q r
l mt ma trn C c chiu l p r

MATRIX-MULTIPLY(A, B)
1. if columns[A] = rows[B]
2. then error cc chiu khng tng thch
3. else for i 1 to rows[A]
4. do for j 1 to columns[B]
5. do C[i, j] 0
6. for k 1 to columns[A]
7. do C[i, j] C[i, j] + A[i, k]B[k, j]
8. return C

Ta c th gii nh bi 2 v c th l thi gian tnh C t l vi s php nhn v hng thc thi
trong dng 7, tc l: p q r


Bi 4: Vit v nh gi phc tp ca thut ton tm kim nh phn trn mt dy s thc c
sp xp.
Gii:
BINARY_SEARCH(A, n, x)
1. left 1
2. right n
3. while left s right
4. do mid (left + right)/2
5. if x = A[mid]
6. then return mid
7. else if x < A[mid]
8. then right mid 1
9. else left mid + 1
10. return NIL

Thut gii c phc tp l O(lgn) v cng l trng hp xu nht khi khng c phn t x trong
dy. Trng hp tt nht O(1) khi tm c x ngay gia dy, cn trng hp trung bnh O(lgn/2)
khi tn ti phn t x trong dy.

Bi 5: Vit thut ton tnh n! v nh gi phc tp v thi gian ca n.
Gii:
FACTORIAL(n)
1. if n = 0 or n = 1
2. then return 1
3. else if n > 1
4. then return n*FACTORIAL(n-1)

Gi T(n) l thi gian chy ca thut gii. Ta c:

> +
=
=
1 ) 1 ( ) 1 (
1 , 0 ) 1 (
) (
n O n T
n O
n T
t c = O(1). Ta c:
T(n) = T(n-1) + c
= (T(n-2) + c) + c = T(n-2) + 2c
= (T(n-3) + c) + 2c = T(n-3) + 3c

= T(n-(n-1)) + (n-1)c = T(1) + (n-1)c = c + (n-1)c = nc
Suy ra thi gian chy ca thut gii l: O(n)


Bi 6: Vit v nh gi phc tp v thi gian ca thut ton Thp H Ni.
Gii:
Gi s mun chuyn n ci a t cc A sang cc B ly cc C lm trung gian.

HANOI_TOWER(A, B, C, n)
1. if n = 1
2. then MOVE(A, B, 1)
3. else HANOI_TOWER(A, C, B, n-1)
4. MOVE(A, B, 1)
5. HANOI_TOWER(C, B, A, n-1)

Gi T(n) l thi gian chy ca thut gii. Ta c:

> +
=
=
1 ) 1 ( ) 1 ( 2
1 ) 1 (
) (
n O n T
n O
n T
Gi s cho: O(1) = 1 (Vic gi s ny khng lm thay i tnh tng ng n)
Ta c: T(n) = 2T(n-1) + 1 = 2(2T(n-2) + 1) + 1 = 2
2
T(n-2) + 2 + 1
= 2
2
(2T(n-3) + 1) = 2
3
T(n-3) + 2
2
+ 2 + 1
..
= 2
n-1
T(n-(n-1)) + 2
n-2
+2
n-3
+ + 2
3
+ 2
2
+ 2 + 1
= 2
n-1
+ 2
n-2
+2
n-3
+ + 2
3
+ 2
2
+ 2 + 1 = 2
n
1
Vy phc tp ca thut gii l: O(2
n
)


Bi Tp Heapsort

Bi 1 S phn t nhiu, t nht trong mt heap chiu cao h l bao nhiu?
Hng dn: Heap chiu cao h c s node ln nht M khi cc con mc h-1 u c 2 con l l
M=2
h+1
-1. S node t nht m = [2
(h-1)+1
-1]+1 =2
h
Gii:
Vi h = 2 ta c hai hnh sau biu din cho s node nhiu nht v s node t nht ca cy.







Khi : S node nhiu nht ca cy khi h = 2 chnh l tng s node c lp y tt c cch mc
t 0 n 2 l: 7 = 1 + 2 + 4 = 2
0
+ 2
1
+ 2
2

Tng qut: Ta c s node nhiu nht ca mt heap chiu cao h l:
M
h
= 2
0
+ 2
1
+ 2
2
+ + 2
h
= 2
h+1
1
1.28 h=2
Tng t, ta thy s node t nht ca heap chiu cao h chnh l s node nhiu nht ca heap chiu
cao h-1 ri thm 1. Do :
m
h
= M
h-1
+ 1 = [2
(h-1)+1
1] + 1 = 2
h

Bi 2 Chng minh 1 heap n phn t th c chiu cao l lgn
Hng dn: Theo bi 1: 2
h
s n s 2
h+1
-1 suy ra lg(n+1) -1s h s lgn, v lgn < lg(n+1)
Nn lg(n) -1s h s lgn. Ngha l h = lgn
Gii:
Gi m, M theo th t l s node t nht v s node nhiu nht ca heap c chiu cao h.
Khi : m s n s M 2
h
s n s 2
h+1
-1


n h n h n
h n
n h
h n
n h
h n
n h
n
n
h
h
lg lg 1 lg
1 lg
lg
1 ) 1 lg(
lg
1 ) 1 lg(
lg
2 1
2
1
= s <

<
s

s +
s

+ s +
s

s +
s

+


Bi 3 Dy sau y c l mt max-heap hay khng (23, 17, 14, 6, 13, 10, 1, 5, 7, 12)
Gii:
Biu din heap trn cy nh phn ta thy, vi phm tnh cht max-heap ti node th t v A[4] < A[9]

Do vy dy s cho trn khng phi l mt max-heap

Bi 4 S dng hnh trn nh mt m hnh, biu din thao tc MAX-HEAPIFY(A, 4) trn mng A =
(23, 17, 14, 6, 13, 10, 1, 5, 7, 12)
Gii:
Gi hm MAX_HEAPIFY(A, 4) exchange A[4] A[9]


Bi 5 Da trn th tc MAX-HEAPIFY(A, i) hy vit m gi cho th tc MIN-HEAPIFY(A, i) thc
hin thao tc duy tr tnh cht heap trn mt min-heap.
Gii:
MIN_HEAPIFY(A, i)
1. l left(i)
2. r right(i)
3. if l s HEAP_SIZE[A] and A[l] < A[i]
4. then smallest l
5. else smallest i
6. if r s HEAP_SIZE[A] and A[r] < smallest
7. then smallest r
8. if smallest = i
9. then exchange A[i] A[smallest]
10. MIN_HEAPIFY(A, smallest)

Bi 6 S dng hnh 6.3 nh mt m hnh, biu din thao tc BUILD-MAX-HEAP(A) trn mng A
= (5, 3, 17, 10, 84, 19, 6, 22, 9)
Gii:


Bi 7 S dng m hnh biu din thao tc HEAPSORT(A) trn mng A = (5, 13, 2, 25, 7, 17, 20, 8,
4)
Gii:
HEAPSORT(A)
1. BUILD_MAX_HEAP(A)
2. for i length[A] downto 2
3. do exchange A[1] A[i]
4. HEAP_SIZE[A] HEAP_SIZE[A] 1
5. MAX_HEAPIFY(A, 1)




Bi 8 Phn tch thi gian chy ca MAX-HEAPIFY(A, i) trn cy con kch thc n nh gc ti
node i
Gii:
T gii thut MAX_HEAPIFY(A, i) ta c s bc thc hin li gi quy nh hn hoc bng
chiu cao h ca cy. M mi ln thc hin MAX_HEAPIFY c chi ph l: O(1).
Suy ra: T(n) = h.O(1) = O(1).lgn = O(lgn )
Bi 9 S dng max-heap biu din dy cc s thc (a
1
, a
2
, , a
n
) vit mt thut ton tm max
{a
1
, a
2
, , a
n
}
Gii:
MAX_ELEMENT(A)
1. BUILD_MAX_HEAP(A)
2. return A[1]

Thi gian chy ca MAX_ELEMENT l: T(n) = O(n) + O(1) = O(n)

Bi 10 nh gi thi gian thc hin cc thao tc trn hng c u tin da trn m hnh d liu
max-heap.
Gii:
Th tc HEAP-MAXIMUM thc thi tr v gi tr MAXIMUM vi chi ph (1).

HEAP-MAXIMUM(A)
1. return A[1]

Th tc HEAP-EXTRACT-MAX thi hnh thao tc EXTRACT-MAX. N ging vi phn thn ca
vng lp for t dng 3 n dng 5 trong gii thut HEAPSORT.

HEAP-EXTRACT-MAX(A)
1. if heap-size[A] < 1
2. then error "heap underflow"
3. max A[1]
4. A[1] A[heap-size[A]]
5. heap-size[A] heap-size[A] - 1
6. MAX-HEAPIFY(A, 1)
7. return max

Thi gian chy ca HEAP-EXTRACT-MAX l O(lg n), v n thc thi ch mt s lng thao tc
khng i phn trn ca O(lg n) thi gian chy cho MAX-HEAPIFY.

HEAP-INCREASE-KEY(A, i, key)
1. if key < A[i]
2. then error "new key is smaller than current key"
3. A[i] key
4. while i > 1 and A[PARENT(i)] < A[i]
5. do exchange A[i] A[PARENT(i)]
6. i PARENT(i)

Thi gian chy ca HEAP-INCREASE-KEY trn mt heap n phn t l O(lg n).

MAX-HEAP-INSERT(A, key)
1. heap-size[A] heap-size[A] + 1
2. A[heap-size[A]] -
3. HEAP-INCREASE-KEY(A, heap-size[A], key)

Thi gian chy ca MAX-HEAP-INSERT trn mt heap n phn t l O(lg n).
Tm li, mt heap c th h tr bt c thao tc no ca hng i u tin trn mt tp kch thc n
trong O(lg n) thi gian.

Bi 11 Gi s heap c bi mt mng (a
1
, a
2
, , a
n
). Chng t cc phn t c ch s n/2+1,
n/2+2,, n l cc l ca heap ny.
Gii:
Xt node c ch s: i = n/2+1
Gi s: node i c con tri l l
Khi : l = 2i = 2(n/2+1)
M: n/2-1 < n/2 s n/2
Suy ra: l > 2((n/2 1) + 1)
Hay: l > n; iu chng t l vt qu HEAP_SIZE.
Do vy, node i khng c con tri, suy ra node i cng khng c con phi.
Suy ra: node c ch s n/2+1 l mt node l.
Chng minh tng t ta c cc node n/2+2, n/2+3,, n cng l cc l ca heap kch thc n.


Bi Tp Quicksort

Bi 1 S dng m hnh, biu din thao tc PARTITION trn mng A = (13, 19, 9, 5, 12, 8, 7, 4, 11,
2, 6)
Gii:
PARTITION(A, p, r)
1. x A[r]
2. i p - 1
3. for j p to r - 1
4. do if A[j] x
5. then i i + 1
6. exchange A[i] A[j]
7. exchange A[i + 1] A[r]
8. return i + 1



Bi 2 S dng m hnh, biu din thao tc PARTITION trn mng A = (13, 19, 9, 5, 12, 8, 7, 4, 11,
2, 6, 21)
Gii:

Thc hin tng t cho 10 bc tip theo v nhn xt y l trng hp c bit, vi mi j s r ta
c: A[j] s x (x = A[r]), do vy sau khi thc thi xong gii thut PARTITION th th t cc phn t
khng c s thay i. Kt qu PARTITON chia ra 2 mng con gm n-1 phn t nh hn hoc bng
x v 0 phn t ln hn x. Kt qu tr v ca PARTITION l: r

Bi 3 Biu din qu trnh thc hin gii thut QUICKSORT trn A = (13, 19, 9, 5, 12, 8, 7, 4, 11, 2,
6, 21)
Gii:
QUICKSORT(A, p, r)
1. if p < r
2. then q PARTITION(A, p, r)
3. QUICKSORT(A, p, q - 1)
4. QUICKSORT(A, q + 1, r)

Da vo kt qu Bi 2 ta thy dng 2 kt qu php gn q = r . Vy c ngha l ta ch thc hin tip
li gi quy QUICKSORT(A, p, q - 1) dng 3 thi, cn li gi quy QUICKSORT(A,
q + 1, r) dng 4 khng thc thi tip v khng tho iu kin dng 1.
Vy ta thc hin QUICKSORT(A, p, q - 1) nh sau:

Lc ny bi ton thc hin PARTITION trn on (p, q-1). Kt hp kt qu Bi 1 v tip tc thc
hin QUICKSORT trn cc mng con mi. Kt qu cui cng ta c dy sp xp tng dn.

Bi 4 PARTITION tr v gi tr q g khi tt c cc phn t ca mng A[p..r] c cng gi tr, sa
PARTITION sao cho q = (p+r)/2 khi tt c cc phn t ca A[p..r] c cng gi tr
Hng dn: kt thc vng lp for cn thm lnh (ng cho c trng hp cc phn t c gi tr tng
dn):
if i= j+1 (i=r)
then return q=(p+r)/2
else exchange (A[i+1], A[r])
return i+1
Gii:
Khi tt c cc phn t ca mng A[p..r] c cng gi tr th PARTITION tr v gi tr q = r . V vi
mi j s r ta c: A[j] s x (x = A[r]).
gi tr tr v q = (p+r)/2 ca PARTITION trong trng hp ny, ta phi sa li gii thut
PARTITION nh sau:

PARTITION(A, p, r)
1. x A[r]
2. i p - 1
3. for j p to r - 1
4. do if A[j] x
5. then i i + 1
6. exchange A[i] A[j]
7. if i = j + 1 or i = r
8. then return (p+r)/2
9. else exchange A[i + 1] A[r]
10. return i + 1

Vy lc ny thi gian chy QUICKSORT trn mng cc phn t cng gi tr l tt nht.

Bi 5 Chng t thi gian chy ca PARTITION l O(n)
Gii:
Gi , v ln lt l thi gian thc hin ca php gn, php so snh v php tr v ca thut
ton PARTITION trn mng c n phn t.
Ta c: thi gian chy tt nht khi cc phn t trong mng A[p..(r-1)] u khng ln hn A[r] l:
2 + (n-1) + +
Cn thi gian chy xu nht khi tt c cc phn t trong mng A[p..(r-1)] u ln hn A[r] l:
2 + (n-1) + 2(n-1) + +
Gi T(n) l tng thi gian chy ca PARTITION trn mng c n phn t.
Suy ra: 2 + (n-1) + + T(n) 2 + (n-1) + 2(n-1) + +
Hay: C
1
.n T(n) C
2
.n (Vi C
1
; C
2
l cc hng s)
Vy: T(n) = O(n)

Bi 6 Sa quicksort sp xp mng A[p..r] theo trt t khng tng.
Gii:
PARTITION(A, p, r)
1. x A[r]
2. i p - 1
3. for j p to r - 1
4. do if A[j] > x
5. then i i + 1
6. exchange A[i] A[j]
7. exchange A[i + 1] A[r]
8. return i + 1

Bi 7 nh gi thi gian thc hin quicksort trong trng hp tt c cc phn t ca mng c cng
gi tr.
Gii:
t n = r p + 1
Do A[i] = A[j] = A[r] vi mi i, j e [p, r-1], nn PARTITION(A, p, r) tr v gi tr r v chia ra 2
mng con vi mng con th nht c n-1 phn t nh hn hoc bng A[r], cn mng con th hai c 0
phn t ln hn A[r].
Suy ra thi gian chy ca QUICKSORT(A, p, r) l:
2
2
) 2 )( 1 (
2 )] 1 ( ) 1 ( ...... 5 4 3 1 [
) 1 ( ) 1 ( ...... 5 4 3 1
) 1 ( ) 1 ( ...... 5 4 3 ) 1 (
....... .......... .......... .......... ..........
) 1 ( ) 1 ( ) 3 ( ) 1 ( 1 ) 2 ( ) 3 (
) 1 ( ) 2 ( 1 1 ) 1 ( ) 2 (
1 ) 1 (
1 ) 1 (
1 , 0 1
) 0 ( ) 1 ( ) (
1 , 0 1
) (

+ +
=
+ + + + + + + + =
+ + + + + + + + =
+ + + + + + + + =
+ + + + = + + + + + =
+ + + = + + + + =
+ + =

+ +
=
=

+ + O
=
=
n n
n n n
n n n
n n n T
n n n n T n n n n T
n n n T n n n T
n n T
n T n
n
T n T n
n
n T

Suy ra thi gian chy QUICKSORT trong trng hp ny l: O(n
2
)

Bi 8 nh gi thi gian thc hin quicksort trong trng hp tt c cc phn t ca mng c c gi
tr theo trt t tng dn.
Gii:
Trng hp ny cng l trng hp xu nht v cc phn t trong mng A[p, r-1] lun nh hn A[r]
nn PARTITION chia thnh 2 mng trong mng con tri c n-1 phn t nh hn A[r] v mng
con phi c 0 phn t ln hn A[r].
Do : thi gian chy QUICKSORT trong trng hp ny l: O(n
2
)

Bi 9 nh gi thi gian thc hin quicksort trong trng hp tt c cc phn t ca mng c c gi
tr theo trt t gim dn.
Gii:
y cng l trng hp xu nht v cc phn t trong mng A[p, r-1] lun ln hn A[r] nn
PARTITION chia thnh 2 mng trong mt mng con phi c n-1 phn t ln hn A[r] v mng
con tri c 0 phn t nh hn A[r]
Do : thi gian chy QUICKSORT trong trng hp ny l: O(n
2
)

Bi 10 Chng minh rng thi gian chy ca quicksort trong trng hp xu nht l O(nlgn)
Gii:
Trng hp phn hoch tt nht (best-case partitioning)
Trng hp ny xy ra khi kt qu phn hoch l hai bi ton con kch thc khng ln
hn n/2
Chi ph cho th tc PARTITION l (n)
H thc truy hi cho thi gian chy ca Quicksort l
T(n) 2T(n/2) + (n) = O(nlgn)
Quicksort chy nhanh nht trong trng hp ny
Suy ra: thi gian chy chm nht ca QUICKSORT l:
T(n) > 2T(n/2) + (n) = O(nlgn)
Vy: T(n) = O(nlgn)





Bi Tp Chng 4

Bi 1. Hy v th c biu din bi ma trn trng s sau:

(
(
(

=
0 4 2
4 0 3
3 2 1
C
Gii:


Bi 2. Cho th v hng, vit chng trnh xc nh bc ca mi nh.
Gii:
Xt ma trn k A biu din th v hng c n nh. Ch ma trn ny c tnh cht i xng qua
ng cho chnh.

Ta c: Bc ca nh u no chnh l tng cc s ca dng th u. Do vy ta lp thut ton tnh
bc ca nh nh sau:
VERTEX_DEGREE(G, u)
1. S 0
2. for k 1 to G.n
3. do S S + G.A[u][k]
4. return S

Bi 3. Cho th c hng, vit chng trnh xc nh bn bc ra (vo) ca mi nh.
Gii:
Xt ma trn k A biu din th c hng c n nh.

Ta c: Bn bc ra ca nh u no trong th c hng chnh l tng cc s ca dng th u. Do
vy ta lp thut ton tnh bn bc ra ca nh nh sau:
OUTER_DEGREE(G, u)
5. S 0
6. for k 1 to G.n
7. do S S + G.A[u][k]
8. return S

Cn bn bc vo ca nh u no trong th c hng chnh l tng cc s ca ct th u. Do vy
ta lp thut ton tnh bn bc vo ca nh nh sau:
INNER_DEGREE(G, u)
9. S 0
10. for k 1 to G.n
11. do S S + G.A[k][u]
12. return S

Bi 4. S dng nh 3 nh l nh ngun, ch ra cc gi tr ca d v t khi thc thi thut ton tm
kim theo chiu rng trn th sau.

Gii:
BFS(G, s)
1. for each vertex u e V[G] {s}
2. do color[u] WHITE
3. d[u]
4. t[u] NIL
5. color[s] GRAY
6. d[s] 0
7. t[s] NIL
8. Q C
9. ENQUEUE(Q, s)
10. while Q = C
11. do u DEQUEUE(Q)
12. for each v e Adj[u]
13. do if color[v] = WHITE
14. then color[v] GRAY
15. d[v] d[u] + 1
16. t[v] u
17. ENQUEUE(Q, v)
18. color[u] BLACK



Bi 5. Biu din qu trnh thc thi ca thut ton tm kim theo chiu su trn th sau:

gi s vng lp for 5-7 ca DFS coi cc nh trong trt t alphabe v danh sch k ca mi nh
cng c th t alphabe. Ch ra thi gian pht hin v hon thnh ca mi nh v s phn loi ca
mi cnh.
Gii:
DFS(G)
1. for each vertex u e V[G]
2. do color[u] WHITE
3. t[u] NIL
4. time 0
5. for each vertex u e V[G]
6. do if color[u] = WHITE
7. then DFS_VISIT(u)
1. color[u] GRAY
2. time time + 1
3. d[u] time
4. for each each v e Adj[u]
5. do if color[v] = WHITE
6. then t[v] u
7. DFS_VISIT(v)
8. color[u] BLACK
9. f[u] time time + 1

Theo bi ta bt u duyt t node 1.






Bi Tp Chng 5

Bi 1. Cho th v hng lin thng G=(V,E). Gi e=(u,v)eE l cnh c trng s b nht trong
G. C/m c mt cy bao trm b nht cha e.
Gii:

Xt th trn ta c e = 2 = (u, v) = (x, y)
Gi s khng tn ti cy bao trm b nht cha cnh e.
Xt T = T {(u, v)} {(m, n)}
vi (m, n) l cnh thuc chu trnh to ra khi thm (u, v) vo T.
Khi : W(T) = W(T) + W(u, v) W(m, n)
M: W(u, v) < W(m, n) v (u, v) l cnh c trng s b nht.
Suy ra: W(T) < W(T) (mu thun)
Vy cy bao trm b nht lun cha cnh e

Bi 2. G l mt rng gm k cy, n nh. Tm s cnh ca G?.
Gii:
Gi T
i
(i e[1, k]) l cy th cy th k trong rng G.
V n(T
i
), e(T
i
) l s nh v s cnh ca T
i

S cnh ca G l:
| |

= = =
= = = =
k
i
i
k
i
i
k
i
i
k n k T n T n T e E
1 1 1
) ( 1 ) ( ) (
V d: vi rng c 3 cy, 11 nh th s cnh l: 11 3 = 8.


Bi 3. Cho G l th v hng c s cnh bng s nh. Chng minh G c t nht mt chu trnh.
Gii:
Gi s G khng c chu trnh. Theo gi thit bi G l th v hng c s cnh bng s
nh ( n E = ) nn G l mt rng c k cy (k>1)
Theo kt qu chng minh Bi 2 ta c: k n E = (mu thun)
Vy G c t nht mt chu trnh.


Bi 4. Cho th c trng s G=(E,V) ( Hnh v). Hy dng thut ton Kruskal tm cy bao
trm b nht ca G

Gii:
MST_KRUSKAL(G, w)
1. A C
2. for each vertex v e V[G]
3. do MAKE_SET(v)
4. sort the edges of E into nondecreasing order by weigh w
5. for each edge (u, v) e E, taken in nondecreasing order by weigh
6. do if FIND_SET(u) = FIND_SET(v)
7. then A A (u, v)
8. UNION(u, v)
9. return A








Bi 5. Hy dng thut ton Prim tm cy bao trm b nht ca th G trong bi tp 6.
Gii:
MST_PRIM(G, w, r)
1. for each vertex u e V[G]
2. do key[u]
3. t[u] NIL
4. key[u] 0
5. Q V[G]
6. while Q = C
7. do u EXTRACT_MIN(Q)
8. for each v e Adj[u]
9. do if v e Q and w(u, v) < key[v]
10. then t[v] u
11. key[v] w(u, v)

Gi s duyt node gc r ti s.

You might also like