8 - PP Sinh Va TT Quay Lui

Embed Size (px)

Citation preview

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