You are on page 1of 13

PHN TCH THUT TON

1 CHIA TR
CHIA TR
(DIVIDE &CONQUER)

I. Thut ton chia tr:
1. tng

Nguyn l chia tr c ngun gc thi xa xa, khi m nhng nh thng tr vi t tng
bnh trng v t ai v lnh th, chia t chim c thnh cc min nh v p t cai tr
mt cch d dng ti vng ny.Ngy nay, phng php ny vn c ng dng trong nhiu lnh
vc ca i sng.Phng php ny c hiu qu khi thit k thut ton cho nhng bi ton c ln
v phc tp.
Chin lc chia tr l mt chin lc quan trng trong vic thit k cc gii thut. tng
ca chin lc ny nghe rt n gin, l: khi ta cn gii quyt mt bi ton ta s tin hnh
chia bi ton thnh cc bi ton nh hn. Qu trnh phn chia ny s cho chng ta bi ton
mi m li gii ca chng l hin nhin hay rt d dng thc hin, sau kt hp nghim ca
cc bi ton nh hn li thnh nghim ca bi ton ban u.
Tuy nhin vn kh khn y nm hai yu t : lm th no chia bi ton mt
cch hp l thnh cc bi ton con, v nu cc bi ton con li c gii quyt bng cc thut
ton khc nhau th s rt phc tp. Th hai l vic kt hp li gii ca cc bi ton nh thnh li
gii ca bi ton ban u.
Ba bc s l bi ton theo chin lc chia tr:
Chia (Divide): chia vn thnh nhng vn nh.
Chinh phc (Conquer): Gii quyt cc vn nh.
Kt hp (Combine): Kt hp cc nghim ca cc vn nh li vi nhau.

2.nh l Master

Cho a 1, b > 1 l hai hng s, f(n) l hm dng tim cn dng
T(n) l hm xc nh trn tp cc s t nhin, c xc nh:
I(n) = oI(nb) +(n)
C 3 trng hp :
1. Nu (n) = 0(n
Iog
b
u- c
), vi hng s >0 , th I(n) = (n
Iog
b
u
)
2. Nu (n) = (n
Iog
b
u
log
k
n)vi k 0, th I(n) = (n
Iog
b
u
log
k+1
n)
3. Nu (n) = 0(n
Iog
b
u+ c
), vi hng s >0 v o(nb) < o(n) vi o < 1 v n ln
th I(n) = (f(n))

Chng minh
t t = log
b
n
T(n) = aT(n/b) + f(n)
= a(aT(n/b
2
) + f(n/b)) + f(n)
= a
2
T(n/b
2
) + af(n/b) + f(n)
= a
2
(aT(n/b
3
) + f(n/b
2
)) + af(n/b) + f(n)
= a
3
T(n/b
3
) +a
2
T(n/b
2
) + af(n/b) + f(n)
= a
3
(aT(n/b
4
) + f(n/b
3
)) +a
2
T(n/b
2
) + af(n/b) + f(n)
= a
4
T(n/b
4
) +a
3
f(n/b
3
) +a
2
T(n/b
2
) + af(n/b) + f(n)
.

PHN TCH THUT TON

2 CHIA TR
.
.
.
= a
t
T(n/b
t
) +a
t-1
f(n/b
t-1
) ++a
4
(n/b
4
) +a
3
f(n/b
3
) +a
2
T(n/b
2
) + af(n/b) + f(n)
= o
Iog
b
n
T(1) + o
]
(nb
]
)
t-1
]=0

= n
Iog
b
u
+ o
]
(nb
]
)
t-1
]=0





Trng hp 3
Nu (n) = 0(n
Iog
b
u+ c
), vi hng s >0 v o(nb) < o(n) vi o < 1 v n ln
Ta nhn xt:
o(nb) < o(n)
a
2
f(n/b
2
) = a(af((n/b)/b)) < a(of(n/b)) = oaf(n/b) < o
2
f(n)
a
3
f(n/b
3
) = a
2
(af((n/b
2
)/b)) < a
2
(of(n/b
2
)) = oa
2
f(n/b
2
) < o
3
f(n)
a
4
f(n/b
4
) = a
3
(af((n/b
3
)/b)) < a
3
(of(n/b
3
)) = oa
3
f(n/b
3
) < o
4
f(n)

Ta c th tng qut cho trng hp j o
]
(nb
]
) <o
]
(n) vi mi gi tr j nguyn dng.Ta
c
o
]
(nb
]
)
t-1
]=0
< o
]
(n)
t-1
]=0

= (n) o
] t-1
]=0

(n) o
]
]=0

= f(n)/(1 - o)
0((n))
Do , I(n) 0(n
Iog
b
u
+ (n))v trong trng hp 3 do (n) = 0(n
Iog
b
u+ c
), tc l n
Iog
b
u

c s hng bc thp hn nn I(n) 0((n))
Ngoi ra, T(n) f(n) do truy hi, nn I(n) 0((n))
Vy, I(n) ((n))


Trng hp 1, 2 th phc tp hn trng hp 3, trnh chng minh lp li, ta dng b sau:

B 1 Cho x l mt s thc khng m v k
Nu (n) D(n
|ug
h
a-x
|ug
k
n) th tn ti c
+
v n

sao cho vi mi n n

,
a
j
(nh
j
) cn
|ug
h
a-x
(h
x
)
j
(t j)
k


Chng minh


PHN TCH THUT TON

3 CHIA TR
Nu (n) 0(n
Iog
b
u-x
log
k
n) th tn ti c
+
v n
0
sao cho vi mi n n
0
,
(n) n
Iog
b
u-x
log
k
n

. Do ,
o
]
[
n
b
]
o
]
c (
n
b
]
)
Iog
b
a-x
log
b
k
(
n
b
]
)
o
]
c
n
lcg
b
c-x
(b
]
)
(lcg
b
c-x)
log
b
k
(
b
t
b
]
)

o
]
c
n
lcg
b
c-x
(b
(lcg
b
c-x)
)
]
log
b
k
(b
t-]
)
o
]
c
n
lcg
b
c-x
(b
(lcg
b
c)
b
-x
)
]
(t ])
k

o
]
c
n
lcg
b
c-x
u
]
(b
-x
)
]
(t ])
k

c
n
lcg
b
c-x
(b
-x
)
]
(t ])
k

cn
Iog
b
u-x
(b
x
)
]
(t ])
k






B 2
Cho x l mt s thc khng m v k .
Nu (n) u(n
|ug
h
a-x
|ug
k
n) th tn ti c
+
sao cho a
j
(nh
j
)
cn
|ug
h
a-x
(h
x
)
j
(t j)
k



Chng minh

Tng t nh b 1

Vi 2 b trn, ta c th chng minh c trng hp 1 v 2

Trng hp 1
Nu (n) = 0(n
Iog
b
u-c
), vi hng s >0

Ta cn chia ra trng hp O v

Trng hp O
Ta s dng b 1, vi x= , k=0
T(n)= n
Iog
b
u
+ o
]
(nb
]
)
t-1
]=0

n
Iog
b
u
+ cn
Iog
b
u-s
(b
s
)
]
)
t-1
]=0

n
Iog
b
u
+ cn
Iog
b
u-s
(b
s
)
]
)
t-1
]=0

n
Iog
b
u
+ cn
Iog
b
u-s
(b
s
)
t
-1
b-1


PHN TCH THUT TON

4 CHIA TR
= n
Iog
b
u
+ cn
Iog
b
u-s
(b
t
)
s
-1
b-1


= n
Iog
b
u
+ cn
Iog
b
u-s
n
s
-1
b-1

n
Iog
b
u
+ cn
Iog
b
u-s
n
s
b-1

n
Iog
b
u
+ c
n
lcg
b
c
b-1

= (1 +
c
b-1
)n
Iog
b
u

Vy do , I(n) 0(n
Iog
b
u
)

Chng minh
Chng minh I(n) 0(n
Iog
b
u
)th tng t nhng s dng b 2 thay v b 1.
T , ta suy ra I(n) (n
Iog
b
u
)

Trng hp 2

Nu (n) = (n
Iog
b
u
log
k
n)vi k 0

Ta cn chia ra trng hp O v

Trng hp O
Ta s dng b 1, vi x= 0, k 0
T(n)= n
Iog
b
u
+ o
]
(nb
]
)
t-1
]=0

n
Iog
b
u
+ cn
Iog
b
u
(t ])
k
)
t-1
]=0

= n
Iog
b
u
+ cn
Iog
b
u
(t ])
k
)
t-1
]=0


Ta nhn xt, tng ca cc s hng l (t 1)
k
, (t 2)
k
, , 1
k
. Ta sp xp li cc s hng ny v
c
T(n)= n
Iog
b
u
+cn
Iog
b
u
]
k t-1
]=0

Ta chng minh
]
k
t-1
]=0
0(t
k+1
)
V t = log
b
n nn ta c
T(n)= n
Iog
b
u
+cn
Iog
b
u
log
b
k+1
n

V s hng u c bc thp hn nn
T(n) 0( cn
Iog
b
u
log
b
k+1
n)

Trng hp
Chng minh tng t nhng dng b 2 chng t T(n) 0( cn
Iog
b
u
log
b
k+1
n)
Vy, T(n) ( cn
Iog
b
u
log
b
k+1
n)



PHN TCH THUT TON

5 CHIA TR
Mt vi v d ng dng nh l Master
V d 1:
Xt T (n) = 9T (n/3) + n
=> a = 9, b = 3, f (n) = n
=> n
Iog
b
(u)
= n
Iog
3
(9)
= n
2

V f(n) =O(n
Iog
3
(9)-s
) vi e = 1
=> p dng trng hp 1 ca nh l Master
=> T(n) = (n
Iog
b
(u)
) = (n
2
)

V d 2:
Xt T (n) = T (2n/3) + 1
=> a = 1, b = 3/2, f (n) = (1)
=> n
Iog
b
(u)
= n
Iog
32
(1)
= n
0
=1
V f(n) =(n
Iog
b
(u)
) = (1)
=> p dng trng hp 2 ca nh l Master
=> T(n) =(n
Iog
b
(u)
) log n = (logn)
V d 3:
Xt T (n) = 3T (n/4) + nlg(n)
=> a= 3, b=4, f(n)= nlg(n) v n
Iog
b
(u)
= n
Iog
4
(3)
= n
0.793

Ta c f(n) =(n
Iog
b
(u)+s
) = (n
Iog
4
(3)+s
) vi e = u.2
=> a.f(n/b) = 3.(n/4).lg(n/4) (3/4)nlg(n) = c.f(n) vi c=
=> p dng trng hp 3 ca nh l Master
=> T(n) = (f(n)) = (nlg(n))

Ch
nh l Master khng c s dng trong cc trng hp sau:
T(n) khng n iu
V d : T(n) =sin(n)
b khng l hng s
V d : T(n)= T(n)

II. Mt s v d v thut ton s dng chin lc chia tr:
Cc thut ton nh sp xp trn (merge sort), sp xp nhanh (quick sort), nhn hai s nguyn
ln u s dng chin lc chia tr.

PHN TCH THUT TON

6 CHIA TR

1. Nhn s nguyn ln:
- Trong cc ngn ng lp trnh, kiu d liu s nguyn u c min hn ch. V d nh Pascal, C
s nguyn t -32768 n 32767. V vy khi gp cc ng dng cn s nguyn ln hn, chng ta
phi xy dng cu trc d liu s nguyn ln gm cc thao tc i km nh : cng , tr , nhn ,
chia...
- tng ca gii thut nhn s nguyn ln nh sau:
+ Biu din X v Y di dng: X = A10
n/2
+ B v Y = C10
n/2
+ D
+ Trong A, B, C, D l cc s c n/2 ch s. V d vi X = 1234 th A = 12 v B = 34 v
12*10
2
+ 34 = 1234 = X
+ Vi cch biu din ny th XY = AC10
n
+ (AD + BC)10
n/2
+ BD (*)
Thay v nhn trc tip 2 s c n ch s, ta phn tch bi ton ban u thnh mt s bi
ton nhn 2 s c n/2 ch s. Sau , ta kt hp cc kt qu trung gian theo cng thc (*). Vic
phn chia ny s dn n cc bi ton nhn 2 s c 1 ch s. Sau tng hp kt qu theo cng
th (*).
Theo cng thc (*) trn vic nhn 2 s nguyn c n ch s c phn chia thnh 4
php nhn cc s nguyn c n/2 ch s, 3 php cng cc s ln n ch s v 2 php nhn vi
10
n
v 10
n/2
. Php cng cc s c ln hn n ch s cn O(n). Php nhn vi 10n tn O(n) (dch
tri n ln). Gi T(n) l thi gian nhn 2 s c n ch s ta c phng trnh
quy sau:
T(1) = 1
T(n) = 4T(n/2) +cn

Gii h phng trnh :









PHN TCH THUT TON

7 CHIA TR

Qu trnh trn kt thc khi:


Khng ci thin !

Ta vit li cng thc (*):
X Y = AC10
n
+[(A B)(D C)+AC+BD]10
n/2
+BD
Cng thc ny ch cn tnh 3 php nhn ca cc s nguyn ln n/2 ch s: AC,BD
v (A-B)(D-C), 6 php cng tr v 2 php nhn vi 10
n

Ta s c phng trnh quy sau:
T(1)=1
T(n)=3T(n/2) + cn

Gii h phng trnh trn:

PHN TCH THUT TON

8 CHIA TR

Qu trnh kt thc khi:


Thut ton c ci thin hn vi O(n^1.59)

2. Thut ton Binary Search:
tng:
Ti mi bc tin hnh so snh phn t cn tm x vi phn t nm v tr gia ca dy tm kim
hin hnh, da vo kt qu so snh ny quyt nh gii hn dy tm kim bc k tip l
na trn hay na di ca dy tm kim hin hnh.
Ci t:
Tm x trong mng c sp xp A.
int binarySearch ( int A [] ,int left, int right ,int x) {
if (left > right) return -1;
int mid = (left + right)/2 ;
if ( x= A[mid] ) return mid ;
else {
if ( x<A[mid]) binarySearch (A[] , left, mid , x);
else binarySearch ( A[] , mid+1, right , x);
}
}
V d minh ha:
binarySearch vi gi tr cn tm l 6 :

PHN TCH THUT TON

9 CHIA TR


Phn tch:
Do chiu di ca mng gim i mt na sau mi ln bc lp. Ta gi T(n) l thi gian
thc hin binarySearch vi chiu di ca mng l n , c la thi gian chia mng. Ta c h phng
trnh sau:
T(1) = 1 (phn t gia mng c gi tr x)
T (n) = T(n/2) + c
Gii h phng trnh :


=> I = log2 (n)
=> T(n) = T(1) + log2(n).c = O(log
2
(n))
Vy Binary Search c phc tp l log
2
(n)

3.Thut ton Merge Sort :
tng:
Vi mi mt na l mt mng c th c sp xp bng cch s dng cng mt thut
ton, chia mi na thnh 2 phn, sp xp mt cch ring bit mt na bn tri v mt na bn
phi ri sau trn (merge) chng li vi nhau ta c mng ban u c sp xp.
Ci t:
void merge_sort ( int [ ] a, int left, int right) {
if(left < right) {
int mid = (left + right) / 2;
merge_sort (a,left, mid);
merge_sort(a, mid + 1, right);
merge(a, left, mid + 1, right);
}
}

PHN TCH THUT TON

10 CHIA TR
V d minh ha:




Phn tch:
sp xp mng N phn t, ta sp xp 2 mng vi s phn t l N/2. Sau trn 2 mng li
theo thu ton tuyn tnh (Linear) vi phc tp l O(n).Ta gi T(n) l thi gian thc hin vic
sp xp mt mng N phn t theo thut ton Merge sort. Ta c h phng trnh sau:
T(1) = 1
T(n) = 2T(n/2) +n
Gii h phng trnh trn:


=> k = log2(n)
=> T(n) = 2^log2 (n) + nlog2(n)
=> T(n) c O(nlog2(n))
Vy Merge Sort c phc tp l O(nlog2(n))


PHN TCH THUT TON

11 CHIA TR
4. Xp lch thi u th thao

Vn
Xt vic xp lch thi u vng trn mt lt cho n i banh. Mi i thi u vi nhau, mi i
ch u nhiu nht mt trn mt ngy. Lm sao ta xp lch thi u cho s ngy t nht

tng
D dng thy rng tng s trn u l



Nh vy nu n chn, ta c th xp n/2 cp u vi nhau mi ngy v s ngy thi u t nht s l
n-1 ngy. Ngc li nu n l, th n-1 ta c th xp (n-1)/2 trn mi ngy v v vy chng ta cn n
ngy. Gi s n = 2
k
th n chn do ta cn t nht n 1 ngy

- Gi s lch thi u l 1 bng gm n dng (tng ng vi n u th) v n-1 ct (tng ng vi
n-1 ngy), dng i i din cho i thi u th I, ct j i din chongy thi u j. (i,j) biu din
u th m i phi u trong ngy j. Nhim v ca chng ta l lp y cc ny sao cho quy tc
ca bi ton.
- Chin lc chia tr nh sau: sp lch cho n i ta sp lch cho n/2 i, sp lch cho n/2
i ta sp lch cho n/4 .xp lch cho 2 u th(bi ton c s). Vic xp lch cho 2 u th rt
d dng: ta cho 2 u th ny thi u 1 trn trong 1 ngy. Bc kh khn nht chnh l bc xy
dng lch cho 4, 8, 16, u th t lch thi u ca 2 u th.

Lch thi u ca 2 ngi s l bng gm 2 dng v 1 ct: (1,1) = 2 (ngi 1 u vi ngi 2
trong ngy 1) v (2,1) = 1 (ngi 2 u vi ngi 1 trong ngy 1).

-Lch thi u ca 4 ngi l bng gm 4 dng v 3 ct.
-Lch thi u ca ngi 1 v ngi 2 trong ngy 1 l lch thi u ca 2 ngi. Lch thi u ca
ngi 3 v ngi 4 c xy dng tng t lch ca ngi 1 v ngi 2. Lch ny c c bng
cch cng lch thi u ca ngi 1 v ngi 2 vi 2. Ngha l (3,1) = (1,1) + 2 = 4 v (4,1) =
(2,1) + 2 = 3.
-Hai ct cn li ca bng c lp y theo quy tt: ly gc trn bn tri (tnh lun phn ch s
dng) lp y gc di bn phi v ly gc di bn tri lp y gc trn bn phi

Lch thi u cho 8 u th cng c xp theo quy tc tng t: ly lch thi u ca 4 u th
lp vo gc trn bn tri. Cng thm 8/2 = 4 vo cc ca gc trn bn tri c gc di bn
tri. Ly gc trn bn tri lp y gc di phi. Ly gc di tri lp y gc trn phi




PHN TCH THUT TON

12 CHIA TR









V phn ci t thut ton l cu hi m cho mi ngi.







PHN TCH THUT TON

13 CHIA TR
Tham kho
Mt s vn v thut ton Nguyn Hu in-NXB Gio Dc
Phn tch thit k thut ton v nh gi phc tp gii thut-Nguyn Ch Trung
Nguyn Th Thu Thy-i hc S Phm H Ni
Phn tch thut ton-Phm Th Bo
Master theorem proof- ebook-Ngun: www.ugrad.cs.ubc.ca

You might also like