Giai thuat va lap trinh(rat hay)

316 917 0
Giai thuat va lap trinh(rat hay)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Giai thuat va lap trinh

LÊ MINH HOÀNG  Bài ging chuyên đ i hc S phm Hà Ni, 1999-2002 Li cm n Tôi mun bày t lòng bit n đi vi nhng ngi thy đã ch dy tn tình trong nhng nm tháng đy khó khn khi tôi mi bc vào hc tin hc lp trình. S hiu bit lòng nhit tình ca các thy không nhng đã cung cp cho tôi nhng kin thc quý báu mà còn là tm gng sáng cho tôi noi theo khi tôi đng trên bc ging cng vi t cách là mt ngi thy. Cun tài liu này đc vit da trên nhng tài liu thu thp đc t nhiu ngun khác nhau, bi công sc ca nhiu th h thy trò đã tng ging dy hc tp ti Khi Ph thông chuyên Toán- Tin, i hc S phm Hà Ni, còn tôi ch là ngi tng hp li. Qua đây, tôi mun gi li cm n ti các đng nghip đã đc đóng góp nhng ý kin quí báu, cm n các bn hc sinh - nhng con ngi đã trc tip làm nên cun sách này. Do thi gian hn hp, mt s chuyên đ tuy đã có nhng cha kp chnh sa đa vào tài liu. Bn đc có th tham kho thêm trong phn tra cu. Rt mong nhn đc nhng li nhn xét góp ý ca các bn đ hoàn thin cun sách này. Tokyo, 28 tháng 4 nm 2003 Lê Minh Hoàng  i  MC LC PHN 1. BÀI TOÁN LIT KÊ . 1 §1. NHC LI MT S KIN THC I S T HP 2 1.1. CHNH HP LP 2 1.2. CHNH HP KHÔNG LP .2 1.3. HOÁN V .2 1.4. T HP 3 §2. PHNG PHÁP SINH (GENERATION) 4 2.1. SINH CÁC DÃY NH PHÂN  DÀI N .5 2.2. LIT KÊ CÁC TP CON K PHN T 6 2.3. LIT KÊ CÁC HOÁN V 8 §3. THUT TOÁN QUAY LUI 12 3.1. LIT KÊ CÁC DÃY NH PHÂN  DÀI N 12 3.2. LIT KÊ CÁC TP CON K PHN T 13 3.3. LIT KÊ CÁC CHNH HP KHÔNG LP CHP K 15 3.4. BÀI TOÁN PHÂN TÍCH S .16 3.5. BÀI TOÁN XP HU .18 §4. K THUT NHÁNH CN .24 4.1. BÀI TOÁN TI U .24 4.2. S BÙNG N T HP 24 4.3. MÔ HÌNH K THUT NHÁNH CN .24 4.4. BÀI TOÁN NGI DU LCH 25 4.5. DÃY ABC 28 PHN 2. CU TRÚC D LIU GII THUT . 33 §1. CÁC BC C BN KHI TIN HÀNH GII CÁC BÀI TOÁN TIN HC .34 1.1. XÁC NH BÀI TOÁN .34 1.2. TÌM CU TRÚC D LIU BIU DIN BÀI TOÁN 34 1.3. TÌM THUT TOÁN 35 1.4. LP TRÌNH .37 1.5. KIM TH 37 1.6. TI U CHNG TRÌNH .38 §2. PHÂN TÍCH THI GIAN THC HIN GII THUT .40 2.1.  PHC TP TÍNH TOÁN CA GII THUT 40 2.2. XÁC NH  PHC TP TÍNH TOÁN CA GII THUT 40 2.3.  PHC TP TÍNH TOÁN VI TÌNH TRNG D LIU VÀO 43 2.4. CHI PHÍ THC HIN THUT TOÁN .43  ii  §3.  QUY GII THUT  QUY . 45 3.1. KHÁI NIM V  QUY 45 3.2. GII THUT  QUY 45 3.3. VÍ D V GII THUT  QUY 46 3.4. HIU LC CA  QUY . 50 §4. CU TRÚC D LIU BIU DIN DANH SÁCH 52 4.1. KHÁI NIM DANH SÁCH 52 4.2. BIU DIN DANH SÁCH TRONG MÁY TÍNH 52 §5. NGN XP HÀNG I 58 5.1. NGN XP (STACK) . 58 5.2. HÀNG I (QUEUE) . 60 §6. CÂY (TREE) 64 6.1. NH NGHA . 64 6.2. CÂY NH PHÂN (BINARY TREE) . 65 6.3. BIU DIN CÂY NH PHÂN 67 6.4. PHÉP DUYT CÂY NH PHÂN 69 6.5. CÂY K_PHÂN 70 6.6. CÂY TNG QUÁT . 71 §7. KÝ PHÁP TIN T, TRUNG T HU T . 74 7.1. BIU THC DI DNG CÂY NH PHÂN . 74 7.2. CÁC KÝ PHÁP CHO CÙNG MT BIU THC 74 7.3. CÁCH TÍNH GIÁ TR BIU THC 75 7.4. CHUYN T DNG TRUNG T SANG DNG HU T . 78 7.5. XÂY DNG CÂY NH PHÂN BIU DIN BIU THC 80 §8. SP XP (SORTING) 82 8.1. BÀI TOÁN SP XP 82 8.2. THUT TOÁN SP XP KIU CHN (SELECTIONSORT) . 84 8.3. THUT TOÁN SP XP NI BT (BUBBLESORT) . 85 8.4. THUT TOÁN SP XP KIU CHÈN . 85 8.5. SHELLSORT . 87 8.6. THUT TOÁN SP XP KIU PHÂN ON (QUICKSORT) 88 8.7. THUT TOÁN SP XP KIU VUN NG (HEAPSORT) 92 8.8. SP XP BNG PHÉP M PHÂN PHI (DISTRIBUTION COUNTING) . 95 8.9. TÍNH N NH CA THUT TOÁN SP XP (STABILITY) . 96 8.10. THUT TOÁN SP XP BNG C S (RADIXSORT) 97 8.11. THUT TOÁN SP XP TRN (MERGESORT) 102 8.12. CÀI T . 105 8.13. ÁNH GIÁ, NHN XÉT 112 §9. TÌM KIM (SEARCHING) . 116  iii  9.1. BÀI TOÁN TÌM KIM 116 9.2. TÌM KIM TUN T (SEQUENTIAL SEARCH) 116 9.3. TÌM KIM NH PHÂN (BINARY SEARCH) 116 9.4. CÂY NH PHÂN TÌM KIM (BINARY SEARCH TREE - BST) .117 9.5. PHÉP BM (HASH) 122 9.6. KHOÁ S VI BÀI TOÁN TÌM KIM .122 9.7. CÂY TÌM KIM S HC (DIGITAL SEARCH TREE - DST) .123 9.8. CÂY TÌM KIM C S (RADIX SEARCH TREE - RST) .126 9.9. NHNG NHN XÉT CUI CÙNG .131 PHN 3. QUY HOCH NG 133 §1. CÔNG THC TRUY HI 134 1.1. VÍ D .134 1.2. CI TIN TH NHT 135 1.3. CI TIN TH HAI 137 1.4. CÀI T  QUY 137 §2. PHNG PHÁP QUY HOCH NG .139 2.1. BÀI TOÁN QUY HOCH 139 2.2. PHNG PHÁP QUY HOCH NG .139 §3. MT S BÀI TOÁN QUY HOCH NG 143 3.1. DÃY CON N IU TNG DÀI NHT 143 3.2. BÀI TOÁN CÁI TÚI 148 3.3. BIN I XÂU .150 3.4. DÃY CON CÓ TNG CHIA HT CHO K .154 3.5. PHÉP NHÂN T HP DÃY MA TRN 159 3.6. BÀI TP LUYN TP 163 PHN 4. CÁC THUT TOÁN TRÊN  TH 169 §1. CÁC KHÁI NIM C BN .170 1.1. NH NGHA  TH (GRAPH) .170 1.2. CÁC KHÁI NIM 171 §2. BIU DIN  TH TRÊN MÁY TÍNH 173 2.1. MA TRN LIN K (MA TRN K) .173 2.2. DANH SÁCH CNH .174 2.3. DANH SÁCH K .175 2.4. NHN XÉT 176 §3. CÁC THUT TOÁN TÌM KIM TRÊN  TH .177 3.1. BÀI TOÁN .177 3.2. THUT TOÁN TÌM KIM THEO CHIU SÂU (DEPTH FIRST SEARCH) .178 3.3. THUT TOÁN TÌM KIM THEO CHIU RNG (BREADTH FIRST SEARCH) .184  iv  3.4.  PHC TP TÍNH TOÁN CA BFS DFS 189 §4. TÍNH LIÊN THÔNG CA  TH . 190 4.1. NH NGHA . 190 4.2. TÍNH LIÊN THÔNG TRONG  TH VÔ HNG 191 4.3.  TH Y  THUT TOÁN WARSHALL . 191 4.4. CÁC THÀNH PHN LIÊN THÔNG MNH 195 §5. VÀI NG DNG CA CÁC THUT TOÁN TÌM KIM TRÊN  TH . 205 5.1. XÂY DNG CÂY KHUNG CA  TH . 205 5.2. TP CÁC CHU TRÌNH C BN CA  TH 208 5.3. NH CHIU  TH BÀI TOÁN LIT KÊ CU 208 5.4. LIT KÊ KHP 214 §6. CHU TRÌNH EULER, NG I EULER,  TH EULER . 218 6.1. BÀI TOÁN 7 CÁI CU 218 6.2. NH NGHA . 218 6.3. NH LÝ . 218 6.4. THUT TOÁN FLEURY TÌM CHU TRÌNH EULER . 219 6.5. CÀI T . 220 6.6. THUT TOÁN TT HN . 222 §7. CHU TRÌNH HAMILTON, NG I HAMILTON,  TH HAMILTON 225 7.1. NH NGHA . 225 7.2. NH LÝ . 225 7.3. CÀI T . 226 §8. BÀI TOÁN NG I NGN NHT 230 8.1.  TH CÓ TRNG S . 230 8.2. BÀI TOÁN NG I NGN NHT . 230 8.3. TRNG HP  TH KHÔNG CÓ CHU TRÌNH ÂM - THUT TOÁN FORD BELLMAN . 232 8.4. TRNG HP TRNG S TRÊN CÁC CUNG KHÔNG ÂM - THUT TOÁN DIJKSTRA . 234 8.5. THUT TOÁN DIJKSTRA CU TRÚC HEAP . 237 8.6. TRNG HP  TH KHÔNG CÓ CHU TRÌNH - TH T TÔ PÔ 240 8.7. NG I NGN NHT GIA MI CP NH - THUT TOÁN FLOYD . 242 8.8. NHN XÉT . 245 §9. BÀI TOÁN CÂY KHUNG NH NHT . 247 9.1. BÀI TOÁN CÂY KHUNG NH NHT 247 9.2. THUT TOÁN KRUSKAL (JOSEPH KRUSKAL - 1956) . 247 9.3. THUT TOÁN PRIM (ROBERT PRIM - 1957) 252 §10. BÀI TOÁN LUNG CC I TRÊN MNG 256 10.1. BÀI TOÁN 256 10.2. LÁT CT, NG TNG LUNG, NH LÝ FORD - FULKERSON . 256 10.3. CÀI T . 258  v  10.4. THUT TOÁN FORD - FULKERSON (L.R.FORD & D.R.FULKERSON - 1962) 262 §11. BÀI TOÁN TÌM B GHÉP CC I TRÊN  TH HAI PHÍA .266 11.1.  TH HAI PHÍA (BIPARTITE GRAPH) 266 11.2. BÀI TOÁN GHÉP ÔI KHÔNG TRNG CÁC KHÁI NIM 266 11.3. THUT TOÁN NG M 267 11.4. CÀI T 268 §12. BÀI TOÁN TÌM B GHÉP CC I VI TRNG S CC TIU TRÊN  TH HAI PHÍA - THUT TOÁN HUNGARI .273 12.1. BÀI TOÁN PHÂN CÔNG .273 12.2. PHÂN TÍCH .273 12.3. THUT TOÁN 274 12.4. CÀI T 278 12.5. BÀI TOÁN TÌM B GHÉP CC I VI TRNG S CC I TRÊN  TH HAI PHÍA .284 12.6. NÂNG CP 284 §13. BÀI TOÁN TÌM B GHÉP CC I TRÊN  TH 290 13.1. CÁC KHÁI NIM 290 13.2. THUT TOÁN EDMONDS (1965) 291 13.3. PHNG PHÁP LAWLER (1973) .293 13.4. CÀI T 295 13.5.  PHC TP TÍNH TOÁN .299 TÀI LIU C THÊM 301  vi  HÌNH V Hình 1: Cây tìm kim quay lui trong bài toán lit kê dãy nh phân 13 Hình 2: Xp 8 quân hu trên bàn c 8x8 19 Hình 3: ng chéo B-TN mang ch s 10 đng chéo N-TB mang ch s 0 19 Hình 4: Lu đ thut gii (Flowchart) 36 Hình 5: Tháp Hà Ni 49 Hình 6: Cu trúc nút ca danh sách ni đn . 53 Hình 7: Danh sách ni đn . 53 Hình 8: Cu trúc nút ca danh sách ni kép . 55 Hình 9: Danh sách ni kép . 55 Hình 10: Danh sách ni vòng mt hng . 55 Hình 11: Danh sách ni vòng hai hng 56 Hình 12: Dùng danh sách vòng mô t Queue . 61 Hình 13: Di chuyn toa tàu . 63 Hình 14: Di chuyn toa tàu (2) . 63 Hình 15: Cây 64 Hình 16: Mc ca các nút trên cây . 65 Hình 17: Cây biu din biu thc . 65 Hình 18: Các dng cây nh phân suy bin 66 Hình 19: Cây nh phân hoàn chnh cây nh phân đy đ . 66 Hình 20: ánh s các nút ca cây nh phân đy đ đ biu din bng mng . 67 Hình 21: Nhc đim ca phng pháp biu din cây bng mng 68 Hình 22: Cu trúc nút ca cây nh phân .68 Hình 23: Biu din cây bng cu trúc liên kt 69 Hình 24: ánh s các nút ca cây 3_phân đ biu din bng mng . 71 Hình 25: Biu din cây tng quát bng mng 72 Hình 26: Cu trúc nút ca cây tng quát 73 Hình 27: Biu thc di dng cây nh phân . 74 Hình 28: Vòng lp trong ca QuickSort . 89 Hình 29: Trng thái trc khi gi đ quy . 90 Hình 30: Heap 92 Hình 31: Vun đng . 93 Hình 32: o giá tr k 1 cho k n xét phn còn li 93 Hình 33: Vun phn còn li thành đng ri li đo tr k 1 cho k n-1 94 Hình 34: ánh s các bit 97 Hình 35: Thut toán sp xp trn . 102 Hình 36: Cài đt các thut toán sp xp vi d liu ln . 114 Hình 37: Cây nh phân tìm kim 118 Hình 38: Xóa nút lá  cây BST 119 Hình 39. Xóa nút ch có mt nhánh con trên cây BST . 120 . InputFile = 'BSTR.INP'; OutputFile = 'BSTR.OUT'; max = 30; var x: array[1..max] of Integer; n, i: Integer; f: Text; begin Assign(f, InputFile);

Ngày đăng: 12/09/2013, 07:52

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan