Chng 8 Phng php sinh v Thut ton quay lui.
Mc tiu Gii thch c sinh d liu l g. Bit s dng mt s gii thut sinh. Bit s dng gii thut quay lui gii mt s bi ton.
2
Ni dung n tp Bi ton t hp Phng php sinh Thut ton quay lui
3
n tp Hm quy l hm m trong thn hm li gi chnh n. Hm quy km hiu qa v: tn b nh va gi hm qa nhiu ln. Tuy nhin vit hm quy rt ngn gn.Tuy nhin nhiu gii thut vn phi dng k thut quy v vic kh quy khng d dng. Vng lp v stack l nhng k thut gip kh gii thut quy.4
8.1- Bi ton t hp C n bin x1, x2, x3, ..., xn Mi bin xi c th mang tr thuc v 1 tp hp Pi Min ca bi ton l tp tch P1 x P2 x P3 x ... x Pn Php gn tr (assignment): L mt b tr a1, a2, a3, ..., an Trong a1 ai Pi Mt li gii ca bi ton l 1 php gn tr. Mt php gn tr c gi l mt cu hnh.5
Bi ton t hp V d: C 3 nhn vin bo v lm 3 ca sng, chiu ti. Trong 1 ca ch c 1 bo v. Hi cc cch b tr cc bo v? M ha bi ton: {x, y, z} l tp bin c th t m t cho 3 ca :sng, chiu, ti theo th t. Min tr ca 3 bin l { a,b,c } m t cho 3 bo v.
Cc php gn x y z a b c a c b b a c b c a c a b c b aS li gii l s hon v ca tp hp 3 phn t ny: 3*2*1 = 3! = 6.
Bi ton lit k cc hon v ca mt tp hp n phn t c th t c phc tp n!6
Bi ton t hp V d: Tm s chui c di 3 k t xyz vi x { a,b,c}, y { d,e}, z { m,n,t} Nhn xt: 3 bin c 3 min tr khc nhaux a a a a a a b b b b b b c c c c c c y d d d e e e d d d e e e d d d e e e z m n t m n t m n t m n t m n t m n t
S php gn: 3 * 2 * 3 = 18 Tch ca cc s phn t ca cc min tr
phc tp: nm vi n: s phn t trung bnh ca mi min tr, m: l s min tr7
Bi ton t hpBi ton t hp c phc tp l n! hoc nm
Lm th no to ra cc php gn tr ? Phng php sinh.8
8.2- Phng php sinh (Generating)
9
8.2.1- nh ngha Sinh: To ra d liu. Phng php sinh: T d liu ban u, sinh ra d liu k tip cho n khi kt thc. Dng gii quyt bi ton lit k ca l thuyt t hp. iu kin ca thut ton sinh: (1) C th xc nh 1 th t tp cc cu hnh ca t hp (th t ca cc php gn tr, thng dng th t t in). (2)C mt cu hnh cui (iu kin kt thc ca gii thut). (3) C mt cch suy ra c cu hnh k tip.10
Th t t in S1=1234589 S2=1235789 S1 < S2 nu c 1 v tr i ti S1[ i ] < S2[ i ]
11
8.2.2- Mt v dBi ton:Tm s chui c di 3 k t xyz vi x { a,b,c}, y { d,e}, z { m,n,t}Cu hnh ban u: tr u tin ca mi min tr Cch sinh:Ly tr kt tip ca mi min tr theo c ch vng trn Cu hnh cui: tr cui cng ca mi min tr
x a a a a a a b b b b b b c c c c c c
y d d d e e e d d d e e e d d d e e e
z m n t m n t m n t m n t m n t m n t
Dng th t t in so snh cc php gn tr. V d: adm < adn
12
8.2.3- Thut ton sinh tng qut.Procedure Generate Begin c = InitialConfigure; //cu hnh ban u Process (c); // x l cu hnh ang c if c=LastConfigure then Stop:=true else stop := false; while (not stop) do Begin//Sinh cu hnh k tip t cu hnh ang c
c=getNextConfigure(c); Process (c); // x l cu hnh nyif c= LastConfigure then stop = true;
End; End;
13
8.2.4- Bi ton chui 3 k t
14
Bi ton chui 3 k t...
15
Bi ton chui 3 k t...Bi ton:Tm s chui c di 3 k t xyz vi x { a,b,c}, y { d,e}, z { m,n,t}
16
8.2.5- Bi ton lit k cc tp con ca 1 tp gm n phn t M ha tp bin: Tp bin gm n bin k t theo th t cc phn t mng n k t. Min tr ca mi bin {0, 1}. 0 m t cho tnh hung phn t ny khng c trong tp con, 1: m t cho tnh hung phn t ny c mt trong tp con. Vi tp cha l 4 phn t X={ a, b, c, d }, c th dng mng 0111 m t cho tp con { b,c,d }. Mi tp con c biu din l mt chui (xu) nh phn. Trng thi khi to: 0000 mang ngha tp trng. Trng thi kt thc: 1111 mang ngha l tp cha.17
Bi ton lit k cc tp con.... Vi tp cha gm 4 phn t, c 24 tp con b vi cc biu din:vars 0000 0001 0010 0011 0100 0101 0110 0111 p(b) 0 1 2 3 4 5 6 7 vars 1000 1001 1010 1011 1100 1101 1110 1111 p(b) 8 9 10 11 12 13 14 15Vi th t t in, tp con sau ln hn tp con trc 1 n v theo cch tnh chui nh phn
18
Bi ton lit k cc tp con.... Cch cng thm 1 vo chui nh phn:0000 0001 0011 0111 0001 0010 0100 1000 Gi i : v tr bit 0 u tin t bn phi. Cho cc bit 1 bn phi v tr i thnh 0 Cho bit i mang tr 1i= n-1;while (i>=0 && vars[i]==1) vars[i--] = 0; vars[i] = 1;19
Bi ton lit k cc tp con....
20
Bi ton lit k cc tp con....
Thm dng: Stop = LastConfigure(vars,n);
Thm dng: delete[ ] vars;21
Bi ton lit k cc tp con....
22
Bi ton lit k cc tp con.... Nhn xt: C th ti u li chng trnh bt i cc vng lp.
23
Bi ton lit k cc tp con....
Kt hp vic tm cu hnh k vi vic kim tra ngng lp
24
Bi ton lit k cc tp con....
Thm dng: delete[ ] vars;
25
Bi tp Vit chng trnh lit k cc tp con ca tp { a,b,c,d,e,f,g,h } Xut theo dng [] [a] [a,b] ...26
8.2.6- Bi ton tp con k-phn t Lit k cc tp con k phn t ca tp n phn t. V d: Cc tp con 3 phn t ca tp { 1,2,3,4,5 } l: C53 = 5!/ (3! * (5-3)!) { 1,2,3 } { 2,3,4 } = 5! / (3! * 2!) { 1,2,4 } { 2,3,5 } = 4*5/2 = 10 { 1,2,5 } { 2,4,5 } { 1,3,4 } { 3,4,5 } { 1,3,5 } T hp n chp k { 1,4,5 }27
Bi ton tp con k-phn t nh x tp hp bt k n phn t vo tp X={ 1,2...n } Mt tp con k phn t ca X l mt b c th t a1 a2 a3 ..... ak vi 1 a1< a2 < a3 a[k]) k--; Hon v a[j] vi a[k] 1432 Lt ngc on aj+1 ... an 1 4 2 3 trng thi k tip36
Bi ton hon v{1,2,3,4,5,..., n} {n,..., 5,4,3,2,1}
37
Bi ton hon v
Tm ch s ln nht j m aj a[j]
Hon v a[j], a[k]o ngc nhm tr a[j+1],... a[n]
38
Bi ton hon v
Thm dng: delete[ ] vars;
39
Bi ton hon v - Kt qa
4!= 24 hon v
40
Bi tp To file vn bn hoanvi.out c dng Dng u: 1 s nguyn n Cc dng sau l cc hon v ca tp n phn t. V d: 5 12345 12354 12435 ............41
8.2.8- Bi ton chia 1 s nguyn thnh tng cc s nguyn b hn V d: n=7 Cc kt qaTrng thi u: 1 tr l n
Cch chia: S trc >= s sau. Ngc th t t in Ti 1 thi im, s phn t l k Bt u: k=1, kt thc: k=n
Trng thi cui: dy n cc s 1
7 61 52 511 43 421 4111 331 322 3211 31111 2221 22111 211111 111111142
Bi ton chia s nguynn= 20 , trng thi k=15 541111111111111 //s phi gim l 4, s u tin >1 t bn phi, v tr i=2 vi ch s i t 1, gim tr ny 1 n v 5 3 // s tr phi chia li l 14 = s tr 1 bn phi +1= ki+1=15-2+1=14 S s chia ra i t a[2]=3, 14/3 c 4 ln tr thm vo l 3, d 2 5 3 3 3 3 3 ( k=i+SLnBngTr) 5 3 3 3 3 3 2 //thm phn d vo cui (k++) y chnh l trng thi k tip- xong43
Bi ton chia s nguyn
44
Bi ton chia s nguyn
45
Bi ton chia s nguyn
46
Bi ton chia s nguyn
Thm dng: delete[ ] vars;
47
Bi ton chia s nguyn
48
8.3-Thut ton quay lui (backtracking) Khng phi cu hnh no cng c sinh ra t cu hnh trc mt cch d dng. Phng php sinh k tip ch gii quyt c cc bi ton n gin. Khng phi cu hnh ban u v cu hnh k tip c nhn din mt cch d dng, nhiu khi phi chng minh l tn ti chng. Vi bi ton lit k phc tp, thut ton backtracking c p dng49
backtracking- tng Tp bin x1 x2 x3 ... xn c th t. Mi bin c th c 1 min tr ring. Ti mi thi im, bin xi c tm tr ph hp. Nu tm c tr ph hp th tip tc sang bin xi+1 Ngc li, tm tr khc cho bin xi-150
Backtracking- Nhn xt Phi ghi nh cc bc i qua c th li v trng thi trc C ch stack K thut quy rt ph hp. Nu lu tr c cc kh nng (tr ca min tr) c th th s trnh c nhng vic lp khng cn thit.
51
Backtracking- Gii thut tng qutTp bin X= (x1 x2 x3 ... xn), s bin n Tp min tr D =(D1 D2 D3 ... Dn) void Try ( int i, X , n) { j Di { if ( acceptable(xi, j)) { xi = j; if (i==n) Process (CuHnhCa X) else Try (i+1, X, n) } } }52
Gii thut tng qutx1 x2 x3 x4
Bt u
for j= Tru ... TrCui ca Di.........
D1
D2
D3
D453
Gii thut tng qutBt u
for j= Tru ... TrCui ca Di ...
x1x2 x3 x4Mt kt qu
D1 ( 2pt)D2 (2pt) D3 (2pt) D4 ( 3pt)
54
8.3.1-Bi ton chui bit Tp bin: char vars[], int n bit Nhn xt: Min tr chung D={0, 1} Bit no cng c chp nhn Khng cn kim tra acceptable(xi ,j)
55
Bi ton chui bit
Thm dng: delete[ ] vars;56
Bi ton chui 4 bitBit 1 0 2 0 3 0 4 0 0000 1 0001 1 0 0010
1 00111 0 0 0100 1 0101 1 0 0110 1 0111 1 0 0 0 1000 1 1001 1 0 1010 1 1011 1 0 0 1100 1 1101 1 0 1110 1 1111 57
8.3.2-Bi ton lit k tp con k phn t ca tp n phn t
Thm dng: delete[ ] result;
58
8.3.3- Bi ton hon v Lit k cc hon v ca mt tp n phn t Mt hon v c biu din dng p1p2p3...pn vi pi pj vi i j, mi pi s nhn tr t 1 .. n. Mt tr j c gn cho pi nu tr j ny cha c dng Cn qun l tr j ny dng hay cha mng B, n phn t B[j] mang tr TRUE m t rng tr j cha c dng Ban u mi B[j]= TRUE.59
Bi ton hon v Khi gn tr j cho pi, xong phi cho B[j]=FALSE. Sau khi thc hin xong mt li gii (i==n) ( hay sau khi thc thi xong vic th cho pi+1 i ht tp bin) phi tr li B[j]= TRUE dng cho ln sau.
60
Bi ton hon v
61
Bi ton hon v
62
Bi tp Lm li cc bi mu v gii thut quay lui nhng ghi kt qa ln file.
63
Bi tp Dng gii thut quay lui sinh ra cc mng Result t mt ma trn m (hxc) cc s nguyn sao cho: ma trn c h hng th mng c h phn t, tr ca Result[i] l mt tr ca dng m[i]. Hng dn: - Tp bin: mng h phn t kiu int int* Result; - Min tr ca Result[i] l m[i]64
Bi tp
Gi hm:
65
Tm tt K thut sinh: (1) Xc nh trng thi u ca bi ton. (2) Xc nh trng thi kt thc. (3) Xc nh mt th t cho cc trng thi. (4) Tm gii thut i t trng thi ny sang trng thi khc.
66
Tm tt Gii thut hi quy- backtracking (1) Ti 1 thi im, ch xt bin th i ca tp bin (2) Vi mi tr j trong min tr ca bin ny 2.1- Nu chn c 1 tr hp l th Gn xi = j X l bin v tr i+1
Nu i=0 th bi ton khng c li gii.
67
Tm tt Bi ton t hp c phc tp n! hoc nm vi n l s bin, m l s phn t trung bnh ca cc min tr ca cc bin. Vi n,m ln, nu phi xt ht mi kh nng th bi ton kh kh thi bng my tnh v chi ph qa cao.
68