nhanh can.pdf
TRANSCRIPT
-
Quy Quay Lui
Nhnh Cn
Trainer: Thien Nguyen
16/09/2012
-
Tng quan quy (Recursion )
Quay Lui (Backtracking)
Nhnh Cn (Branch-and-Bound)
2
-
1. quy
quy l g?
Cu trc
Chng trnh con quy
3
-
1. quy quy l g?
Mt khi nim X c nh ngha theo quy nu trong nh ngha X c s dng ngay chnh khi nim X.
VD:
+ B m ti l t tin ca ti.
B m ca t tin ti cng l t tin ca ti.
4
-
1. quy Cu trc:
Mt khi nim qui cn bn gm hai phn.
+ Phn c s: nh ngha vi trng hp n gin nht, khng gi li chnh n.
+ Phn qui: nh ngha cc trng hp cn li, v gi li chnh khi nim ang nh ngha.
5
-
1. quy Cu trc:
VD:
+ 0 l s t nhin.
+ n l s t nhin nu n-1 l s t nhin.
6
-
1. quy Chng trnh con quy:
Mt chng trnh con qui cn bn gm hai phn.
+ Phn c s: thc hin cc thao tc vi i s c bn v khng gi li chnh n.
+ Phn qui: thc hin cc cu lnh m trong c t nht mt ln gi li chnh n vi i s n gin hn.
7
-
1. quy Chng trnh con quy:
VD:
int giaithua(int n)
{
if (n == 0)
return 1;
else
return n * giaithua(n-1);
}
8
-
2. Quay Lui: Khi nim
Bn Cht
Phng php
M gi
9
-
2. Quay Lui: Khi nim:
Quay lui (ting Anh: backtracking) l mt chin lc tm kim li gii cho cc bi ton tha mn rng buc.
Ngi u tin ra thut ng ny (backtrack) l nh ton hcngi M D. H. Lehmer vo nhng nm 1950.
-Wikipedia-
10
-
2. Quay Lui: Khi nim:
Quay lui l mt chin lc tm kim li gii cho cc bi ton m nghim ca n l mt hay mt tp cu hnh tha mn ng thi 2 tnh cht P v Q.
+ P: Cch xc nh mt cu hnh
+ Q: Tnh dng ca bi ton.
Cu hnh l mt tp v = (v1, v2, , vn), vi vi thuc tp D cho trc.
11
-
2. Quay Lui: Khi nim:
VD:
Lit k tt c cc hon v ca tp gm n s t nguyn dng u tin theo th t t in.
N = 3:
123, 132, 213, 231, 312, 321
12
-
2. Quay Lui: Bn cht:
Bn cht ca Quay lui l mt qu trnh tm kim theo chiu su (Depth-First Search).
13
-
2. Quay Lui: Phng php:
Gi s v = (v1, v2, , vn) l cu hnh cn tm, hin ti tm c k-1 phn t ca v l v1, v2, , vk-1.
Ta tm phn t th k bng cch duyt ht tt c cc kh nng c th ca vk, vi mi kh nng i kim tra xem c th chp nhn c khng (tha mn P). C 2 kh nng:
14
-
2. Quay Lui: Phng php (t.t):
Kim tra vk tha P. C 2 kh nng:
+ Nu vk tha P, kim tra Q. Nu tha Q (k dng) th ta dng tm kim v xut kt qu. Ngc li tip tc tm vk+1.
+ Nu sao cho vk+1 = i tha P (ng ct), ta
quay li bc xc nh vk-1.
15
-
2. Quay Lui: M gi:
Try(k){
For ([mi phng n chn ])
If ([Chp nhn i]){
[Chn i cho vk];
If ([Thnh cng]) [Thng bo kq];
else Try(k+1);
[Hy chn i cho vk];
}
}
16
-
2. Quay lui VD1: Lit k cc hon v ca cc s t nhin 1..N
Xy dng cc khi nim trong gii thut
- Try(k): Tm thnh phn th k ca hon v
- Tp gi tr ca tng phn t: D = {1,2,,N}
- Chp nhn c i: Khi i cha c chn trc .
- Thc hin bc chn: nh du i chn cho vk.
- Thnh cng: khi chn c thnh phn th k = N
- Thng bo kt qu: Hin th N s ca hon v
- Hy chn: nh du i cha c chn.
17
-
2. Quay lui VD2: Lit k cc cch xp N qun hu ln bn c NxN sao cho khng c hai
qun hu no n nhau.
Xy dng cc khi nim trong gii thut
- Try(k): Tm v tr dng t qun hu ct th k
- Phng n chn: i = 1, , N
- Chp nhn c i: Khi i c chn trc vo (i,j) khng cng nm trn mt ng cho vi bt k no chn trc .
- Thc hin bc chn: nh du i chn v ct, hng, ng cho cha n t qun hu.
- Thnh cng: khi chn c thnh phn th k = N
- Thng bo kt qu: Hin th s dng theo th t ct tng dn
- Hy chn: nh du i cha c chn.
18
-
Nhnh Cn Nhnh Cn l g?
Phng Php
Mt s v d
M gi
19
-
Nhnh Cn Nhnh Cn l g?
Nhnh cn trong Quay lui:
+ l mt k thut nh gi vic tip tc o su c to ra cu hnh tt hn cu hnh tt nht m ta lu tr hay khng.
+ Nh c Nhnh cn m ta c th a ra quyt nh quay lui sm hn thut ton backtracking c in.
20
-
Nhnh Cn Phng Php
T thut ton backtracking c in, khi xc nh iu kin P (iu kin xc nh cu hnh c), ta s dng thm mt hm nh gi f(v1, v2,, vk-1) xc nh vic i tip c hy vng tm ra li gii hay khng.
21
-
Nhnh Cn VD: Bi ton ngi giao hng
- Mt ngi cn phi giao hng ti N thnh ph T1, T2,
, Tn
- Cij: chi ph i t thnh ph Ti n thnh ph Tj
(i=1,2,,N; j = 1,2,,N)
- Yu cu: xc nh hnh trnh tha mn
+ i qua tt c cc thnh ph, mi thnh ph qua
ng 1 ln, ri quay tr li thnh ph xut pht.
+ Chi ph nh nht
22
-
Nhnh Cn VD: Bi ton ngi giao hng
Nhnh cn:
Lu 1 cu hnh BEST_CONFIG
t Cmin=Min{Cij: i,j={1,..,n}}
Gi s i on ng T1->T2->->Ti vi chi ph: Si=C1,x2+Cx2,x3++Cxi-1,xi
S thnh ph cha i qua: (n-i+1) thnh ph.
Nh vy, i tip ta s tn chi ph Cremain > Cmin * (n-i+1)
Hm cn: f(x1=1,,xi) = Si+(n-i+1)Cmin
23
-
Nhnh Cn M gi Try(k){
For ([mi phng n chn ])
If ([Chp nhn i]){
[Chn i cho vk];
if (Cn hy vng tm ra c.hnh tt hn BEST_CONFIG)
{
If ([Thnh cng]) [Thng bo kq];
else Try(k+1);
[Hy chn i cho vk];
}
}
}
24
-
Cm n cc bn ch lng nghe
Trainer: Thien Nguyen