You are on page 1of 39

Phn tch thit k gii thut

Phm Nguyn Khang, Thanh Ngh


BM. Khoa hc my tnh
Khoa CNTT i hc Cn Th
{pnkhang,dtnghi}@cit.ctu.edu.vn

Ni dung
Mc tiu
T bi ton n chng trnh
Cc k thut thit k gii thut

Chia tr
Quay lui

Vt cn
Nhnh cn

Hu n/Tham n/Tham lam/ (Greedy)


Quy hoch ng

Bi tp

Mc tiu
Bit cc k thut thit k gii thut: t tng
cho n gii thut chi tit.
Hiu r nguyn l ca cc k thut phn tch
thit k gii thut.
Vn dng k thut phn tch thit k gii cc
bi ton thc t: cc bi ton dng no th c
th p dng c k thut ny.

T bi ton n chng trnh


Thit k

Lp trnh

nh gi

Bi ton
thc t

Gii thut

K thut thit k gii


thut:
Chia tr, quy hoch
ng, hu n, nhnh
cn,

Gii thut tt

K thut phn tch


nh gi gii thut:
phc tp ca
gii thut
Ci tin GT

#include

Chng trnh

Ngn ng lp trnh:
PASCAL, C/C++,
JAVA,

K thut chia tr ( tng)


Yu cu:

Cn phi gii bi ton c kch thc n.

Phng php:

Ta chia bi ton ban u thnh mt s bi ton con ng


dng vi bi ton ban u c kch thc nh hn n.
Gii cc bi ton con c cc li gii con
Tng hp li gii con li gii ca bi ton ban u.

. Ch :

i vi tng bi ton con, ta li chia chng thnh cc bi


ton con nh hn na.
Qu trnh phn chia ny s dng li khi kch thc bi ton
nh m ta c th gii d dng Gi l bi ton c s.

K thut chia tr (phn tch)


Bi ton con

u vo:
n1, m2,

u vo:
n, m,

u ra:
o1

u vo:
n2, m2,

u ra:
o

u ra:
o2

Tng hp kt qu:
Tnh o t o1, o2, , ok

Bi ton ban
u

u vo:
nk, mk,

u ra:
ok

K thut chia tr (gii thut)


solve(n) {
if (n nh c th gii c)
gii bi ton KQ
return KQ;
else {
Chia bi ton thnh cc bi ton con
kch thc n1, n2,
KQ1 = solve(n1); //gii bi ton con 1
KQ2 = solve(n2); //gii bi ton con 2

Tng hp cc kt qu KQ1, KQ2, KQ


return KQ;
}

V d: Quick sort
Gii thut Quick Sort

Sp xp dy n s theo th t tng dn

p dng k thut chia tr:

Chia dy n s thnh 2 dy con

Gii 2 bi ton con

Trc khi chia phi phn hoch


Sp xp dy bn tri
Sp xp dy bn phi

Tng hp kt qu:

Khng cn tng hp

V d: Quick sort

10

phc tp ca Quick sort


Xu nht
Dy n s ng th t tng dn
Phn hoch b lch: phn t cht l phn t nh
nht => cn n php so snh bit n l phn
t u tin
phc tp trong trng hp ny l: O(n2)
Tt nht:
Phn hoch cn bng: phn t cht l phn t
gia dy => C(n) = 2C(n/2) + n
phc tp trong trng hp ny l: O(nlogn)
Chng minh phc tp trung bnh: O(nlogn)

11

V d: Merge Sort
Gii thut Merge Sort

Sp xp dy n s theo th t tng dn

p dng k thut chia tr:

Chia dy n s thnh 2 dy con

Gii 2 bi ton con

Khng cn phn hoch, c ct dy s ra lm 2


Sp xp dy bn tri KQ1
Sp xp dy bn phi KQ2

Tng hp kt qu:

Trn kt qu (theo th t) ca 2 bi ton con

12

V d: Merge Sort

13

phc tp ca Merge sort


Sp xp dy n s
S ln so snh: C(n) = 2C(n/2) + n
phc tp l: O(nlogn)
Cn thm n n v b nh cho lu tr

14

Bi tp: Tm phn t tri


Cho mng n phn t
Phn t tri: phn t xut hin nhiu hn n/2
ln
Tm phn t tri ca 1 mng n phn t. Cc
phn t ch c th so snh == hoc !=
Gi :

Chia mng thnh 2 mng con

15

Gim tr
Trng hp c bit ca chia tr
p dng cho cc bi ton tm kim

Tm im chia ct
Ty theo iu kin (v d: =, <, >) m chn
phn x l ph hp

Ch :

Qu trnh chia ct s dng khi khng cn g


chia
Phi kim tra iu kin trc khi chia ct

16

V d
Tm kim nh phn trn mt dy sp xp

Tm phn t c gi tr x trong mng n phn t. Phn t


u tin c v tr 1. Tr v v tr tm thy, nu khng tm
thy tr v 0

K thut gim tr

Tm phn t gia
So snh x vi phn t gia
Nu bng nhau Tr v v tr gia
Nu x nh hn Tm na tri
Nu x ln hn Tm na phi
Tr v 0

17

K thut quay lui ( tng)


Gii bi ton ti u

Tm mt li gii ti u trong s cc li gii


Mi li gii gm thnh n thnh phn.
Qu trnh xy dng mt li gii c xem nh
qu trnh tm n thnh phn. Mi thnh phn
c tm kim trong 1 bc.

Cc bc phi c dng ging nhau.


mi bc, ta c th d dng chn la mt
thnh phn.

Sau khi thc hin n bc ta c 1 li gii

18

K thut quay lui (phng php)


Phng php

Vt cn (brute force)

Tm ht tt c cc li gii
phc tp thi gian ly tha

Nhnh cn (branch and bound)

Ch tm nhng li gii c li
Ci tin thi gian thc hin

19

Vt cn ( tng)
tng:

Gn ging chia tr nhng xy dng li gii t di ln trong


khi chia tr l phn tch t trn xung

Mt phng n/li gii C:


Gm n thnh phn C[1], C[2], , C[n]
mi bc i, c mt s la chn cho thnh phn i.

Chn mt gi tr no cho thnh phn i


Gi quy tm thnh phn i + 1
Hy b s la chn, quay lui li bc 1 chn gi tr khc cho
thnh phn i

. Ch :

Qu trnh quy kt thc khi i > n


Khi tm c li gii, so snh vi cc li trc chn li
gii ti u

20

Vt cn (phn tch)

Bc i tm thnh phn
th i ca li gii C

La chn 1
La chn 2

Bc i+1

C[i] = 1

Bc i:

Bc i+1

C[i] = 2

La chn k

Bc i+1

C[i] = k

21

Vt cn (gii thut)
search(int i) {
if (i > n)
Kiem tra, so snh li gii vi cc
li gii hin c Li gii ti u
else {
for (j la chn c th c ca bc i) {
C[i] = j; //La chn p/a j cho bc i
search(i + 1); //Gi quy
C[i] = null; //Hy b la chn
}
}
}

22

V d: bi ton 8 hu
Vn :

Bn c vua c kch thc 8x8


t 8 con hu sao cho chng khng n nhau

23

V d: bi ton 8 hu

24

V d: bi ton 8 hu

25

Vt cn (gii thut)
try(int i) {
for k=1:m {
cur_pos = k
if (safe(cur_pos)) {
save(cur_pos)
if (i < n)
try(i+1)
else
print(solution)
cancel(cur_pos)
}
}
}

26

Nhnh cn
Ci tin gii thut quay lui vt cn

Ti mi bc, ta s xem xt xem c nn i bc


k tip na hay khng
Vic xem xt da trn khi nim cn ca bc
hin hnh

27

Vt cn vs Nhnh cn
Vt cn
else {
for (j LC ca i){
C[i] = j;
search(i + 1);
C[i] = null;
}
}

Nhnh cn
else {
for (j LC ca i)
tnh cn cho LC j
S. xp cc LC theo cn
for (j LC ca i) {
if (cn ca j cn tt) {
c[i] = j;
search (i + 1);
C[i] = null;
}
}
}

28

K thut hu n (greedy)
Mc ch:

Tm mt li gii tt trong thi gian chp nhn c (


phc tp a thc thay v ly tha)

tng

Chia qu trnh tm li gii thnh nhiu bc nh k thut


quay lui

Vi mi bc

Sp xp cc la chn cho bc theo th t no c


li (tng dn hoc gim dn ty theo cch lp lun)
Chn la chn tt nht ri i tip bc k (khng quay
lui)

29

V d
My rt tin ATM:

Loi giy: 100.000 vn, 50.000 vn, 20.000 vn


v 10.000 vn.
Mi loi tin u c s lng khng hn ch.
Khch hng cn rt mt s tin n vn (tnh chn
n 10.000 vn, hay n chia ht cho 10.000).
Phng n tr tin sao cho tr n vn v s t
giy bc phi tr l t nht.

30

V d my rt tin ATM (tt)


My rt tin ATM:

Gi X = (X1, X2, X3, X4) l mt phng n tr tin.


X1 l s t giy bc 100.000 vn, X2 l s t giy bc
50.000 vn, X3 l s t giy bc 20.000 vn v X4 l
s t giy bc 10.000 vn.
Mc tiu l X1 + X2 + X3 + X4 t nh nht vi rng
buc l:
X1*100.000+X2*50.000+X3*20.000+X4*10.000 = n

tng:

(X1 + X2 + X3 + X4) nh nht th cc t giy bc


mnh gi ln phi c chn nhiu nht :-))

31

V d my rt tin ATM (tt)


tng:

(X1 + X2 + X3 + X4) nh nht th cc t giy bc


mnh gi ln phi c chn nhiu nht :-))
Trc ht ta chn ti a cc t giy bc 100.000 vn,
X1 l s nguyn ln nht sao cho X1 * 100.000 n.
S tin cn rt cn li l n X1 * 100000
Chuyn sang chn loi giy bc 50.000 ng, v c
tip tc nh th cho cc loi mnh gi khc, v.v.

32

Quy hoch ng
Mc ch:

Ci tin thut ton chia tr hoc quay lui vt cn


gim thi gian thc hin

tng:

Lu tr cc kt qu ca cc bi ton con trong BNG


QUY HOCH (c ch caching)
i b nh ly thi gian (trade memory for time)

Thit k gii thut bng k thut Quy hoch ng

Phn tch bi ton dng k thut chia tr/quay lui

Chia bi ton thnh cc bi ton con


Tm quan h gia KQ ca bi ton ln v KQ ca cc
bi ton con (cng thc truy hi)

Lp bng quy hoch

33

Quy hoch ng
Lp bng quy hoch

S chiu = s bin trong cng thc truy hi


Thit lp quy tc in kt qu vo bng quy hoch

in cc khng ph thuc trc


in cc ph thuc sau

Tra bng tm kt qu (thng ch tm c gi tr)


Ln vt trn bng tm li gii ti u

34

V d: tnh t hp
T hp:

C(n,k) = 1 nu (n=k) hoc k=0


C(n,k) = C(n-1, k-1) + C(n-1, k)
C(4,2)

C(3,1)

C(2,0)

C(3,2)

C(2,1)

C(2,1)

C(2,2)

35

V d: tnh t hp
phc tp gii thut quy:

T(n) l thi gian tnh s t hp chp k ca n,


th ta c phng trnh quy:
T(1) = C1
T(n) = 2T(n-1) + C2
=> Vy phc tp qu ln: T(n) = O(2n)

36

V d: tnh t hp
Quy hoch ng: T(n) = O(n2)
k

0
1
2
3
4

0
1
1
1
1
1

1
2
3
4

1
3
6

1
4

37

Chia tr vs quy hoch ng


Chia tr

Quy hoch ng

tng
Phn r thnh cc bi ton con tng tng:
Phn r thnh cc bi ton con
Tng hp kt qu
Tm mi quan h
Gii thut:
Gii thut:Gii thut:
quy t trn xung
Lp bng quy hoch v gii t
phc tp thi gian ln nu
di ln
c nhiu bi con ging nhau
phc tp thi gian nh
Khng cn lu tr kt qu
hn nh s dng bng quy
ca tt c cc bi ton con
hoch
Cn b nh lu tr bng
quy hoch

38

Kt hp quy hoch ng v quy


S dng bng quy hoch lu kt qu bi ton con
Khng cn in ht tt c bng quy hoch

in bng quy hoch theo yu cu

Bt u t bi ton gc
Nu trong bng quy hoch cha c KQ, gi quy tm kt
qu v lu kt qu vo bng quy hoch
Nu KQ c trong bng quy hoch, s dng ngay kt qu
ny

C th s dng bng bm lu tr bng quy hoch

39

Kt lun
Mi k thut ch ph hp vi 1 hoc 1 s loi bi ton
Mi k thut u c u v khuyt im, khng c k
thut no l tr b bnh

K thut nhnh cn cn phi c cch c lng cn


tt mi mong ct c nhiu nhnh
Quy hoch ng ch tt khi s lng bi ton con cn
phi gii l a thc (n, n2 hoc n3)
K thut vt cn c phc tp thi gian qu cao
(ly tha)

Ch dng khi n nh hoc khi khng cn cch no khc

You might also like