Giai thuat lap_trinh_-_le_minh_hoang

  • Upload
    tien-le

  • View
    466

  • Download
    7

Embed Size (px)

Citation preview

  • 1. L MINH HONG(A.K.A DSAP Textbook)i hc S phm H Ni, 1999-2002

2. Try not to become a man of successbut rather to become a man of value. Albert Einstein 3. iMC LCPHN 1. BI TON LIT K ......................................................................... 11. NHC LI MT S KIN THC I S T HP ................................................................2 1.1. CHNH HP LP ....................................................................................................................................... 2 1.2. CHNH HP KHNG LP........................................................................................................................ 2 1.3. HON V .................................................................................................................................................... 2 1.4. T HP....................................................................................................................................................... 32. PHNG PHP SINH (GENERATION) ....................................................................................4 2.1. SINH CC DY NH PHN DI N................................................................................................... 5 2.2. LIT K CC TP CON K PHN T ..................................................................................................... 6 2.3. LIT K CC HON V ........................................................................................................................... 83. THUT TON QUAY LUI ..........................................................................................................12 3.1. LIT K CC DY NH PHN DI N ........................................................................................... 12 3.2. LIT K CC TP CON K PHN T ................................................................................................... 13 3.3. LIT K CC CHNH HP KHNG LP CHP K ............................................................................. 15 3.4. BI TON PHN TCH S .................................................................................................................... 17 3.5. BI TON XP HU .............................................................................................................................. 194. K THUT NHNH CN ...........................................................................................................24 4.1. BI TON TI U.................................................................................................................................. 24 4.2. S BNG N T HP............................................................................................................................ 24 4.3. M HNH K THUT NHNH CN.................................................................................................... 24 4.4. BI TON NGI DU LCH ................................................................................................................. 25 4.5. DY ABC ................................................................................................................................................. 27PHN 2. CU TRC D LIU V GII THUT ..................................... 331. CC BC C BN KHI TIN HNH GII CC BI TON TIN HC .........................34 1.1. XC NH BI TON............................................................................................................................ 34 1.2. TM CU TRC D LIU BIU DIN BI TON ............................................................................. 34 1.3. TM THUT TON ................................................................................................................................. 35 1.4. LP TRNH .............................................................................................................................................. 37 1.5. KIM TH................................................................................................................................................ 37 1.6. TI U CHNG TRNH ...................................................................................................................... 382. PHN TCH THI GIAN THC HIN GII THUT ...........................................................40 2.1. GII THIU.............................................................................................................................................. 40 2.2. CC K PHP NH GI PHC TP TNH TON............................................................. 40 2.3. XC NH PHC TP TNH TON CA GII THUT ............................................................ 42 2.4. PHC TP TNH TON VI TNH TRNG D LIU VO....................................................... 45 2.5. CHI PH THC HIN THUT TON.................................................................................................... 46 4. ii3. QUY V GII THUT QUY ......................................................................................... 50 3.1. KHI NIM V QUY ........................................................................................................................50 3.2. GII THUT QUY.............................................................................................................................50 3.3. V D V GII THUT QUY ..........................................................................................................51 3.4. HIU LC CA QUY .......................................................................................................................554. CU TRC D LIU BIU DIN DANH SCH.................................................................... 58 4.1. KHI NIM DANH SCH ......................................................................................................................58 4.2. BIU DIN DANH SCH TRONG MY TNH ....................................................................................585. NGN XP V HNG I ........................................................................................................ 64 5.1. NGN XP (STACK)...............................................................................................................................64 5.2. HNG I (QUEUE)...............................................................................................................................666. CY (TREE).................................................................................................................................. 70 6.1. NH NGHA............................................................................................................................................70 6.2. CY NH PHN (BINARY TREE) .........................................................................................................71 6.3. BIU DIN CY NH PHN ..................................................................................................................73 6.4. PHP DUYT CY NH PHN ..............................................................................................................74 6.5. CY K_PHN ..........................................................................................................................................76 6.6. CY TNG QUT...................................................................................................................................777. K PHP TIN T, TRUNG T V HU T ....................................................................... 79 7.1. BIU THC DI DNG CY NH PHN .........................................................................................79 7.2. CC K PHP CHO CNG MT BIU THC....................................................................................79 7.3. CCH TNH GI TR BIU THC ........................................................................................................79 7.4. CHUYN T DNG TRUNG T SANG DNG HU T...................................................................83 7.5. XY DNG CY NH PHN BIU DIN BIU THC......................................................................868. SP XP (SORTING) .................................................................................................................. 88 8.1. BI TON SP XP................................................................................................................................88 8.2. THUT TON SP XP KIU CHN (SELECTIONSORT) ...............................................................90 8.3. THUT TON SP XP NI BT (BUBBLESORT)...........................................................................91 8.4. THUT TON SP XP KIU CHN (INSERTIONSORT) ................................................................91 8.5. SP XP CHN VI DI BC GIM DN (SHELLSORT) .....................................................93 8.6. THUT TON SP XP KIU PHN ON (QUICKSORT) ............................................................94 8.7. THUT TON SP XP KIU VUN NG (HEAPSORT) ..............................................................101 8.8. SP XP BNG PHP M PHN PHI (DISTRIBUTION COUNTING)......................................104 8.9. TNH N NH CA THUT TON SP XP (STABILITY) .........................................................105 8.10. THUT TON SP XP BNG C S (RADIX SORT) .................................................................106 8.11. THUT TON SP XP TRN (MERGESORT)..............................................................................111 8.12. CI T ...............................................................................................................................................114 8.13. NH GI, NHN XT......................................................................................................................1229. TM KIM (SEARCHING) ....................................................................................................... 126 9.1. BI TON TM KIM ...........................................................................................................................126 9.2. TM KIM TUN T (SEQUENTIAL SEARCH) ...............................................................................126 9.3. TM KIM NH PHN (BINARY SEARCH)........................................................................................126 9.4. CY NH PHN TM KIM (BINARY SEARCH TREE - BST).........................................................127 5. iii 9.5. PHP BM (HASH)............................................................................................................................... 132 9.6. KHO S VI BI TON TM KIM ................................................................................................ 132 9.7. CY TM KIM S HC (DIGITAL SEARCH TREE - DST)............................................................ 133 9.8. CY TM KIM C S (RADIX SEARCH TREE - RST) .................................................................. 136 9.9. NHNG NHN XT CUI CNG ...................................................................................................... 141PHN 3. QUY HOCH NG .................................................................... 1431. CNG THC TRUY HI ..........................................................................................................144 1.1. V D ...................................................................................................................................................... 144 1.2. CI TIN TH NHT........................................................................................................................... 145 1.3. CI TIN TH HAI............................................................................................................................... 147 1.4. CI T QUY ................................................................................................................................. 1472. PHNG PHP QUY HOCH NG ...................................................................................149 2.1. BI TON QUY HOCH ..................................................................................................................... 149 2.2. PHNG PHP QUY HOCH NG ................................................................................................ 1493. MT S BI TON QUY HOCH NG ............................................................................153 3.1. DY CON N IU TNG DI NHT ........................................................................................... 153 3.2. BI TON CI TI............................................................................................................................... 158 3.3. BIN I XU ...................................................................................................................................... 160 3.4. DY CON C TNG CHIA HT CHO K............................................................................................ 164 3.5. PHP NHN T HP DY MA TRN............................................................................................... 169 3.6. BI TP LUYN TP........................................................................................................................... 172PHN 4. CC THUT TON TRN TH .......................................... 1771. CC KHI NIM C BN .......................................................................................................178 1.1. NH NGHA TH (GRAPH) .......................................................................................................... 178 1.2. CC KHI NIM................................................................................................................................... 1792. BIU DIN TH TRN MY TNH ..................................................................................181 2.1. MA TRN K (ADJACENCY MATRIX)............................................................................................. 181 2.2. DANH SCH CNH (EDGE LIST) ...................................................................................................... 182 2.3. DANH SCH K (ADJACENCY LIST) ............................................................................................... 183 2.4. NHN XT............................................................................................................................................. 1843. CC THUT TON TM KIM TRN TH ...................................................................186 3.1. BI TON .............................................................................................................................................. 186 3.2. THUT TON TM KIM THEO CHIU SU (DEPTH FIRST SEARCH)...................................... 187 3.3. THUT TON TM KIM THEO CHIU RNG (BREADTH FIRST SEARCH) ............................ 189 3.4. PHC TP TNH TON CA BFS V DFS ................................................................................ 1924. TNH LIN THNG CA TH ..........................................................................................193 4.1. NH NGHA ......................................................................................................................................... 193 4.2. TNH LIN THNG TRONG TH V HNG ........................................................................... 194 6. iv 4.3. TH Y V THUT TON WARSHALL ...........................................................................194 4.4. CC THNH PHN LIN THNG MNH ........................................................................................1975. VI NG DNG CA DFS v BFS ......................................................................................... 208 5.1. XY DNG CY KHUNG CA TH............................................................................................208 5.2. TP CC CHU TRNH C S CA TH......................................................................................211 5.3. BI TON NH CHIU TH ........................................................................................................211 5.4. LIT K CC KHP V CU CA TH......................................................................................2156. CHU TRNH EULER, NG I EULER, TH EULER ............................................. 219 6.1. BI TON 7 CI CU ..........................................................................................................................219 6.2. NH NGHA..........................................................................................................................................219 6.3. NH L .................................................................................................................................................219 6.4. THUT TON FLEURY TM CHU TRNH EULER...........................................................................220 6.5. CI T .................................................................................................................................................221 6.6. THUT TON TT HN......................................................................................................................2237. CHU TRNH HAMILTON, NG I HAMILTON, TH HAMILTON .................. 226 7.1. NH NGHA..........................................................................................................................................226 7.2. NH L .................................................................................................................................................226 7.3. CI T .................................................................................................................................................2278. BI TON NG I NGN NHT..................................................................................... 231 8.1. TH C TRNG S.........................................................................................................................231 8.2. BI TON NG I NGN NHT .................................................................................................231 8.3. TRNG HP TH KHNG C CHU TRNH M - THUT TON FORD BELLMAN .........233 8.4. TRNG HP TRNG S TRN CC CUNG KHNG M - THUT TON DIJKSTRA ...........235 8.5. THUT TON DIJKSTRA V CU TRC HEAP .............................................................................238 8.6. TRNG HP TH KHNG C CHU TRNH - SP XP T P..............................................241 8.7. NG I NGN NHT GIA MI CP NH - THUT TON FLOYD...................................244 8.8. NHN XT .............................................................................................................................................2469. BI TON CY KHUNG NH NHT ................................................................................... 251 9.1. BI TON CY KHUNG NH NHT ................................................................................................251 9.2. THUT TON KRUSKAL (JOSEPH KRUSKAL - 1956) ...................................................................251 9.3. THUT TON PRIM (ROBERT PRIM - 1957)....................................................................................25610. BI TON LUNG CC I TRN MNG...................................................................... 260 10.1. CC KHI NIM .................................................................................................................................260 10.2. MNG THNG D V NG TNG LUNG ............................................................................263 10.3. THUT TON FORD-FULKERSON (L.R.FORD & D.R.FULKERSON - 1962) .............................266 10.4. THUT TON PREFLOW-PUSH (GOLDBERG - 1986) ..................................................................270 10.5. MT S M RNG.............................................................................................................................27611. BI TON TM B GHP CC I TRN TH HAI PHA .................................... 283 11.1. TH HAI PHA (BIPARTITE GRAPH) .........................................................................................283 11.2. BI TON GHP I KHNG TRNG V CC KHI NIM .....................................................283 11.3. THUT TON NG M ...............................................................................................................284 11.4. CI T ...............................................................................................................................................285 7. v12. BI TON TM B GHP CC I VI TRNG S CC TIU TRN TH HAIPHA - THUT TON HUNGARI .................................................................................................291 12.1. BI TON PHN CNG .................................................................................................................... 291 12.2. PHN TCH .......................................................................................................................................... 291 12.3. THUT TON...................................................................................................................................... 292 12.4. BI TON TM B GHP CC I VI TRNG S CC I TRN TH HAI PHA....... 301 12.5. NNG CP........................................................................................................................................... 30113. BI TON TM B GHP CC I TRN TH.........................................................307 13.1. CC KHI NIM................................................................................................................................. 307 13.2. THUT TON EDMONDS (1965) ..................................................................................................... 308 13.3. THUT TON LAWLER (1973)......................................................................................................... 310 13.4. CI T ............................................................................................................................................... 312 13.5. PHC TP TNH TON............................................................................................................... 316TI LIU C THM.................................................................................. 319 8. vi HNH VHnh 1: Cy tm kim quay lui trong bi ton lit k dy nh phn .......................................................................13Hnh 2: Xp 8 qun hu trn bn c 8x8 ...............................................................................................................19Hnh 3: ng cho B-TN mang ch s 10 v ng cho N-TB mang ch s 0............................................20Hnh 4: Lu thut gii (Flowchart)...................................................................................................................36Hnh 5: K php ln, ln v ln ................................................................................................................41Hnh 6: Thp H Ni .............................................................................................................................................54Hnh 7: Cu trc nt ca danh sch ni n ..........................................................................................................59Hnh 8: Danh sch ni n ....................................................................................................................................59Hnh 9: Cu trc nt ca danh sch ni kp ..........................................................................................................61Hnh 10: Danh sch ni kp...................................................................................................................................61Hnh 11: Danh sch ni vng mt hng ..............................................................................................................61Hnh 12: Danh sch ni vng hai hng ...............................................................................................................62Hnh 13: Dng danh sch vng m t Queue ........................................................................................................67Hnh 14: Di chuyn toa tu....................................................................................................................................69Hnh 15: Di chuyn toa tu (2) ..............................................................................................................................69Hnh 16: Cy..........................................................................................................................................................70Hnh 17: Mc ca cc nt trn cy ........................................................................................................................71Hnh 18: Cy biu din biu thc ..........................................................................................................................71Hnh 19: Cc dng cy nh phn suy bin..............................................................................................................72Hnh 20: Cy nh phn hon chnh v cy nh phn y ...................................................................................72Hnh 21: nh s cc nt ca cy nh phn y biu din bng mng ........................................................73Hnh 22: Nhc im ca phng php biu din cy bng mng .......................................................................73Hnh 23: Cu trc nt ca cy nh phn.................................................................................................................74Hnh 24: Biu din cy bng cu trc lin kt .......................................................................................................74Hnh 25: nh s cc nt ca cy 3_phn biu din bng mng ......................................................................76Hnh 26: Biu din cy tng qut bng mng........................................................................................................77Hnh 27: Cu trc nt ca cy tng qut................................................................................................................78Hnh 28: Biu thc di dng cy nh phn ..........................................................................................................79Hnh 29: Vng lp trong ca QuickSort ................................................................................................................95Hnh 30: Trng thi trc khi gi quy ..............................................................................................................96Hnh 31: Heap......................................................................................................................................................102Hnh 32: Vun ng ..............................................................................................................................................102Hnh 33: o gi tr k[1] cho k[n] v xt phn cn li ........................................................................................103Hnh 34: Vun phn cn li thnh ng ri li o tr k[1] cho k[n-1] .................................................................103Hnh 35: nh s cc bit .....................................................................................................................................106Hnh 36: Thut ton sp xp trn.........................................................................................................................111 9. viiHnh 37: My Pentium 4, 3.2GHz, 2GB RAM t ra chm chp khi sp xp 108 kho [0..7.107] cho d nhng thut ton sp xp tt nht c p dng .............................................................................................. 123Hnh 38: Cy nh phn tm kim ......................................................................................................................... 128Hnh 39: Xa nt l cy BST ........................................................................................................................... 129Hnh 40. Xa nt ch c mt nhnh con trn cy BST ........................................................................................ 130Hnh 41: Xa nt c c hai nhnh con trn cy BST thay bng nt cc phi ca cy con tri............................ 130Hnh 42: Xa nt c c hai nhnh con trn cy BST thay bng nt cc tri ca cy con phi............................ 130Hnh 43: nh s cc bit ..................................................................................................................................... 133Hnh 44: Cy tm kim s hc............................................................................................................................. 133Hnh 45: Cy tm kim c s............................................................................................................................... 136Hnh 46: Vi di dy bit z = 3, cy tm kim c s gm cc kho 2, 4, 5 v sau khi thm gi tr 7............... 137Hnh 47: RST cha cc kho 2, 4, 5, 7 v RST sau khi loi b gi tr 7 ............................................................. 138Hnh 48: Cy tm kim c s a) v Trie tm kim c s b).................................................................................. 140Hnh 49: Hm quy tnh s Fibonacci .............................................................................................................. 151Hnh 50: Tnh ton v truy vt ............................................................................................................................ 154Hnh 51: Truy vt ................................................................................................................................................ 163Hnh 52: V d v m hnh th........................................................................................................................ 178Hnh 53: Phn loi th..................................................................................................................................... 179Hnh 54................................................................................................................................................................ 182Hnh 55................................................................................................................................................................ 183Hnh 56: th v ng i................................................................................................................................ 186Hnh 57: Cy DFS ............................................................................................................................................... 189Hnh 58: Cy BFS ............................................................................................................................................... 192Hnh 59: th G v cc thnh phn lin thng G1, G2, G3 ca n .................................................................. 193Hnh 60: Khp v cu.......................................................................................................................................... 193Hnh 61: Lin thng mnh v lin thng yu ...................................................................................................... 194Hnh 62: th y ........................................................................................................................................ 195Hnh 63: n th v hng v bao ng ca n............................................................................................. 195Hnh 64: Ba dng cung ngoi cy DFS ............................................................................................................... 199Hnh 65: Thut ton Tarjan b cy DFS .......................................................................................................... 201Hnh 66: nh s li, o chiu cc cung v duyt BFS vi cch chn cc nh xut pht ngc li vi th t duyt xong (th t 11, 10 3, 2, 1)........................................................................................................... 206Hnh 67: th G v mt s v d cy khung T1, T2, T3 ca n ....................................................................... 210Hnh 68: Cy khung DFS (a) v cy khung BFS (b) (Mi tn ch chiu i thm cc nh) ................................ 210Hnh 69: Php nh chiu DFS............................................................................................................................ 213Hnh 70: Php nh s v ghi nhn cung ngc ln cao nht ............................................................................. 215Hnh 71: M hnh th ca bi ton by ci cu ............................................................................................... 219Hnh 72................................................................................................................................................................ 220Hnh 73................................................................................................................................................................ 220Hnh 74................................................................................................................................................................ 226 10. viiiHnh 75: Php nh li ch s theo th t tp....................................................................................................241Hnh 76: Hai cy gc r1 v r2 v cy mi khi hp nht chng .............................................................................252Hnh 77: Mng vi cc kh nng thng qua (1 pht, 6 thu) v mt lung ca n vi gi tr 7............................260Hnh 78: Mng G v mng thng d Gf tng ng (k hiu f[u,v]:c[u,v] ch lung f[u, v] v kh nng thng qua c[u, v] trn cung (u, v)) ..............................................................................................................................264Hnh 79: Mng thng d v ng tng lung ....................................................................................................265Hnh 80: Lung trn mng G trc v sau khi tng.............................................................................................265Hnh 81: Mng gi ca mng c nhiu im pht v nhiu im thu..................................................................276Hnh 82: Thay mt nh u bng hai nh uin, uout .................................................................................................277Hnh 83: Mng gi ca mng c kh nng thng qua ca cc cung b chn hai pha ..........................................277Hnh 84: th hai pha ......................................................................................................................................283Hnh 85: th hai pha v b ghp M ...............................................................................................................284Hnh 86: M hnh lung ca bi ton tm b ghp cc i trn th hai pha...................................................288Hnh 87: Php xoay trng s cnh .......................................................................................................................292Hnh 88: Thut ton Hungari ...............................................................................................................................295Hnh 89: Cy pha mc ln hn sau mi ln xoay trng s cnh v tm ng................................................302Hnh 90: th G v mt b ghp M ..................................................................................................................307Hnh 91: Php chp Blossom...............................................................................................................................309Hnh 92: N Blossom d ng xuyn qua Blossom .....................................................................................309 11. ix CHNG TRNHP_1_02_1.PAS * Thut ton sinh lit k cc dy nh phn di n ....................................................................... 6P_1_02_2.PAS * Thut ton sinh lit k cc tp con k phn t .............................................................................. 8P_1_02_3.PAS * Thut ton sinh lit k hon v .................................................................................................... 9P_1_03_1.PAS * Thut ton quay lui lit k cc dy nh phn di n ............................................................... 12P_1_03_2.PAS * Thut ton quay lui lit k cc tp con k phn t...................................................................... 14P_1_03_3.PAS * Thut ton quay lui lit k cc chnh hp khng lp chp k ..................................................... 16P_1_03_4.PAS * Thut ton quay lui lit k cc cch phn tch s ...................................................................... 18P_1_03_5.PAS * Thut ton quay lui gii bi ton xp hu ................................................................................. 21P_1_04_1.PAS * K thut nhnh cn dng cho bi ton ngi du lch................................................................ 26P_1_04_2.PAS * Dy ABC................................................................................................................................... 28P_2_07_1.PAS * Tnh gi tr biu thc RPN ........................................................................................................ 81P_2_07_2.PAS * Chuyn biu thc trung t sang dng RPN ............................................................................... 84P_2_08_1.PAS * Cc thut ton sp xp............................................................................................................. 114P_3_01_1.PAS * m s cch phn tch s n..................................................................................................... 145P_3_01_2.PAS * m s cch phn tch s n..................................................................................................... 146P_3_01_3.PAS * m s cch phn tch s n..................................................................................................... 146P_3_01_4.PAS * m s cch phn tch s n..................................................................................................... 147P_3_01_5.PAS * m s cch phn tch s n dng quy ................................................................................ 147P_3_01_6.PAS * m s cch phn tch s n dng quy ................................................................................ 148P_3_03_1.PAS * Tm dy con n iu tng di nht ........................................................................................ 154P_3_03_2.PAS * Ci tin thut ton tm dy con n iu tng di nht ........................................................... 156P_3_03_3.PAS * Bi ton ci ti ........................................................................................................................ 159P_3_03_4.PAS * Bin i xu ............................................................................................................................ 163P_3_03_5.PAS * Dy con c tng chia ht cho k ............................................................................................... 165P_3_03_6.PAS * Dy con c tng chia ht cho k ............................................................................................... 167P_3_03_7.PAS * Nhn ti u dy ma trn.......................................................................................................... 171P_4_03_1.PAS * Thut ton tm kim theo chiu su ........................................................................................ 187P_4_03_2.PAS * Thut ton tm kim theo chiu rng ...................................................................................... 190P_4_04_1.PAS * Thut ton Warshall lit k cc thnh phn lin thng ........................................................... 197P_4_04_2.PAS * Thut ton Tarjan lit k cc thnh phn lin thng mnh...................................................... 204P_4_05_1.PAS * Lit k cc khp v cu ca th .......................................................................................... 216P_4_06_1.PAS * Thut ton Fleury tm chu trnh Euler..................................................................................... 221P_4_06_2.PAS * Thut ton hiu qu tm chu trnh Euler.................................................................................. 224P_4_07_1.PAS * Thut ton quay lui lit k chu trnh Hamilton ....................................................................... 227P_4_08_1.PAS * Thut ton Ford-Bellman ........................................................................................................ 234P_4_08_2.PAS * Thut ton Dijkstra.................................................................................................................. 236P_4_08_3.PAS * Thut ton Dijkstra v cu trc Heap...................................................................................... 239 12. xP_4_08_4.PAS * ng i ngn nht trn th khng c chu trnh.................................................................242P_4_08_5.PAS * Thut ton Floyd .....................................................................................................................245P_4_09_1.PAS * Thut ton Kruskal ..................................................................................................................253P_4_09_2.PAS * Thut ton Prim.......................................................................................................................257P_4_10_1.PAS * Thut ton Ford-Fulkerson ......................................................................................................268P_4_10_2.PAS * Thut ton Preflow-push .........................................................................................................273P_4_11_1.PAS * Thut ton ng m tm b ghp cc i..............................................................................286P_4_12_1.PAS * Thut ton Hungari..................................................................................................................298P_4_12_2.PAS * Ci t phng php Kuhn-Munkres O(k3) ............................................................................303P_4_13_1.PAS * Phng php Lawler p dng cho thut ton Edmonds ..........................................................313 13. BNG CC K HIU C S DNGx Floor of x: S nguyn ln nht xx Ceiling of x: S nguyn nh nht xPkn!n S chnh hp khng lp chp k ca n phn t = (n k)!nBinomial coefficient: H s ca hng t x k trong a thc ( x + 1) n k n! = S t hp chp k ca n phn t = k!( n k ) !O ( .) K php ch O ln ( .) K php ln ( .) K php lno ( .) K php ch o nh ( .) k php nha [i..j] Cc phn t trong mng a tnh t ch s i n ch s jn! n factorial: Giai tha ca n = 1.2.3nababa baa ...a b copies of alog a xLogarithm to base a of x: Logarithm c s a ca x ( log a a b = b )lg x Logarithm nh phn (c s 2) ca xln x Logarithm t nhin (c s e) ca xlog* x a S ln ly logarithm c s a thu c s 1 t x ( log* (a b) = b ) alg* xlog* x2ln* xlog* xe 14. PHN 1. BI TON LIT KC mt s bi ton trn thc t yu cu ch r: trong mt tp cc itng cho trc c bao nhiu i tng tho mn nhng iu kin nhtnh. Bi ton gi l bi ton m.Trong lp cc bi ton m, c nhng bi ton cn yu cu ch r nhngcu hnh tm c tho mn iu kin cho l nhng cu hnh no. Biton yu cu a ra danh sch cc cu hnh c th c gi l bi ton litk. gii bi ton lit k, cn phi xc nh c mt thut ton c ththeo ln lt xy dng c tt c cc cu hnh ang quan tm. Cnhiu phng php lit k, nhng chng cn phi p ng c hai yucu di y: Khng c lp li mt cu hnh Khng c b st mt cu hnhC th ni rng, phng php lit k l phng k cui cng giic mt s bi ton t hp hin nay. Kh khn chnh ca phng phpny chnh l s bng n t hp dn ti s i hi ln v khng gian vthi gian thc hin chng trnh. Tuy nhin cng vi s pht trin camy tnh in t, bng phng php lit k, nhiu bi ton t hp tmthy li gii. Qua , ta cng nn bit rng ch nn dng phng phplit k khi khng cn mt phng php no khc tm ra li gii.Chnh nhng n lc gii quyt cc bi ton thc t khng dng phngphp lit k thc y s pht trin ca nhiu ngnh ton hc. 15. 2 Chuyn 1. NHC LI MT S KIN THC I S T HPCho S l mt tp hu hn gm n phn t v k l mt s t nhin.Gi X l tp cc s nguyn dng t 1 n k: X =SL:end:notranslate 21.1. CHNH HP LPMi nh x f: X S. Cho tng ng vi mi i X, mt v ch mt phn t f(i) S.c gi l mt chnh hp lp chp k ca S.Nhng do X l tp hu hn (k phn t) nn nh x f c th xc nh qua bng cc gi tr f(1),f(2), , f(k).V d: S =SL:end:notranslate 1; k = 3. Mt nh x f c th cho nh sau: i 1 2 3f(i) E C EVy c th ng nht f vi dy gi tr (f(1), f(2), , f(k)) v coi dy gi tr ny cng l mtchnh hp lp chp k ca S. Nh v d trn (E, C, E) l mt chnh hp lp chp 3 ca S. Ddng chng minh c kt qu sau bng quy np hoc bng phng php nh gi kh nngla chn:S chnh hp lp chp k ca tp gm n phn t l n k1.2. CHNH HP KHNG LPKhi f l n nh c ngha l vi i, j X ta c f(i) = f(j) i = j. Ni mt cch d hiu, khidy gi tr f(1), f(2), , f(k) gm cc phn t thuc S khc nhau i mt th f c gi l mtchnh hp khng lp chp k ca S. V d mt chnh hp khng lp (C, A, E): i 1 2 3f(i) C A ES chnh hp khng lp chp k ca tp gm n phn t l:n!n Pk = n(n 1)(n 2)...(n k + 1) = (n k)!1.3. HON VKhi k = n. Mt chnh hp khng lp chp n ca S c gi l mt hon v cc phn t ca S.V d: mt hon v: A, D, C, E, B, F ca S =SL:end:notranslate 0i1 2 3 4 5 6 f(i)A D C E B FHSPHN 1999-2004 16. Bi ton lit k 3 rng khi k = n th s phn t ca tp X =SL:start:notranslate 9 ng bng s phn t ca S. Dotnh cht i mt khc nhau nn dy f(1), f(2), , f(n) s lit k c ht cc phn t trong S.Nh vy f l ton nh. Mt khc do gi thit f l chnh hp khng lp nn f l n nh. Ta ctng ng 1-1 gia cc phn t ca X v S, do f l song nh. Vy nn ta c th nh nghamt hon v ca S l mt song nh giaSL:start:notranslate 8 v S.S hon v ca tp gm n phn t = s chnh hp khng lp chp n = n!1.4. T HPMt tp con gm k phn t ca S c gi l mt t hp chp k ca S.Ly mt tp con k phn t ca S, xt tt c k! hon v ca tp con ny. D thy rng cc honv l cc chnh hp khng lp chp k ca S. V d ly tpSL:start:notranslate 7 l tp con ca tp Strong v d trn th: A, B, C, C, A, B, B, C, A, l cc chnh hp khng lp chp 3 caS. iu tc l khi lit k tt c cc chnh hp khng lp chp k th mi t hp chp k sn! nc tnh k! ln. Vy s t hp chp k ca tp gm n phn t l = k!(n k)! k L Minh Hong 17. 4 Chuyn 2. PHNG PHP SINH (GENERATION)Phng php sinh c th p dng gii bi ton lit k t hp t ra nu nh hai iu kinsau tho mn: C th xc nh c mt th t trn tp cc cu hnh t hp cn lit k. T c th bit ccu hnh u tin v cu hnh cui cng trong th t . Xy dng c thut ton t mt cu hnh cha phi cu hnh cui, sinh ra c cu hnh k tip n.Phng php sinh c th m t nh sau:Xy dng cu hnh u tin;repeata ra cu hnh ang c;T cu hnh ang c sinh ra cu hnh k tip nu cn;until ht cu hnh;Th t t inTrn cc kiu d liu n gin chun, ngi ta thng ni ti khi nim th t. V d trnkiu s th c quan h: 1 < 2; 2 < 3; 3 < 10; , trn kiu k t Char th cng c quan h A , khi phi nh ngha)V d nh quan h trn cc s nguyn cng nh trn cc kiu v hng, lit k l quan hth t ton phn.Trn cc dy hu hn, ngi ta cng xc nh mt quan h th t:Xt a[1..n] v b[1..n] l hai dy di n, trn cc phn t ca a v b c quan h th t .Khi a b nu nhHoc a[i] = b[i] vi i: 1 i n.Hoc tn ti mt s nguyn dng k: 1 k < n : a[1] = b[1] a[2] = b[2]HSPHN 1999-2004 18. Bi ton lit k5 a[k-1] = b[k-1] a[k] = b[k] a[k+1] < b[k+1]Trong trng hp ny, ta c th vit a < b.Th t gi l th t t in trn cc dy di n.Khi di hai dy a v b khng bng nhau, ngi ta cng xc nh c th t t in. Bngcch thm vo cui dy a hoc dy b nhng phn t c bit gi l phn t di ca av b bng nhau, v coi nhng phn t ny nh hn tt c cc phn t khc, ta li a v xcnh th t t in ca hai dy cng di. V d:1, 2, 3, 4 < 5, 6a, b, c < a, b, c, dcalculator < computer2.1. SINH CC DY NH PHN DI NMt dy nh phn di n l mt dy x[1..n] trong x[i] SL:start:notranslate 6 (i : 1 i n).D thy: mt dy nh phn x di n l biu din nh phn ca mt gi tr nguyn p(x) no nm trong on [0, 2n - 1]. S cc dy nh phn di n = s cc s t nhin [0, 2n - 1] = 2n.Ta s lp chng trnh lit k cc dy nh phn theo th t t in c ngha l s lit k lnlt cc dy nh phn biu din cc s nguyn theo th t 0, 1, , 2n-1.V d: Khi n = 3, cc dy nh phn di 3 c lit k nh sau: p(x)0 1 2 345 6 7 x 000 001 010 011100101 110 111Nh vy dy u tin s l 000 v dy cui cng s l 111. Nhn xt rng nu dy x =x[1..n] l dy ang c v khng phi dy cui cng cn lit k th dy k tip s nhn cbng cch cng thm 1 ( theo c s 2 c nh) vo dy hin ti.V d khi n = 8:Dy ang c: 10010000 Dy ang c: 10010111cng thm 1: +1 cng thm 1:+1 Dy mi: 10010001 Dy mi: 10011000Nh vy k thut sinh cu hnh k tip t cu hnh hin ti c th m t nh sau: Xt t cuidy v u (xt t hng n v ln), tm s 0 gp u tinL Minh Hong 19. 6 Chuyn Nu thy th thay s 0 bng s 1 v t tt c cc phn t pha sau v tr bng 0. Nu khng thy th th ton dy l s 1, y l cu hnh cui cngD liu vo (Input): nhp t file vn bn BSTR.INP cha s nguyn dng n 100Kt qu ra (Output): ghi ra file vn bn BSTR.OUT cc dy nh phn di n.BSTR.INP BSTR.OUT3000 001 010 011 100 101 110 111P_1_02_1.PAS * Thut ton sinh lit k cc dy nh phn di n{$MODE DELPHI} (*This program uses 32-bit Integer [-231..231 - 1]*)program Binary_Strings;constInputFile = BSTR.INP;OutputFile = BSTR.OUT;max = 100;varx: array[1..max] of Integer;n, i: Integer;f: Text;beginAssign(f, InputFile); Reset(f);ReadLn(f, n);Close(f);Assign(f, OutputFile); Rewrite(f);FillChar(x, SizeOf(x), 0);SL:start:notranslate 5repeatSL:start:notranslate 4 for i := 1 to n do Write(f, x[i]);SL:start:notranslate 3 WriteLn(f); i := n;SL:start:notranslate 2 while (i > 0) and (x[i] = 1) do Dec(i); if i > 0 thenSL:start:notranslate 1 begin x[i] := 1;SL:start:notranslate 0 FillChar(x[i + 1], (n - i) * SizeOf(x[1]), 0); {t x[i+1] = x[i+2] = = x[n] := 0} end;until i = 0; { ht cu hnh}Close(f);end.2.2. LIT K CC TP CON K PHN TTa s lp chng trnh lit k cc tp con k phn t ca tpSL:end:notranslate 9 theo th t t inV d: vi n = 5, k = 3, ta phi lit k 10 tp con:1. SL:end:notranslate 8 2. SL:end:notranslate 7 3. SL:end:notranslate 6 4. SL:end:notranslate 5 5. SL:end:notranslate 46. SL:end:notranslate 3 7. SL:end:notranslate 2 8. SL:end:notranslate 1 9. SL:end:notranslate 0 10. For slideview page , combined js for player is now combined with slideview javascripts for logged out users9Nh vy tp con u tin (cu hnh khi to) lFor slideview page , combined js for player is now combined with slideview javascripts for logged out users8.Cu hnh kt thc lFor slideview page , combined js for player is now combined with slideview javascripts for logged out users7.Nhn xt: Ta s in ra tp con bng cch in ra ln lt cc phn t ca n theo th t tng dn.Biu din mi tp con l mt dy x[1..k] trong x[1] < x[2] < < x[k]. Ta nhn thy gii HSPHN 1999-2004 20. Bi ton lit k 7hn trn (gi tr ln nht c th nhn) ca x[k] l n, ca x[k-1] l n - 1, ca x[k-2] l n - 2Tng qut: gii hn trn ca x[i] = n - k + i;Cn tt nhin, gii hn di ca x[i] (gi tr nh nht x[i] c th nhn) l x[i-1] + 1.Nh vy nu ta ang c mt dy x i din cho mt tp con, nu x l cu hnh kt thc cngha l tt c cc phn t trong x u t ti gii hn trn th qu trnh sinh kt thc, nukhng th ta phi sinh ra mt dy x mi tng dn tho mn va ln hn dy c theo nghakhng c mt tp con k phn t no chen gia chng khi sp th t t in.V d: n = 9, k = 6. Cu hnh ang c x = 1, 2, 6, 7, 8, 9. Cc phn t x[3] n x[6] t tigii hn trn nn sinh cu hnh mi ta khng th sinh bng cch tng mt phn t trong scc x[6], x[5], x[4], x[3] ln c, ta phi tng x[2] = 2 ln thnh x[2] = 3. c cu hnh mil x = 1, 3, 6, 7, 8, 9. Cu hnh ny tho mn ln hn cu hnh trc nhng cha thomn tnh cht va ln mun vy ta li thay x[3], x[4], x[5], x[6] bng cc gii hn dica n. Tc l:x[3] := x[2] + 1 = 4x[4] := x[3] + 1 = 5x[5] := x[4] + 1 = 6x[6] := x[5] + 1 = 7Ta c cu hnh mi x = 1, 3, 4, 5, 6, 7 l cu hnh k tip. Nu mun tm tip, ta li nhnthy rng x[6] = 7 cha t gii hn trn, nh vy ch cn tng x[6] ln 1 l c x = 1, 3, 4,5, 6, 8.Vy k thut sinh tp con k tip t tp c x c th xy dng nh sau:Tm t cui dy ln u cho ti khi gp mt phn t x[i] cha t gii hn trn n - k + i. Nu tm thy: Tng x[i] ln 1. t tt c cc phn t pha sau x[i] bng gii hn di. Nu khng tm thy tc l mi phn t t gii hn trn, y l cu hnh cui cngInput: file vn bn SUBSET.INP cha hai s nguyn dng n, k (1 k n 100) cch nhaut nht mt du cchOutput: file vn bn SUBSET.OUT cc tp con k phn t ca tpFor slideview page , combined js for player is now combined with slideview javascripts for logged out users6 SUBSET.INP SUBSET.OUT 53For slideview page , combined js for player is now combined with slideview javascripts for logged out users5 For slideview page , combined js for player is now combined with slideview javascripts for logged out users4 For slideview page , combined js for player is now combined with slideview javascripts for logged out users3 For slideview page , combined js for player is now combined with slideview javascripts for logged out users2 For slideview page , combined js for player is now combined with slideview javascripts for logged out users1 For slideview page , combined js for player is now combined with slideview javascripts for logged out users0 end stage 9 end stage 8 end stage 7 end stage 6L Minh Hong 21. 8Chuyn P_1_02_2.PAS * Thut ton sinh lit k cc tp con k phn t{$MODE DELPHI} (*This program uses 32-bit Integer [-231..231 - 1]*)program Combination;constInputFile = SUBSET.INP;OutputFile = SUBSET.OUT;max = 100;varx: array[1..max] of Integer;n, k, i, j: Integer;f: Text;beginAssign(f, InputFile); Reset(f);ReadLn(f, n, k);Close(f);Assign(f, OutputFile); Rewrite(f);for i := 1 to k do x[i] := i;end stage 5repeatend stage 4 Write(f, {); for i := 1 to k - 1 do Write(f, x[i], , ); WriteLn(f, x[k], });end stage 3 i := k;end stage 2 while (i > 0) and (x[i] = n - k + i) do Dec(i); if i > 0 thenend stage 1 begin Inc(x[i]);end stage 0 for j := i + 1 to k do x[j] := x[j - 1] + 1; end;until i = 0;using div.bar-[top, bottom]-margin to fix toolbar spacing with a taller progressbar (improve slide scrubbing UX) 9Close(f);end.2.3. LIT K CC HON VTa s lp chng trnh lit k cc hon v causing div.bar-[top, bottom]-margin to fix toolbar spacing with a taller progressbar (improve slide scrubbing UX) 8 theo th t t in.V d vi n = 4, ta phi lit k 24 hon v: 1.12342.12433.13244.13425.14236.1432 7.21348.21439.2314 10.2341 11.2413 12.243113.3124 14.3142 15.3214 16.3241 17.3412 18.342119.4123 20.4132 21.4213 22.4231 23.4312 24.4321Nh vy hon v u tin s l 1, 2, , n. Hon v cui cng l n, n-1, , 1.Hon v s sinh ra phi ln hn hon v hin ti, hn th na phi l hon v va ln hnhon v hin ti theo ngha khng th c mt hon v no khc chen gia chng khi sp th t.Gi s hon v hin ti l x = 3, 2, 6, 5, 4, 1, xt 4 phn t cui cng, ta thy chng c xpgim dn, iu c ngha l cho d ta c hon v 4 phn t ny th no, ta cng c mthon v b hn hon v hin ti. Nh vy ta phi xt n x[2] = 2, thay n bng mt gi trkhc. Ta s thay bng gi tr no?, khng th l 1 bi nu vy s c hon v nh hn, khngth l 3 v c x[1] = 3 ri (phn t sau khng c chn vo nhng gi tr m phn t trc chn). Cn li cc gi tr 4, 5, 6. V cn mt hon v va ln hn hin ti nn ta chnx[2] = 4. Cn cc gi tr (x[3], x[4], x[5], x[6]) s ly trong tpusing div.bar-[top, bottom]-margin to fix toolbar spacing with a taller progressbar (improve slide scrubbing UX) 7. Cng v tnh vaHSPHN 1999-2004 22. Bi ton lit k9 ln nn ta s tm biu din nh nht ca 4 s ny gn cho x[3], x[4], x[5], x[6] tc l 1, 2,5, 6. Vy hon v mi s l 3, 4, 1, 2, 5, 6.Ta c nhn xt g qua v d ny: on cui ca hon v hin ti c xp gim dn, s x[5] =4 l s nh nht trong on cui gim dn tho mn iu kin ln hn x[2] = 2. Nu i chx[5] cho x[2] th ta s c x[2] = 4 v on cui vn c sp xp gim dn. Khi munbiu din nh nht cho cc gi tr trong on cui th ta ch cn o ngc on cui.Trong trng hp hon v hin ti l 2, 1, 3, 4 th hon v k tip s l 2, 1, 4, 3. Ta cngc th coi hon v 2, 1, 3, 4 c on cui gim dn, on cui ny ch gm 1 phn t (4)Vy k thut sinh hon v k tip t hon v hin ti c th xy dng nh sau:Xc nh on cui gim dn di nht, tm ch s i ca phn t x[i] ng lin trc on cui. iu ny ng ngha vi vic tm t v tr st cui dy ln u, gp ch s i u tin thamn x[i] < x[i+1]. Nu tm thy ch s i nh trn Trong on cui gim dn, tm phn t x[k] nh nht tho mn iu kin x[k] > x[i]. Do on cui gim dn, iu ny thc hin bng cch tm t cui dy ln u gp ch s k u tin tho mn x[k] > x[i] (c th dng tm kim nh phn). o gi tr x[k] v x[i] Lt ngc th t on cui gim dn (t x[i+1] n x[k]) tr thnh tng dn. Nu khng tm thy tc l ton dy sp gim dn, y l cu hnh cui cngInput: file vn bn PERMUTE.INP cha s nguyn dng n 100Output: file vn bn PERMUTE.OUT cc hon v ca dy (1, 2, , n)PERMUTE.INP PERMUTE.OUT3 123132213231312321P_1_02_3.PAS * Thut ton sinh lit k hon v{$MODE DELPHI} (*This program uses 32-bit Integer [-231..231 - 1]*)program Permutation;constInputFile = PERMUTE.INP;OutputFile = PERMUTE.OUT;max = 100;varn, i, k, a, b: Integer;x: array[1..max] of Integer;f: Text;procedure Swap(var X, Y: Integer);using div.bar-[top, bottom]-margin to fix toolbar spacing with a taller progressbar (improve slide scrubbing UX) 6varTemp: Integer;beginTemp := X; X := Y; Y := Temp;end;L Minh Hong 23. 10 Chuyn beginAssign(f, InputFile); Reset(f);ReadLn(f, n);Close(f);Assign(f, OutputFile); Rewrite(f);for i := 1 to n do x[i] := i;using div.bar-[top, bottom]-margin to fix toolbar spacing with a taller progressbar (improve slide scrubbing UX) 5repeat for i := 1 to n do Write(f, x[i],);using div.bar-[top, bottom]-margin to fix toolbar spacing with a taller progressbar (improve slide scrubbing UX) 4 WriteLn(f); i := n - 1; while (i > 0) and (x[i] > x[i + 1]) do Dec(i); if i > 0 thenusing div.bar-[top, bottom]-margin to fix toolbar spacing with a taller progressbar (improve slide scrubbing UX) 3 begin k := n;using div.bar-[top, bottom]-margin to fix toolbar spacing with a taller progressbar (improve slide scrubbing UX) 2 while x[k] < x[i] do Dec(k);using div.bar-[top, bottom]-margin to fix toolbar spacing with a taller progressbar (improve slide scrubbing UX) 1 Swap(x[k], x[i]); {i ch x[k] v x[i]} a := i + 1; b := n;using div.bar-[top, bottom]-margin to fix toolbar spacing with a taller progressbar (improve slide scrubbing UX) 0 while a < b dobeginSwap(x[a], x[b]); {o gi tr x[a] v x[b]}Inc(a);Flag button list to display9Dec(b);end; end;until i = 0;Flag button list to display8Close(f);end.Bi tp:Bi 1Cc chng trnh trn x l khng tt trong trng hp tm thng, l trng hp n = 0i vi chng trnh lit k dy nh phn cng nh trong chng trnh lit k hon v, trnghp k = 0 i vi chng trnh lit k t hp, hy khc phc iu .Bi 2Lit k cc dy nh phn di n c th coi l lit k cc chnh hp lp chp n ca tp 2 phntFlag button list to display7. Hy lp chng trnh:Nhp vo hai s n v k, lit k cc chnh hp lp chp k caFlag button list to display6.Hng dn: thay h c s 2 bng h c s n.Bi 3Hy lit k cc dy nh phn di n m trong cm ch s 01 xut hin ng 2 ln.Bi 4.Nhp vo mt danh sch n tn ngi. Lit k tt c cc cch chn ra ng k ngi trong s nngi .Bi 5Lit k tt c cc tp con ca tpFlag button list to display5. C th dng phng php lit k tp con nhtrn hoc dng phng php lit k tt c cc dy nh phn. Mi s 1 trong dy nh phntng ng vi mt phn t c chn trong tp. V d vi tpFlag button list to display4 th dy nh phnHSPHN 1999-2004 24. Bi ton lit k111010 s tng ng vi tp conFlag button list to display3. Hy lp chng trnh in ra tt c cc tp con caFlag button list to display2 theo hai phng php.Bi 6Nhp vo danh sch tn n ngi, in ra tt c cc cch xp n ngi vo mt bnBi 7Nhp vo danh sch n bn nam v n bn n, in ra tt c cc cch xp 2n ngi vo mt bntrn, mi bn nam tip n mt bn n.Bi 8Ngi ta c th dng phng php sinh lit k cc chnh hp khng lp chp k. Tuy nhinc mt cch khc l lit k tt c cc tp con k phn t ca tp hp, sau in ra k! hon vca n. Hy vit chng trnh lit k cc chnh hp khng lp chp k caFlag button list to display1 theo chai cch.Bi 9Lit k tt c cc hon v ch ci trong t MISSISSIPPI theo th t t in.Bi 10Lit k tt c cc cch phn tch s nguyn dng n thnh tng cc s nguyn dng, hai cchphn tch l hon v ca nhau ch tnh l mt cch.Cui cng, ta c nhn xt, mi phng php lit k u c u, nhc im ring v phngphp sinh cng khng nm ngoi nhn xt . Phng php sinh khng th sinh ra c cuhnh th p nu nh cha c cu hnh th p - 1, chng t rng phng php sinh t ra u imtrong trng hp lit k ton b mt s lng nh cu hnh trong mt b d liu ln th li cnhc im v t tnh ph dng trong nhng thut ton duyt hn ch. Hn th na, khngphi cu hnh ban u lc no cng d tm c, khng phi k thut sinh cu hnh k tipcho mi bi ton u n gin nh trn (Sinh cc chnh hp khng lp chp k theo th t tin chng hn). Ta sang mt chuyn mc sau ni n mt phng php lit k c tnh phdng cao hn, gii cc bi ton lit k phc tp hn l: Thut ton quay lui (Backtracking).L Minh Hong 25. 12 Chuyn 3. THUT TON QUAY LUIThut ton quay lui dng gii bi ton lit k cc cu hnh. Mi cu hnh c xy dngbng cch xy dng tng phn t, mi phn t c chn bng cch th tt c cc kh nng.Gi s cu hnh cn lit k c dng x[1..n], khi thut ton quay lui thc hin qua cc bc:1) Xt tt c cc gi tr x[1] c th nhn, th cho x[1] nhn ln lt cc gi tr . Vi mi gi tr th gn cho x[1] ta s:2) Xt tt c cc gi tr x[2] c th nhn, li th cho x[2] nhn ln lt cc gi tr . Vi mi gi tr th gn cho x[2] li xt tip cc kh nng chn x[3] c tip tc nh vy n bc:n) Xt tt c cc gi tr x[n] c th nhn, th cho x[n] nhn ln lt cc gi tr , thng bocu hnh tm c x[1], x[2], , x[n].Trn phng din quy np, c th ni rng thut ton quay lui lit k cc cu hnh n phn tdng x[1..n] bng cch th cho x[1] nhn ln lt cc gi tr c th. Vi mi gi tr th gncho x[1] bi ton tr thnh lit k tip cu hnh n - 1 phn t x[2..n].M hnh ca thut ton quay lui c th m t nh sau: Flag button list to display0procedure Attempt(i);beginfor mi gi tr V c th gn cho x[i] do begin Th cho x[i] := V; if x[i] l phn t cui cng trong cu hnh thenThng bo cu hnh tm c else beginGhi nhn vic cho x[i] nhn gi tr V (nu cn);Attempt(i + 1);end flag button 9Nu cn, b ghi nhn vic th x[i] := V th gi tr khc;end; end;end;Thut ton quay lui s bt u bng li gi Attempt(1)3.1. LIT K CC DY NH PHN DI NInput/Output vi khun dng nh trong P_1_02_1.PASBiu din dy nh phn di N di dng x[1..n]. Ta s lit k cc dy ny bng cch thdng cc gi trend flag button 8 gn cho x[i]. Vi mi gi tr th gn cho x[i] li th cc gi tr c thgn cho x[i+1].Chng trnh lit k bng thut ton quay lui c th vit: P_1_03_1.PAS * Thut ton quay lui lit k cc dy nh phn di n{$MODE DELPHI} (*This program uses 32-bit Integer [-231..231 - 1]*)program BinaryStrings;constHSPHN 1999-2004 26. Bi ton lit k13InputFile = BSTR.INP;OutputFile = BSTR.OUT;max = 100;varx: array[1..max] of Integer;n: Integer;f: Text;procedure PrintResult;end flag button 7vari: Integer;beginfor i := 1 to n do Write(f, x[i]);WriteLn(f);end;procedure Attempt(i: Integer);end flag button 6varj: Integer;beginfor j := 0 to 1 doend flag button 5 begin x[i] := j;end flag button 4 if i = n then PrintResultend flag button 3 else Attempt(i + 1);end flag button 2 end;end;beginAssign(f, InputFile); Reset(f);ReadLn(f, n);end flag button 1Close(f);Assign(f, OutputFile); Rewrite(f);Attempt(1);end flag button 0Close(f);end.V d: Khi n = 3, cy tm kim quay lui nh sau:Try(1)X1=0 X1=1Try(2)Try(2)X2=0 X2=1X2=0X2=1 Try(3)Try(3)Try(3) Try(3)X3=0 X3=1 X3=0 X3=1 X3=0 X3=1 X3=0X3=1000 001010 011 100 101 110111ResultHnh 1: Cy tm kim quay lui trong bi ton lit k dy nh phn3.2. LIT K CC TP CON K PHN TInput/Output c khun dng nh trong P_1_02_2.PASL Minh Hong 27. 14 Chuyn lit k cc tp con k phn t ca tp S =.bot-actions 9 ta c th a v lit k cc cu hnhx[1..n], y cc x[i] S v x[1] < x[2] < < x[k]. Ta c nhn xt: x[k] n x[k-1] x[k] - 1 n - 1 x[i] n - k + i x[1] n - k + 1.T suy ra x[i-1] + 1 x[i] n - k + i (1 i k) y ta gi thit c thm mt s x[0] = 0khi xt i = 1.Nh vy ta s xt tt c cc cch chn x[1] t 1 (=x[0] + 1) n n - k + 1, vi mi gi tr ,xt tip tt c cc cch chn x[2] t x[1] +1 n n - k + 2, c nh vy khi chn c nx[k] th ta c mt cu hnh cn lit k. Chng trnh lit k bng thut ton quay lui nh sau: P_1_03_2.PAS * Thut ton quay lui lit k cc tp con k phn t{$MODE DELPHI} (*This program uses 32-bit Integer [-231..231 - 1]*)program Combination;constInputFile = SUBSET.INP;OutputFile = SUBSET.OUT;max = 100;varx: array[0..max] of Integer;n, k: Integer;f: Text;procedure PrintResult; (*In ra tp con.bot-actions 8*)vari: Integer;beginWrite(f, {);for i := 1 to k - 1 do Write(f, x[i], , );WriteLn(f, x[k], });end;procedure Attempt(i: Integer);.bot-actions 7varj: Integer;beginfor j := x[i - 1] + 1 to n - k + i do begin x[i] := j; if i = k then PrintResult else Attempt(i + 1); end;end;beginAssign(f, InputFile); Reset(F);ReadLn(f, n, k);Close(f);Assign(f, OutputFile); Rewrite(f);HSPHN 1999-2004 28. Bi ton lit k15x[0] := 0;Attempt(1);Close(f);end.Nu chng trnh trn v chng trnh lit k dy nh phn di n, ta thy v c bnchng ch khc nhau th tc Attemp(i) - chn th cc gi tr cho x[i], chng trnh lit kdy nh phn ta th chn cc gi tr 0 hoc 1 cn chng trnh lit k cc tp con k phn tta th chn x[i] l mt trong cc gi tr nguyn t x[i-1] + 1 n n - k + i. Qua ta c ththy tnh ph dng ca thut ton quay lui: m hnh ci t c th thch hp cho nhiu biton, khc vi phng php sinh tun t, vi mi bi ton li phi c mt thut ton sinh ktip ring lm cho vic ci t mi bi mt khc, bn cnh , khng phi thut ton sinh ktip no cng d ci t.3.3. LIT K CC CHNH HP KHNG LP CHP K lit k cc chnh hp khng lp chp k ca tp S =.bot-actions 6 ta c th a v lit k cccu hnh x[1..k] y cc x[i] S v khc nhau i mt.Nh vy th tc Attempt(i) - xt tt c cc kh nng chn x[i] - s th ht cc gi tr t 1 nn, m cc gi tr ny cha b cc phn t ng trc chn. Mun xem cc gi tr no chac chn ta s dng k thut dng mng nh du: Khi to mt mng c[1..n] mang kiu logic boolean. y c[i] cho bit gi tr i c cn t do hay b chn ri. Ban u khi to tt c cc phn t mng c l TRUE c ngha l cc phn t t 1 n n u t do. Ti bc chn cc gi tr c th ca x[i] ta ch xt nhng gi tr j c c[j] = TRUE c ngha l ch chn nhng gi tr t do. Trc khi gi quy tm x[i+1]: ta t gi tr j va gn cho x[i] l b chn c ngha l t c[j] := FALSE cc th tc Attempt(i + 1), Attempt(i + 2) gi sau ny khng chn phi gi tr j na Sau khi gi quy tm x[i+1]: c ngha l sp ti ta s th gn mt gi tr khc cho x[i] th ta s t gi tr j va th thnh t do (c[j] := TRUE), bi khi xi nhn mt gi tr khc ri th cc phn t ng sau: x[i+1], x[i+2] hon ton c th nhn li gi tr j . iu ny hon ton hp l trong php xy dng chnh hp khng lp: x[1] c n cch chn, x[2] c n - 1 cch chn, Lu rng khi th tc Attempt(i) c i = k th ta khng cn phi nh du g c v tip theo ch c in kt qu ch khng cn phi chn thm phn t no na.Input: file vn bn ARRANGE.INP cha hai s nguyn dng n, k (1 k n 100) cchnhau t nht mt du cchOutput: file vn bn ARRANGE.OUT ghi cc chnh hp khng lp chp k ca tp.bot-actions 5L Minh Hong 29. 16 Chuyn ARRANGE.INP ARRANGE.OUT 3212 13 21 23 31 32 P_1_03_3.PAS * Thut ton quay lui lit k cc chnh hp khng lp chp k{$MODE DELPHI} (*This program uses 32-bit Integer [-231..231 - 1]*)program Arrangement;constInputFile = ARRANGES.INP;OutputFile = ARRANGES.OUT;max = 100;varx: array[1..max] of Integer;c: array[1..max] of Boolean;n, k: Integer;f: Text;procedure PrintResult;.bot-actions 4vari: Integer;beginfor i := 1 to k do Write(f, x[i],);WriteLn(f);end;procedure Attempt(i: Integer);.bot-actions 3varj: Integer;beginfor j := 1 to n do if c[j] then.bot-actions 2 begin x[i] := j; if i = k then PrintResult.bot-actions 1 elsebeginc[j] := False; {nh du: j b chn}Attempt(i + 1);.bot-actions 0c[j] := True;end of div class pro-overlay 9end; end;end;beginAssign(f, InputFile); Reset(f);ReadLn(f, n, k);Assign(f, OutputFile); Rewrite(f);FillChar(c, SizeOf(c), True);end of div class pro-overlay 8Attempt(1);end of div class pro-overlay 7Close(f);end.Nhn xt: khi k = n th y l chng trnh lit k hon vHSPHN 1999-2004 30. Bi ton lit k 173.4. BI TON PHN TCH S3.4.1. Bi tonCho mt s nguyn dng n 30, hy tm tt c cc cch phn tch s n thnh tng ca cc snguyn dng, cc cch phn tch l hon v ca nhau ch tnh l 1 cch.3.4.2. Cch lm:Ta s lu nghim trong mng x, ngoi ra c mt mng t. Mng t xy dng nh sau: t[i] s ltng cc phn t trong mng x t x[1] n x[i]: t[i] := x[1] + x[2] + + x[i].Khi lit k cc dy x c tng cc phn t ng bng n, trnh s trng lp ta a thm rngbuc x[i-1] x[i].V s phn t thc s ca mng x l khng c nh nn th tc PrintResult dng in ra 1cch phn tch phi c thm tham s cho bit s in ra bao nhiu phn t.Th tc quy Attempt(i) s th cc gi tr c th nhn ca x[i] (x[i] x[i - 1])Khi no th in kt qu v khi no th gi quy tm tip ?Lu rng t[i - 1] l tng ca tt c cc phn t t x[1] n x[i-1] do Khi t[i] = n tc l (x[i] = n - t[i - 1]) th in kt qu Khi tm tip, x[i+1] s phi ln hn hoc bng x[i]. Mt khc t[i+1] l tng ca cc s t x[1] ti x[i+1] khng c vt qu n. Vy ta c t[i+1] n t[i-1] + x[i] + x[i+1] n x[i] + x[i+1] n - t[i-1] tc l x[i] (n - t[i-1])/2. V d n gin khi n = 10 th chn x[1] = 6, 7, 8, 9 l vic lm v ngha v nh vy cng khng ra nghim m cng khng chn tip x[2] c na.Mt cch d hiu: ta gi quy tm tip khi gi tr x[i] c chn cn cho php chn thmmt phn t khc ln hn hoc bng n m khng lm tng vt qu n. Cn ta in kt quch khi x[i] mang gi tr ng bng s thiu ht ca tng i-1 phn t u so vi n.Vy th tc Attempt(i) th cc gi tr cho x[i] c th vit nh sau: ( tng qut cho i = 1, tat x[0] = 1 v t[0] = 0). Xt cc gi tr ca x[i] t x[i - 1] n (n - t[i-1]) div 2, cp nht t[i] := t[i - 1] + x[i] v gi quy tm tip. Cui cng xt gi tr x[i] = n - t[i-1] v in kt qu t x[1] n x[i].Input: file vn bn ANALYSE.INP cha s nguyn dng n 100Output: file vn bn ANALYSE.OUT ghi cc cch phn tch s n.L Minh Hong 31. 18 Chuyn ANALYSE.INP ANALYSE.OUT6 6 = 1+1+1+1+1+16 = 1+1+1+1+26 = 1+1+1+36 = 1+1+2+26 = 1+1+46 = 1+2+36 = 1+56 = 2+2+26 = 2+46 = 3+36=6 P_1_03_4.PAS * Thut ton quay lui lit k cc cch phn tch s{$MODE DELPHI} (*This program uses 32-bit Integer [-231..231 - 1]*)program Analyses;constInputFile = ANALYSE.INP;OutputFile = ANALYSE.OUT;max = 100;varn: Integer;x: array[0..max] of Integer;t: array[0..max] of Integer;f: Text;procedure Init;end of div class pro-overlay 6beginAssign(f, InputFile); Reset(f);ReadLn(f, n);Close(f);x[0] := 1;t[0] := 0;end;procedure PrintResult(k: Integer);vari: Integer;beginWrite(f, n,= );for i := 1 to k - 1 do Write(f, x[i], +);WriteLn(f, x[k]);end;procedure Attempt(i: Integer);varj: Integer;beginfor j := x[i - 1] to (n - T[i - 1]) div 2 doend of div class pro-overlay 5 begin x[i] := j; t[i] := t[i - 1] + j; Attempt(i + 1); end;x[i] := n - T[i - 1];end of div class pro-overlay 4PrintResult(i);end;beginInit;Assign(f, OutputFile); Rewrite(f);Attempt(1);Close(f);HSPHN 1999-2004 32. Bi ton lit k19end.By gi ta xt tip mt v d kinh in ca thut ton quay lui:3.5. BI TON XP HU3.5.1. Bi tonXt bn c tng qut kch thc nxn. Mt qun hu trn bn c c th n c cc qun khcnm ti cc cng hng, cng ct hoc cng ng cho. Hy tm cc xp n qun hu trnbn c sao cho khng qun no n qun no.V d mt cch xp vi n = 8:Hnh 2: Xp 8 qun hu trn bn c 8x83.5.2. Phn tchR rng n qun hu s c t mi con mt hng v hu n c ngang, ta gi qun hu st hng 1 l qun hu 1, qun hu hng 2 l qun hu 2 qun hu hng n l qun hun. Vy mt nghim ca bi ton s c bit khi ta tm ra c v tr ct ca nhng qunhu.Nu ta nh hng ng (Phi), Ty (Tri), Nam (Di), Bc (Trn) th ta nhn thy rng: Mt ng cho theo hng ng Bc - Ty Nam (B-TN) bt k s i qua mt s , cc c tnh cht: Hng + Ct = C (Const). Vi mi ng cho B-TN ta c 1 hng s C v vi mt hng s C: 2 C 2n xc nh duy nht 1 ng cho B-TN v vy ta c th nh ch s cho cc ng cho B- TN t 2 n 2n Mt ng cho theo hng ng Nam - Ty Bc (N-TB) bt k s i qua mt s , cc c tnh cht: Hng - Ct = C (Const). Vi mi ng cho N-TB ta c 1 hng s C v vi mt hng s C: 1 - n C n - 1 xc nh duy nht 1 ng cho N-TB v vy ta c th nh ch s cho cc ng cho N- TB t 1 - n n n - 1.L Minh Hong 33. 20Chuyn 12 345 6 7 8 1 N23 4WE56 S78Hnh 3: ng cho B-TN mang ch s 10 v ng cho N-TB mang ch s 0Ci t:Ta c 3 mng logic nh du: Mng a[1..n]. a[i] = TRUE nu nh ct i cn t do, a[i] = FALSE nu nh ct i b mt qun hu khng ch Mng b[2..2n]. b[i] = TRUE nu nh ng cho B-TN th i cn t do, b[i] = FALSE nu nh ng cho b mt qun hu khng ch. Mng c[1-n..n-1]. c[i] = TRUE nu nh ng cho N-TB th i cn t do, c[i] = FALSE nu nh ng cho b mt qun hu khng ch.Ban u c 3 mng nh du u mang gi tr TRUE. (Cc ct v ng cho u t do)Thut ton quay lui: Xt tt c cc ct, th t qun hu 1 vo mt ct, vi mi cch t nh vy, xt tt c cc cch t qun hu 2 khng b qun hu 1 n, li th 1 cch t v xt tip cc cch t qun hu 3Mi cch t c n qun hu n cho ta 1 nghim Khi chn v tr ct j cho qun hu th i, th ta phi chn (i, j) khng b cc qun hu t trc n, tc l phi chn ct j cn t do, ng cho B-TN (i+j) cn t do, ng cho N-TB(i-j) cn t do. iu ny c th kim tra (a[j] = b[i+j] = c[i-j] = TRUE) Khi th t c qun hu th i vo ct j, nu l qun hu cui cng (i = n) th ta c mt nghim. Nu khng: Trc khi gi quy tm cch t qun hu th i + 1, ta nh du ct v 2 ng cho b qun hu va t khng ch (a[j] = b[i+j] = c[i-j] := FALSE) cc ln gi quy tip sau chn cch t cc qun hu k tip s khng chn vo nhng nm trn ct j v nhng ng cho ny na. Sau khi gi quy tm cch t qun hu th i + 1, c ngha l sp ti ta li th mt cch t khc cho qun hu th i, ta b nh du ct v 2 ng cho b qun hu va th t khng ch (a[j] = b[i+j] = c[i-j] := TRUE) tc l ct v 2 ng cho liHSPHN 1999-2004 34. Bi ton lit k21 thnh t do, bi khi t qun hu i sang v tr khc ri th ct v 2 ng cho hon ton c th gn cho mt qun hu khcHy xem li trong cc chng trnh lit k chnh hp khng lp v hon v v k thut nhdu. y ch khc vi lit k hon v l: lit k hon v ch cn mt mng nh du xem gitr c t do khng, cn bi ton xp hu th cn phi nh du c 3 thnh phn: Ct, ngcho B-TN, ng cho N- TB. Trng hp n gin hn: Yu cu lit k cc cch t nqun xe ln bn c nxn sao cho khng qun no n qun no chnh l bi ton lit k hon v Input: file vn bn QUEENS.INP cha s nguyn dng n 100 Output: file vn bn QUEENS.OUT, mi dng ghi mt cch t n qun hu QUEENS.INP QUEENS.OUT 5(1, 1); (2, 3); (3, 5); (4, 2); (5, 4);(1, 1); (2, 4); (3, 2); (4, 5); (5, 3);(1, 2); (2, 4); (3, 1); (4, 3); (5, 5);(1, 2); (2, 5); (3, 3); (4, 1); (5, 4);(1, 3); (2, 1); (3, 4); (4, 2); (5, 5);(1, 3); (2, 5); (3, 2); (4, 4); (5, 1);(1, 4); (2, 1); (3, 3); (4, 5); (5, 2);(1, 4); (2, 2); (3, 5); (4, 3); (5, 1);(1, 5); (2, 2); (3, 4); (4, 1); (5, 3);(1, 5); (2, 3); (3, 1); (4, 4); (5, 2); P_1_03_5.PAS * Thut ton quay lui gii bi ton xp hu{$MODE DELPHI} (*This program uses 32-bit Integer [-231..231 - 1]*)program n_Queens;constInputFile = QUEENS.INP;OutputFile = QUEENS.OUT;max = 100;varn: Integer;x: array[1..max] of Integer;a: array[1..max] of Boolean;b: array[2..2 * max] of Boolean;c: array[1 - max..max - 1] of Boolean;f: Text;procedure Init;beginAssign(f, InputFile); Reset(f);ReadLn(f, n);Close(f);FillChar(a, SizeOf(a), True);end of div class pro-overlay 3FillChar(b, SizeOf(b), True);end of div class pro-overlay 2FillChar(c, SizeOf(c), True);end of div class pro-overlay 1end;procedure PrintResult;vari: Integer;beginfor i := 1 to n do Write(f, (, i, , , x[i], ); );WriteLn(f);end;procedure Attempt(i: Integer);end of div class pro-overlay 0varj: Integer;L Minh Hong 35. 22Chuyn beginfor j := 1 to n do if a[j] and b[i + j] and c[i - j] thenshare modal 9 begin x[i] := j;share modal 8 if i = n then PrintResult elsebegina[j] := False; b[i + j] := False; c[i - j] := False; {nh du}Attempt(i + 1);share modal 7a[j] := True; b[i + j] := True; c[i - j] := True;share modal 6end; end;end;beginInit;Assign(f, OutputFile); Rewrite(f);Attempt(1);Close(f);end.Tn gi thut ton quay lui, ng trn phng din ci t c th nn gi l k thut vt cnbng quay lui th chnh xc hn, tuy nhin ng trn phng din bi ton, nu nh ta coicng vic gii bi ton bng cch xt tt c cc kh nng cng l 1 cch gii th tn gi Thutton quay lui cng khng c g tri logic. Xt hot ng ca chng trnh trn cy tm kimquay lui ta thy ti bc th chn x[i] n s gi quy tm tip x[i+1] c ngha l qu trnhs duyt tin su xung pha di n tn nt l, sau khi duyt ht cc nhnh, tin trnh lili th p t mt gi tr khc cho x[i], chnh l ngun gc ca tn gi thut ton quayluiBi tp:Bi 1Mt s chng trnh trn x l khng tt trong trng hp tm thng (n = 0 hoc k = 0), hykhc phc cc li Bi 2Vit chng trnh lit k cc chnh hp lp chp k ca n phn tBi 3Cho hai s nguyn dng l, n. Hy lit k cc xu nh phn di n c tnh cht, bt k haixu con no di l lin nhau u khc nhau.Bi 4Vi n = 5, k = 3, v cy tm kim quay lui ca chng trnh lit k t hp chp k ca tpshare modal 5Bi 5Lit k tt c cc tp con ca tp S gm n s nguynshare modal 4 nhp vo t bnphmBi 6 HSPHN 1999-2004 36. Bi ton lit k23Tng t nh bi 5 nhng ch lit k cc tp con c max - min T (T cho trc).Bi 7Mt dy x[1..n] gi l mt hon v hon ton ca tpshare modal 3 nu n l mt hon v vtho mn x[i] i vi i: 1 i n. Hy vit chng trnh lit k tt c cc hon v hon tonca tp trn (n vo t bn phm).Bi 8Sa li th tc in kt qu (PrintResult) trong bi xp hu c th v hnh bn c v cc ccht hu ra mn hnh.Bi 9M i tun: Cho bn c tng qut kch thc nxn v mt qun M, hy ch ra mt hnh trnhca qun M xut pht t ang ng i qua tt c cc cn li ca bn c, mi ng 1 ln.Bi 10Chuyn tt c cc bi tp trong bi trc ang vit bng sinh tun t sang quay lui.Bi 11Xt s giao thng gm n nt giao thng nh s t 1 ti n v m on ng ni chng,mi on ng ni 2 nt giao thng. Hy nhp d liu v mng li giao thng , nhp shiu hai nt giao thng s v d. Hy in ra tt c cc cch i t s ti d m mi cch i khngc qua nt giao thng no qu mt ln.L Minh Hong 37. 24 Chuyn 4. K THUT NHNH CN4.1. BI TON TI UMt trong nhng bi ton t ra trong thc t l vic tm ra mt nghim tho mn mt s iukin no , v nghim l tt nht theo mt ch tiu c th, nghin cu li gii cc lp biton ti u thuc v lnh vc quy hoch ton hc. Tuy nhin cng cn phi ni rng trongnhiu trng hp chng ta cha th xy dng mt thut ton no thc s hu hiu gii biton, m cho ti nay vic tm nghim ca chng vn phi da trn m hnh lit k ton b cccu hnh c th v nh gi, tm ra cu hnh tt nht. Vic lit k cu hnh c th ci t bngcc phng php lit k: Sinh tun t v tm kim quay lui. Di y ta s tm hiu phngphp lit k bng thut ton quay lui tm nghim ca bi ton ti u.4.2. S BNG N T HPM hnh thut ton quay lui l tm kim trn 1 cy phn cp. Nu gi thit rng ng vi mint tng ng vi mt gi tr c chn cho x[i] s ng vi ch 2 nt tng ng vi 2 gi trm x[i+1] c th nhn th cy n cp s c ti 2n nt l, con s ny ln hn rt nhiu ln so vid liu u vo n. Chnh v vy m nu nh ta c thao tc tha trong vic chn x[i] th s phitr gi rt ln v chi ph thc thi thut ton bi qu trnh tm kim lng vng v ngha trongcc bc chn k tip x[i+1], x[i+2], Khi , mt vn t ra l trong qu trnh lit k ligii ta cn tn dng nhng thng tin tm c loi b sm nhng phng n chc chnkhng phi ti u. K thut gi l k thut nh gi nhnh cn trong tin trnh quay lui.4.3. M HNH K THUT NHNH CNDa trn m hnh thut ton quay lui, ta xy dng m hnh sau:procedure Init;beginKhi to mt cu hnh bt k BESTCONFIG;end; share modal 2procedure Attempt(i: Integer);beginfor Mi gi tr V c th gn cho x[i] do begin Th cho x[i] := V; if Vic th trn vn cn hi vng tm ra cu hnh tt hn BESTCONFIG then if x[i] l phn t cui cng trong cu hnh thenCp nht BESTCONFIGelsebegin Ghi nhn vic th x[i] = V nu cn;Attempt(i + 1);share modal 1 B ghi nhn vic th cho x[i] = V (nu cn);end; end;end;HSPHN 1999-2004 38. Bi ton lit k25beginInit;Attempt(1);Thng bo cu hnh ti u BESTCONFIG;end.K thut nhnh cn thm vo cho thut ton quay lui kh nng nh gi theo tng bc, nuti bc th i, gi tr th gn cho x[i] khng c hi vng tm thy cu hnh tt hn cu hnhBESTCONFIG th th gi tr khc ngay m khng cn phi gi quy tm tip hay ghi nhnkt qu lm g. Nghim ca bi ton s c lm tt dn, bi khi tm ra mt cu hnh mi (tthn BESTCONFIG - tt nhin), ta khng in kt qu ngay m s cp nht BESTCONFIG bngcu hnh mi va tm c4.4. BI TON NGI DU LCH4.4.1. Bi tonCho n thnh ph nh s t 1 n n v m tuyn ng giao thng hai chiu gia chng, mngli giao thng ny c cho bi bng C cp nxn, y C[i, j] = C[j, i] = Chi ph i onng trc tip t thnh ph i n thnh ph j. Gi thit rng C[i, i] = 0 vi i, C[i, j] = +nu khng c ng trc tip t thnh ph i n thnh ph j.Mt ngi du lch xut pht t thnh ph 1, mun i thm tt c cc thnh ph cn li mithnh ph ng 1 ln v cui cng quay li thnh ph 1. Hy ch ra cho ngi hnh trnhvi chi ph t nht. Bi ton gi l bi ton ngi du lch hay bi ton hnh trnh ca mtthng gia (Traveling Salesman)4.4.2. Cch giiHnh trnh cn tm c dng x[1..n + 1] trong x[1] = x[n + 1] = 1 y gia x[i] v x[i+1]:hai thnh ph lin tip trong hnh trnh phi c ng i trc tip (C[i, j] +) v ngoi trthnh ph 1, khng thnh ph no c lp li hai ln. C ngha l dy x[1..n] lp thnh 1hon v ca (1, 2, , n).Duyt quay lui: x[2] c th chn mt trong cc thnh ph m x[1] c ng i ti (trc tip),vi mi cch th chn x[2] nh vy th x[3] c th chn mt trong cc thnh ph m x[2] cng i ti (ngoi x[1]). Tng qut: x[i] c th chn 1 trong cc thnh ph cha i qua mt x[i-1] c ng i trc tip ti (1 i n).Nhnh cn: Khi to cu hnh BestConfig c chi ph = +. Vi mi bc th chn x[i] xemchi ph ng i cho ti lc c < Chi ph ca cu hnh BestConfig?, nu khng nh hn thth gi tr khc ngay bi c i tip cng ch tn thm. Khi th c mt gi tr x[n] ta kimtra xem x[n] c ng i trc tip v 1 khng ? Nu c nh gi chi ph i t thnh ph 1 nthnh ph x[n] cng vi chi ph t x[n] i trc tip v 1, nu nh hn chi ph ca ng iBestConfig th cp nht li BestConfig bng cch i mi.Sau th tc tm kim quay lui m chi ph ca BestConfig vn bng + th c ngha l nkhng tm thy mt hnh trnh no tho mn iu kin bi cp nht BestConfig, bi tonL Minh Hong 39. 26 Chuyn khng c li gii, cn nu chi ph ca BestConfig < + th in ra cu hnh BestConfig - lhnh trnh t tn km nht tm cInput: file vn bn TOURISM.INP Dng 1: Cha s thnh ph n (1 n 100) v s tuyn ng m trong mng li giao thng m dng tip theo, mi dng ghi s hiu hai thnh ph c ng i trc tip v chi ph i trn qung ng (chi ph ny l s nguyn dng 10000)Output: file vn bn TOURISM.OUT, ghi hnh trnh tm c. TOURISM.INP TOURISM.OUT2 3461->3->2->4->1 12123 Cost: 6 1321 2 1141 231 242 43 4 344 P_1_04_1.PAS * K thut nhnh cn dng cho bi ton ngi du lch{$MODE DELPHI} (*This program uses 32-bit Integer [-231..231 - 1]*)program TravellingSalesman;constInputFile = TOURISM.INP;OutputFile = TOURISM.OUT;max = 100;maxE = 10000;maxC = max * maxE;{+}varC: array[1..max, 1..max] of Integer;share modal 0X, BestWay: array[1..max + 1] of Integer;last screen ends here 9T: array[1..max + 1] of Integer;last screen ends here 8Free: array[1..max] of Boolean;last screen ends here 7m, n: Integer;MinSpending: Integer;last screen ends here 6procedure Enter;vari, j, k: Integer;f: Text;beginAssign(f, InputFile); Reset(f);ReadLn(f, n, m);for i := 1 to n dolast screen ends here 5 for j := 1 to n do if i = j then C[i, j] := 0 else C[i, j] := maxC;for k := 1 to m do begin ReadLn(f, i, j, C[i, j]); C[j, i] := C[i, j];last screen ends here 4end;Close(f);end;procedure Init;last screen ends here 3beginFillChar(Free, n, True);Free[1] := False;last screen ends here 2HSPHN 1999-2004 40. Bi ton lit k 27X[1] := 1;last screen ends here 1T[1] := 0;last screen ends here 0MinSpending := maxC;end;procedure Attempt(i: Integer); {Th cc cch chn xi}varj: Integer;beginfor j := 2 to n do {Th cc thnh ph t 2 n n} if Free[j] then {Nu gp thnh ph cha i qua} begin X[i] := j; {Th i} T[i] := T[i - 1] + C[x[i - 1], j]; {Chi ph := Chi ph bc trc + chi ph ng i trc tip} if T[i] < MinSpending then {Hin nhin nu c iu ny th C[x[i - 1], j] < + ri}if i < n then {Nu cha n c x[n]}beginFree[j] := False; {nh du thnh ph va th} Attempt(i + 1); {Tm cc kh nng chn x[i+1]} Free[j] := True; {B nh du}endelseif T[n] + C[x[n], 1] < MinSpending then {T x[n] quay li 1 vn tn chi ph t hn trc} begin {Cp nht BestConfig} BestWay := X; MinSpending := T[n] + C[x[n], 1];end; end;end;procedure PrintResult;vari: Integer;f: Text;beginAssign(f, OutputFile); Rewrite(f);if MinSpending = maxC then WriteLn(f, NO SOLUTION)else for i := 1 to n do Write(f, BestWay[i], ->);WriteLn(f, 1);WriteLn(f, Cost: , MinSpending);Close(f);end;beginEnter;Init;Attempt(2);PrintResult;end.Trn y l mt gii php nhnh cn cn rt th s gii bi ton ngi du lch, trn thc tngi ta cn c nhiu cch nh gi nhnh cn cht hn na. Hy tham kho cc ti liu khc tm hiu v nhng phng php .4.5. DY ABCCho trc mt s nguyn dng N (N 100), hy tm mt xu ch gm cc k t A, B, Ctho mn 3 iu kin: C di NL Minh Hong 41. 28 Chuyn Hai on con bt k lin nhau u khc nhau (on con l mt dy k t lin tip ca xu) C t k t C nht.Cch gii:Khng trnh by, ngh t xem chng trnh hiu, ch ch thch k thut nhnh cn nhsau:Nu dy X[1..n] tho mn 2 on con bt k lin nhau u khc nhau, th trong 4 k t lintip bt k bao gi cng phi c 1 k t C. Nh vy vi mt dy con gm k k t lin tipca dy X th s k t C trong dy con bt buc phi k div 4.Ti bc th chn X[i], nu ta c T[i] k t C trong on chn t X[1] n X[i], thcho d cc bc quy tip sau lm tt nh th no chng na, s k t C s phi chnthm bao gi cng (n - i) div 4. Tc l nu theo phng n chn X[i] nh th ny th s kt C trong dy kt qu (khi chn n X[n]) cho d c lm tt n u cng T[i] + (n - i)div 4. Ta dng con s ny nh gi nhnh cn, nu n nhiu hn s k t C trongBestConfig th chc chn c lm tip cng ch c mt cu hnh ti t hn, ta b qua ngaycch chn ny v th phng n khc.Input: file vn bn ABC.INP cha s nguyn dng n 100Output: file vn bn ABC.OUT ghi xu tm cABC.INP ABC.OUT10ABACABCBAB"C" Letter Count : 2P_1_04_2.PAS * Dy ABC{$MODE DELPHI} (*This program uses 32-bit Integer [-231..231 - 1]*)program ABC_STRING;constInputFile = ABC.INP;OutputFile = ABC.OUT;max = 100;varN, MinC: Integer;X, Best: array[1..max] of A..C;T: array[0..max] of Integer; {T[i] cho bit s k t C trong on t X[1] n X[i]}f: Text;{Hm Same(i, l) cho bit xu gm l k t kt thc ti X[i] c trng vi xu l k t lin trc n khng ?}function Same(i, l: Integer): Boolean;varj, k: Integer;beginj := i - l; {j l v tr cui on lin trc on }for k := 0 to l - 1 do if X[i - k] X[j - k] then begin Same := False; Exit; end;Same := True;end;{Hm Check(i) cho bit X[i] c lm hng tnh khng lp ca dy X[1..i] hay khng}function Check(i: Integer): Boolean;varHSPHN 1999-2004 42. Bi ton lit k29l: Integer;beginfor l := 1 to i div 2 do {Th cc di l} if Same(i, l) then {Nu c xu di l kt thc bi X[i] b trng vi xu lin trc} begin Check := False; Exit; end;Check := True;end;{Gi li kt qu va tm c vo BestConfig (MinC v mng Best)}procedure KeepResult;beginMinC := T[N];Best := X;end;{Thut ton quay lui c nhnh cn}procedure Attempt(i: Integer); {Th cc gi tr c th ca X[i]}varj: A..C;beginfor j := A to C do {Xt tt c cc gi tr}begin X[i] := j; if Check(i) then {Nu thm gi tr vo khng lm hng tnh khng lp}beginif j = C then T[i] := T[i - 1] + 1 {Tnh T[i] qua T[i - 1]}else T[i] := T[i - 1];if T[i] + (N - i) div 4 < MinC then {nh gi nhnh cn}if i = N then KeepResultelse Attempt(i + 1); end; end;end;procedure PrintResult;vari: Integer;beginfor i := 1 to N do Write(f, Best[i]);WriteLn(f);WriteLn(f, "C" Letter Count : , MinC);end;beginAssign(f, InputFile); Reset(f);ReadLn(f, N);Close(f);Assign(f, OutputFile); Rewrite(f);T[0] := 0;MinC := N; {Khi to cu hnh BestConfig ban u rt ti}Attempt(1);PrintResult;Close(f);end.Nu ta thay bi ton l tm xu t k t B nht m vn vit chng trnh tng t nh trn thchng trnh s chy chm hn cht t. L do: th tc Attempt trn s th ln lt cc gi trA, B, ri mi n C. C ngha ngay trong cch tm, n tit kim s dng k t C nhtnn trong phn ln cc b d liu n nhanh chng tm ra li gii hn so vi bi ton tngL Minh Hong 43. 30 Chuyn ng tm xu t k t B nht. Chnh v vy m nu nh bi yu cu t k t B nht ta clp chng trnh lm yu cu t k t C nht, ch c iu khi in kt qu, ta i vai tr B, Ccho nhau. y l mt v d cho thy sc mnh ca thut ton quay lui khi kt hp vi kthut nhnh cn, nu vit quay lui thun tu hoc nh gi nhnh cn khng tt th vi N =100, ti cng khng kin nhn i chng trnh cho kt qu (ch bit rng > 3 gi).Trong khi khi N = 100, vi chng trnh trn ch chy ht hn 1 giy cho kt qu l xu 27k t C.Ni chung, t khi ta gp bi ton m ch cn s dng mt thut ton, mt m hnh k thut cit l c th gii c. Thng thng cc bi ton thc t i hi phi c s tng hp, phatrn nhiu thut ton, nhiu k thut mi c c mt li gii tt. Khng c lm dng mtk thut no v cng khng xem thng mt phng php no khi bt tay vo gii mt biton tin hc. Thut ton quay lui cng khng phi l ngoi l, ta phi bit phi hp mt cchuyn chuyn vi cc thut ton khc th khi n mi thc s l mt cng c mnh.Bi tp:Bi 1Mt dy du ngoc hp l l mt dy cc k t ( v ) c nh ngha nh sau:i. Dy rng l mt dy du ngoc hp l su 0ii. Nu A l dy du ngoc hp l su k th (A) l dy du ngoc hp l su k + 1iii. Nu A v B l hay dy du ngoc hp l vi su ln lt l p v q th AB l dy du ngoc hp l su l max(p, q) di ca mt dy ngoc l tng s k t ( v )V d: C 5 dy du ngoc hp l di 8 v su 3:1. ((()()))2. ((())())3. ((()))()4. (()(()))5. ()((()))Bi ton t ra l khi cho bit trc hai s nguyn dng n v k. Hy lit k ht cc dyngoc hp l c di l n v su l k (lm c vi n cng ln cng tt).Bi 2Cho mt bi mn kch thc mxn vung, trn mt c th c cha mt qu mn hoc khng, biu din bn mn , ngi ta c hai cch:Cch 1: dng bn nh du: s dng mt li vung kch thc mxn, trn ti (i, j)ghi s 1 nu c mn, ghi s 0 nu khng c mnCch 2: dng bn mt : s dng mt li vung kch thc mxn, trn ti (i, j) ghimt s trong khong t 0 n 8 cho bit tng s mn trong cc ln cn vi (i, j) ( ln cnvi (i, j) l c chung vi (i, j) t nht 1 nh).Gi thit rng hai bn c ghi chnh xc theo tnh trng mn trn hin trng. HSPHN 1999-2004 44. Bi ton lit k31V nguyn tc, lc ci bi mn phi v c bn nh du v bn mt , tuy nhin saumt thi gian di, khi ngi ta mun g mn ra khi bi th vn ht sc kh khn bi bn nh du b tht lc !!. Cng vic ca cc lp trnh vin l: T bn mt , hy tito li bn nh du ca bi mn.D liu: Vo t file vn bn MINE.INP, cc s trn 1 dng cch nhau t nht 1 du cch Dng 1: Ghi 2 s nguyn dng m, n (2 m, n 30) m dng tip theo, dng th i ghi n s trn hng i ca bn mt theo ng th t t tri qua phi.Kt qu: Ghi ra file vn bn MINE.OUT, cc s trn 1 dng ghi cch nhau t nht 1 ducch Dng 1: Ghi tng s lng mn trong bi m dng tip theo, dng th i ghi n s trn hng i ca bn nh du theo ng th t t tri qua phi.V d:MINE.INP MINE.OUT10 1580032333 5 3 4 4 5 4 4 4 3 101111 0 1 1 1 1 1 1 1 1143554 5 4 7 7 7 5 6 6 5 001001 1 1 0 1 1 1 0 1 1143543 5 4 4 4 4 3 4 5 5 001001 0 0 1 1 1 0 0 1 1142445 4 2 4 4 3 2 3 5 4 101110 0 1 0 0 0 0 0 1 1132544 2 2 3 2 3 3 2 5 2 100011 1 0 0 1 0 0 1 0 1232335 3 2 4 4 3 4 2 4 1 000010 0 0 0 1 1 0 1 0 0232433 2 3 4 6 6 5 3 3 1 011001 0 0 1 1 0 0 1 0 0264524 1 3 3 5 5 5 6 4 3 101010 1 0 1 1 1 1 0 1 0465735 3 5 5 6 5 4 4 4 3 011010 0 0 0 0 1 1 1 1 1244423 1 2 2 2 3 3 3 4 2 111110 1 1 1 1 0 0 0 0 1L Minh Hong 45. PHN 2. CU TRC D LIU VGII THUTHt nhn ca cc chng trnh my tnh l s lu tr v x l thng tin.Vic t chc d liu nh th no c nh hng rt ln n cch thc xl d liu cng nh tc thc thi v s chim dng b nh cachng trnh. Vic c t bng cc cu trc tng qut (generic structures)v cc kiu d liu tru tng (abstract data types) cn cho php ngilp trnh c th d dng hnh dung ra cc cng vic c th v gim btcng sc trong vic chnh sa, nng cp v s dng li cc thit k c.Mc ch ca phn ny l cung cp nhng hiu bit nn tng trong victhit k mt chng trnh my tnh, thy r c s cn thit ca vicphn tch, la chn cu trc d liu ph hp cho tng bi ton c th;ng thi kho st mt s cu trc d liu v thut ton kinh in m lptrnh vin no cng cn phi nm vng. 46. 34Chuyn 1. CC BC C BN KHI TIN HNH GII CC BI TON TINHC1.1. XC NH BI TONInput Process Output (D liu vo X l Kt qu ra)Vic xc nh bi ton tc l phi xc nh xem ta phi gii quyt vn g?, vi gi thit no cho v li gii cn phi t nhng yu cu g. Khc vi bi ton thun tu ton hc ch cnxc nh r gi thit v kt lun ch khng cn xc nh yu cu v li gii, i khi nhng biton tin hc ng dng trong thc t ch cn tm li gii tt ti mc no , thm ch l ti mc chp nhn c. Bi li gii tt nht i hi qu nhiu thi gian v chi ph.V d:Khi ci t cc hm s phc tp trn my tnh. Nu tnh bng cch khai trin chui v hn th chnh xc cao hn nhng thi gian chm hn hng t ln so vi phng php xp x. Trnthc t vic tnh ton lun lun cho php chp nhn mt sai s no nn cc hm s trongmy tnh u c tnh bng phng php xp x ca gii tch sXc nh ng yu cu bi ton l rt quan trng bi n nh hng ti cch thc gii quyt vcht lng ca li gii. Mt bi ton thc t thng cho bi nhng thng tin k