Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Cao đẳng - Đại học Công nghệ thông tin Specialized school book in computer science (bai giang chuyen de tin hoc)...

Tài liệu Specialized school book in computer science (bai giang chuyen de tin hoc)

.PDF
312
227
103

Mô tả:

i M CL C PH N 1. BÀI TOÁN LI T KÊ ................................................................................. 1 §1. NH C L I M T S KI N TH C IS 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 4.2. S U.........................................................................................................................................24 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 §1. CÁC B 1.1. XÁC CC LI U VÀ GI I THU T ............................................. 33 B N KHI TI N HÀNH GI I CÁC BÀI TOÁN TIN H C...............................34 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 1.6. T I U CH ......................................................................................................................................................37 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 2.3. NH PH C T P TÍNH TOÁN C A GI I THU T ....................................................................40 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 VÀ GI I THU T 3.1. KHÁI NI M V QUY ............................................................................................... 45 QUY.............................................................................................................................. 45 3.2. GI I THU T QUY .................................................................................................................................. 45 3.3. VÍ D V GI I THU T 3.4. HI U L C C A §4. C U TRÚC D QUY ................................................................................................................ 46 QUY ............................................................................................................................. 50 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 VÀ 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 7.1. BI U TH C D VÀ H U T ............................................................................. 74 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 8.8. S P X P B NG PHÉP 8.9. TÍNH N NG (HEAPSORT) ...................................................................... 92 M PHÂN PH I (DISTRIBUTION COUNTING) ............................................. 95 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 §2. PH T QUY ........................................................................................................................................137 NG PHÁP QUY HO CH NG .........................................................................................139 2.1. BÀI TOÁN QUY HO CH ............................................................................................................................139 2.2. PH §3. M T S NG PHÁP QUY HO CH NG.......................................................................................................139 BÀI TOÁN QUY HO CH 3.1. DÃY CON NG ..................................................................................143 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 §1. CÁC KHÁI NI M C 1.1. NH NGH A TH .................................................. 169 B N .............................................................................................................170 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 VÀ DFS ...................................................................................... 189 §4. TÍNH LIÊN THÔNG C A 4.1. TH ............................................................................................... 190 NH NGH A ............................................................................................................................................... 190 4.2. TÍNH LIÊN THÔNG TRONG 4.3. TH Y TH VÔ H NG.................................................................................. 191 VÀ 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 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 5.3. NH CHI U TH ............................... 205 TH ........................................................................................ 208 TH VÀ 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 8.1. NG I NG N NH T .......................................................................................... 230 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 VÀ C U TRÚC HEAP ................................................................................... 237 8.6. TR 8.7. NG H P TH KHÔNG CÓ CHU TRÌNH - TH NG I NG N NH T GI A M I C P T TÔ PÔ .................................................... 240 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, 10.3. CÀI NG T NG LU NG, NH LÝ FORD - FULKERSON................................................. 256 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 11.1. GHÉP C C I TRÊN TH HAI PHÍA...........................................266 TH HAI PHÍA (BIPARTITE GRAPH) ................................................................................................266 11.2. BÀI TOÁN GHÉP ÔI KHÔNG TR NG VÀ CÁC KHÁI NI M............................................................266 11.3. THU T TOÁN 11.4. CÀI NG M ......................................................................................................................267 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 13.5. TÀI LI U T ......................................................................................................................................................295 PH C T P TÍNH TOÁN .....................................................................................................................299 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 và Hình 4: L u ng chéo N-TB mang ch s 0 ...................................................... 19 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 Hình 7: Danh sách n i n..................................................................................................................... 53 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 và cây nh phân y Hình 20: ánh s các nút c a cây nh phân bi u di n b ng m ng................................................................... 67 Hình 21: Nh c i m c a ph y ............................................................................................. 66 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 Hình 32: ng........................................................................................................................................................... 93 o giá tr k1 cho kn và 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 k1 cho kn-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 vii Hình 40: Xóa nút có c hai nhánh con trên cây BST thay b ng nút c c ph i c a cây con trái .......................................120 Hình 41: Xóa nút có c hai nhánh con trên cây BST thay b ng nút c c trái c a cây con ph i .......................................120 Hình 42: ánh s các bit.................................................................................................................................................123 Hình 43: Cây tìm ki m s h c.........................................................................................................................................124 Hình 44: Cây tìm ki m c s ..........................................................................................................................................126 Hình 45: V i dài dãy bit z = 3, cây tìm ki m c s g m các khoá 2, 4, 5 và sau khi thêm giá tr 7 ..........................127 Hình 46: RST ch a các khoá 2, 4, 5, 7 và RST sau khi lo i b giá tr 7 .........................................................................128 Hình 47: Cây tìm ki m c s a) và Trie tìm ki m c s b) .............................................................................................130 Hình 48: Hàm quy tính s Fibonacci..........................................................................................................................141 Hình 49: Tính toán và truy v t ........................................................................................................................................144 Hình 50: Truy v t............................................................................................................................................................153 Hình 51: Ví d v mô hình Hình 52: Phân lo i th ...................................................................................................................................170 th ................................................................................................................................................171 Hình 53 ...........................................................................................................................................................................174 Hình 54 ...........................................................................................................................................................................175 Hình 55: th và ng i ...........................................................................................................................................177 Hình 56: Cây DFS...........................................................................................................................................................180 Hình 57: Cây BFS ...........................................................................................................................................................184 Hình 58: Thu t toán loang ..............................................................................................................................................187 Hình 59: th G và các thành ph n liên thông G1, G2, G3 c a nó ..............................................................................190 Hình 60: Kh p và c u .....................................................................................................................................................190 Hình 61: Liên thông m nh và liên thông y u..................................................................................................................191 Hình 62: th Hình 63: n y ....................................................................................................................................................192 th vô h ng và bao óng c a nó ........................................................................................................192 Hình 64: Ba d ng cung ngoài cây DFS ...........................................................................................................................196 Hình 65: Thu t toán Tarjan "b " cây DFS ......................................................................................................................198 Hình 66: ánh s l i, o chi u các cung và duy t BFS v i cách ch n các nh xu t phát ng c l i v i th t duy t xong (th t 11, 10… 3, 2, 1) ................................................................................................................................204 Hình 67: th G và m t s ví d cây khung T1, T2, T3 c a nó ...................................................................................207 Hình 68: Cây khung DFS (a) và cây khung BFS (b) (M i tên ch chi u i th m các Hình 69: Phép nh)............................................207 nh chi u DFS........................................................................................................................................210 Hình 70: Phép ánh s và ghi nh n cung ng Hình 71 Duy t DFS, xác Hình 72: Mô hình c lên cao nh t.........................................................................................212 nh cây DFS và các cung ng c............................................................................................215 th c a bài toán b y cái c u...........................................................................................................218 Hình 73 ...........................................................................................................................................................................219 Hình 74 ...........................................................................................................................................................................219 Hình 75 ...........................................................................................................................................................................225 Hình 76: Phép ánh l i ch s theo th t tôpô ...............................................................................................................240 Hình 77: Hai cây g c r1 và r2 và cây m i khi h p nh t chúng ........................................................................................248 Hình 78: M ng v i các kh n ng thông qua (1 phát, 6 thu) Hình 79: M ng G, lu ng trên các cung (1 phát, 6 thu) và Hình 80: Lu ng trên m ng G tr và m t lu ng c a nó v i giá tr 7 ...................................256 th t ng lu ng t ng ng..................................................257 c và sau khi t ng........................................................................................................258 viii Hình 81: th hai phía ................................................................................................................................................. 266 Hình 82: th hai phía và b ghép M .......................................................................................................................... 267 Hình 83: Mô hình lu ng c a bài toán tìm b ghép c c i trên th hai phía ............................................................. 271 Hình 84: Phép xoay tr ng s c nh.................................................................................................................................. 274 Hình 85: Thu t toán Hungari.......................................................................................................................................... 277 Hình 86: Cây pha "m c" l n h n sau m i l n xoay tr ng s c nh và tìm Hình 87: ng........................................................... 285 th G và m t b ghép M............................................................................................................................. 290 Hình 88: Phép ch p Blossom ......................................................................................................................................... 292 Hình 89: N Blossom dò ng xuyên qua Blossom................................................................................................ 292 ix CH NG TRÌNH P_1_02_1.PAS * Thu t toán sinh li t kê các dãy nh phân dài n ...................................................................................6 P_1_02_2.PAS * Thu t toán sinh li t kê các t p con k ph n t ..........................................................................................8 P_1_02_3.PAS * Thu t toán sinh li t kê hoán v ................................................................................................................9 P_1_03_1.PAS * Thu t toán quay lui li t kê các dãy nh phân dài n...........................................................................12 P_1_03_2.PAS * Thu t toán quay lui li t kê các t p con k ph n t ..................................................................................14 P_1_03_3.PAS * Thu t toán quay lui li t kê các ch nh h p không l p ch p k.................................................................15 P_1_03_4.PAS * Thu t toán quay lui li t kê các cách phân tích s ..................................................................................17 P_1_03_5.PAS * Thu t toán quay lui gi i bài toán x p h u .............................................................................................21 P_1_04_1.PAS * K thu t nhánh c n dùng cho bài toán ng i du l ch............................................................................26 P_1_04_2.PAS * Dãy ABC ..............................................................................................................................................28 P_2_07_1.PAS * Tính giá tr bi u th c RPN....................................................................................................................76 P_2_07_2.PAS * Chuy n bi u th c trung t sang d ng RPN...........................................................................................79 P_2_08_1.PAS * Các thu t toán s p x p ........................................................................................................................105 P_3_01_1.PAS * m s cách phân tích s n ................................................................................................................135 P_3_01_2.PAS * m s cách phân tích s n ................................................................................................................136 P_3_01_3.PAS * m s cách phân tích s n ................................................................................................................136 P_3_01_4.PAS * m s cách phân tích s n ................................................................................................................137 P_3_01_5.PAS * m s cách phân tích s n dùng quy............................................................................................137 P_3_01_6.PAS * m s cách phân tích s n dùng quy............................................................................................138 P_3_03_1.PAS * Tìm dãy con n i u t ng dài nh t....................................................................................................144 P_3_03_2.PAS * C i ti n thu t toán tìm dãy con n i u t ng dài nh t.......................................................................146 P_3_03_3.PAS * Bài toán cái túi ....................................................................................................................................149 P_3_03_4.PAS * Bi n i xâu........................................................................................................................................153 P_3_03_5.PAS * Dãy con có t ng chia h t cho k...........................................................................................................156 P_3_03_6.PAS * Dãy con có t ng chia h t cho k...........................................................................................................158 P_3_03_7.PAS * Nhân t i u dãy ma tr n .....................................................................................................................162 P_4_03_1.PAS * Thu t toán tìm ki m theo chi u sâu ....................................................................................................178 P_4_03_2.PAS * Thu t toán tìm ki m theo chi u sâu không quy .............................................................................181 P_4_03_3.PAS * Thu t toán tìm ki m theo chi u r ng dùng hàng P_4_03_4.PAS * Thu t toán tìm ki m theo chi u r ng dùng ph i ..........................................................................185 ng pháp loang .........................................................187 P_4_04_1.PAS * Thu t toán Warshall li t kê các thành ph n liên thông .......................................................................194 P_4_04_2.PAS * Thu t toán Tarjan li t kê các thành ph n liên thông m nh .................................................................201 P_4_05_1.PAS * Phép nh chi u DFS và li t kê c u ....................................................................................................213 P_4_05_2.PAS * Li t kê các kh p c a th .................................................................................................................216 P_4_06_1.PAS * Thu t toán Fleury tìm chu trình Euler.................................................................................................220 P_4_06_2.PAS * Thu t toán hi u qu tìm chu trình Euler .............................................................................................223 P_4_07_1.PAS * Thu t toán quay lui li t kê chu trình Hamilton ...................................................................................226 P_4_08_1.PAS * Thu t toán Ford-Bellman....................................................................................................................233 P_4_08_2.PAS * Thu t toán Dijkstra .............................................................................................................................235 P_4_08_3.PAS * Thu t toán Dijkstra và c u trúc Heap .................................................................................................237 x P_4_08_4.PAS * ng i ng n nh t trên th không có chu trình ........................................................................... 241 P_4_08_5.PAS * Thu t toán Floyd ................................................................................................................................ 243 P_4_09_1.PAS * Thu t toán Kruskal............................................................................................................................. 249 P_4_09_2.PAS * Thu t toán Prim.................................................................................................................................. 252 P_4_10_1.PAS * Thu t toán tìm lu ng c c i trên m ng ............................................................................................ 259 P_4_10_2.PAS * Thu t toán Ford-Fulkerson................................................................................................................. 262 P_4_11_1.PAS * Thu t toán ng m tìm b ghép c c i ........................................................................................ 269 P_4_12_1.PAS * Thu t toán Hungari ............................................................................................................................ 280 P_4_12_2.PAS * Cài P_4_13_1.PAS * Ph t ph ng pháp Kuhn-Munkres O(n3) ....................................................................................... 286 ng pháp Lawler áp d ng cho thu t toán Edmonds..................................................................... 296 PH N 1. BÀI TOÁN LI T KÊ Có m t s bài toán trên th c t yêu c u ch rõ: trong m t t p các t ng cho tr nh t c có bao nhiêu i t nh. Bài toán ó g i là bài toán Trong l p các bài toán nh ng c u hình tìm i ng tho mãn nh ng i u ki n m. m, có nh ng bài toán còn yêu c u ch rõ c tho mãn i u ki n ã cho là nh ng c u hình nào. Bài toán yêu c u a ra danh sách các c u hình có th có g i là bài toán li t kê. gi i bài toán li t kê, c n ph i xác th theo ó l n l t xây d ng nh c m t thu t toán có c t t c các c u hình ang quan tâm. Có nhi u ph ng pháp li t kê, nh ng chúng c n ph i áp ng hai yêu c u d i ây: Không c l p l i m t c u hình Không c c b sót m t c u hình Có th nói r ng, ph ng pháp li t kê là ph ng k cu i cùng c m t s bài toán t h p hi n nay. Khó kh n chính c a ph pháp này chính là s bùng n t h p d n t i s gian và th i gian th c hi n ch gi i ng òi h i l n v không ng trình. Tuy nhiên cùng v i s phát tri n c a máy tính i n t , b ng ph ng pháp li t kê, nhi u bài toán t h p ã tìm th y l i gi i. Qua ó, ta c ng nên bi t r ng ch nên dùng ph ng pháp li t kê khi không còn m t ph ng pháp nào khác tìm ra l i gi i. Chính nh ng n l c gi i quy t các bài toán th c t không dùng ph ngành toán h c. ng pháp li t kê ã thúc y s phát tri n c a nhi u 2 Chuyên §1. NH C L I M T S KI N TH C IS T H P Cho S là m t t p h u h n g m n ph n t và k là m t s t nhiên. G i X là t p các s nguyên d ng t 1 n k: X = {1, 2, …, k} 1.1. CH NH H P L P M i ánh x f: X S. Cho t ng ng v i m i i X, m t và ch m t ph n t f(i) S. c g i là m t ch nh h p l p ch p k c a S. Nh ng do X là t p h u h n (k ph n t ) nên ánh x f có th xác nh qua b ng các giá tr f(1), f(2), …, f(k). Ví d : S = {A, B, C, D, E, F}; k = 3. M t ánh x f có th cho nh sau: i f(i) V y có th 1 E 2 C 3 E ng nh t f v i dãy giá tr (f(1), f(2), …, f(k)) và coi dãy giá tr này c ng là m t ch nh h p l p ch p k c a S. Nh ví d trên (E, C, E) là m t ch nh h p l p ch p 3 c a S. D dàng ch ng minh c k t qu sau b ng quy n p ho c b ng ph ng pháp ánh giá kh n ng l a ch n: S ch nh h p l p ch p k c a t p g m n ph n t : k nk An 1.2. CH NH H P KHÔNG L P Khi f là n ánh có ngh a là v i i, j X ta có f(i) = f(j) i = j. Nói m t cách d hi u, khi dãy giá tr f(1), f(2), …, f(k) g m các ph n t thu c S khác nhau ôi m t thì f c g i là m t ch nh h p không l p ch p k c a S. Ví d m t ch nh h p không l p (C, A, E): i f(i) 1 C 2 A 3 E S ch nh h p không l p ch p k c a t p g m n ph n t : Ak n n! (n k )! n (n 1)(n 2)...(n k 1) 1.3. HOÁN V Khi k = n. M t ch nh h p không l p ch p n c a S c g i là m t hoán v các ph n t c a S. Ví d : m t hoán v : (A, D, C, E, B, F) c a S = {A, B, C, D, E, F} i f(i) 1 A 2 D 3 C 4 E 5 B 6 F ý r ng khi k = n thì s ph n t c a t p X = {1, 2, …, n} úng b ng s ph n t c a S. Do tính ch t ôi m t khác nhau nên dãy f(1), f(2), …, f(n) s li t kê c h t các ph n t trong S. Nh v y f là toàn ánh. M t khác do gi thi t f là ch nh h p không l p nên f là n ánh. Ta có t ng ng 1-1 i h c S ph m Hà N i, 1999-2002 Bài toán li t kê 3 gi a các ph n t c a X và S, do ó f là song ánh. V y nên ta có th nh ngh a m t hoán v c a S là m t song ánh gi a {1, 2, …, n} và S. S hoán v c a t p g m n ph n t = s ch nh h p không l p ch p n: Pn 1.4. T n! H P M t t p con g m k ph n t c a S c g i là m t t h p ch p k c a S. L y m t t p con k ph n t c a S, xét t t c k! hoán v c a t p con này. D th y r ng các hoán v ó là các ch nh h p không l p ch p k c a S. Ví d l y t p {A, B, C} là t p con c a t p S trong ví d trên thì: (A, B, C), (C, A, B), (B, C, A), … là các ch nh h p không l p ch p 3 c a S. i u ó t c là khi li t kê t t c các ch nh h p không l p ch p k thì m i t h p ch p k s S t h p ch p k c a t p g m n ph n t : Ck n Ak n k! n! k!(n k )! S t p con c a t p n ph n t : C0 n Lê Minh Hoàng C1 n ... C n n 2n c tính k! l n. V y: 4 Chuyên §2. PH Ph NG PHÁP SINH (GENERATION) ng pháp sinh có th áp d ng gi i bài toán li t kê t h p t ra n u nh hai i u ki n sau tho mãn: Có th xác nh cc u hình Xây d ng c m t th t trên t p các c u hình t h p c n li t kê. T u tiên và c u hình cu i cùng trong th t ó có th bi t ó. c thu t toán t m t c u hình ch a ph i c u hình cu i, sinh ra c c u hình k ti p nó. Ph ng pháp sinh có th mô t nh sau: ; repeat < a ra c u hình ang có>; ; until ; Th t t i n Trên các ki u d li u n gi n chu n, ng i ta th ng nói t i khái ni m th t . Ví d trên ki u s thì có quan h : 1 < 2; 2 < 3; 3 < 10; …, trên ki u ký t Char thì c ng có quan h 'A' < 'B'; 'C' < 'c'… Xét quan h th t toàn ph n "nh h n ho c b ng" ký hi u " " trên m t t p h p S, là quan h hai ngôi tho mãn b n tính ch t: V i a, b, c S Tính ph bi n: Ho c là a Tính ph n x : a Tính ph n kh i ph i a; a i x ng: N u a Tính b c c u: N u có a Trong tr b, ho c b ng h p a b và b b và b b và a a thì b t bu c a = b. c thì a c. b, ta dùng ký hi u "<" cho g n, (ta ng m hi u các ký hi u nh , >, nh ngh a) Ví d nh quan h " " trên các s nguyên c ng nh trên các ki u vô h ng, li t kê là quan h th t toàn ph n. Trên các dãy h u h n, ng i ta c ng xác nh m t quan h th t : Xét a = (a1, a2, …, an) và b = (b1, b2, …, bn); trên các ph n t c a a1, …, an, b1, …, bn ã có quan h th t " ". Khi ó a Ho c ai = bi v i i: 1 b n u nh i n. Ho c t n t i m t s nguyên d ng k: 1 k 0) and (xi = 1) do i := i - 1; if i > 0 then begin Lê Minh Hoàng u tiên thì thay nó b ng s 1 và t t t c các ph n 6 Chuyên xi := 1; for j := i + 1 to n do xj := 0; end; D li u vào (Input): nh p t file v n b n BSTR.INP ch a s nguyên d ng n K t qu ra (Output): ghi ra file v n b n BSTR.OUT các dãy nh phân dài n. BSTR.INP 3 30 BSTR.OUT 000 001 010 011 100 101 110 111 P_1_02_1.PAS * Thu t toán sinh li t kê các dãy nh phân dài n program Binary_Strings; const InputFile = 'BSTR.INP'; OutputFile = 'BSTR.OUT'; max = 30; var x: array[1..max] of Integer; n, i: Integer; f: Text; begin Assign(f, InputFile); Reset(f); ReadLn(f, n); Close(f); Assign(f, OutputFile); Rewrite(f); FillChar(x, SizeOf(x), 0); {C u hình ban u x1 = x2 = … = xn := 0} repeat {Thu t toán sinh} for i := 1 to n do Write(f, x[i]); {In ra c u hình hi n t i} WriteLn(f); i := n; {xi là ph n t cu i dãy, lùi d n i cho t i khi g p s 0 ho c khi i = 0 thì d ng} while (i > 0) and (x[i] = 1) do Dec(i); if i > 0 then {Ch a g p ph i c u hình 11…1} begin x[i] := 1; {Thay xi b ng s 1} FillChar(x[i + 1], (n - i) * SizeOf(x[1]), 0); { t xi + 1 = xi + 2 = … = xn := 0} end; until i = 0; { ã h t c u hình} Close(f); end. 2.2. LI T KÊ CÁC T P CON K PH N T Ta s l p ch ng trình li t kê các t p con k ph n t c a t p {1, 2, …, n} theo th t t Ví d : v i n = 5, k = 3, ta ph i li t kê i n 10 t p con: 1.{1, 2, 3} 2.{1, 2, 4} 3.{1, 2, 5} 4.{1, 3, 4} 5.{1, 3, 5} 6.{1, 4, 5} 7.{2, 3, 4} 8.{2, 3, 5} 9.{2, 4, 5} 10.{3, 4, 5} Nh v y t p con u tiên (c u hình kh i t o) là {1, 2, …, k}. C u hình k t thúc là {n - k + 1, n - k + 2, …, n}. Nh n xét: Ta s in ra t p con b ng cách in ra l n l t các ph n t c a nó theo th t t ng d n. T ó, ta có nh n xét n u x = {x1, x2, …, xk} và x1 < x2 < … < xk thì gi i h n trên (giá tr l n nh t có th nh n) c a xk là n, c a xk-1 là n - 1, c a xk-2 là n - 2… i h c S ph m Hà N i, 1999-2002 Bài toán li t kê 7 C th : gi i h n trên c a xi = n - k + i; Còn t t nhiên, gi i h n d i c a xi (giá tr nh nh t xi có th nh n) là xi-1 + 1. Nh v y n u ta ang có m t dãy x t t c các ph n t trong x u ã i di n cho m t t p con, n u x là c u hình k t thúc có ngh a là t t i gi i h n trên thì quá trình sinh k t thúc, n u không thì ta ph i sinh ra m t dãy x m i t ng d n tho mãn v a l n h n dãy c theo ngh a không có m t t p con k ph n t nào chen gi a chúng khi s p th t t i n. Ví d : n = 9, k = 6. C u hình ang có x = {1, 2, 6, 7, 8, 9}. Các ph n t x3 h n trên nên x4, x3 lên n x6 ã t t i gi i sinh c u hình m i ta không th sinh b ng cách t ng m t ph n t trong s các x6, x5, c, ta ph i t ng x2 = 2 lên thành x2 = 3. hình này ã tho mãn l n h n c u hình tr c c u hình m i là x = {1, 3, 6, 7, 8, 9}. C u c nh ng ch a tho mãn tính ch t v a ta l i thay x3, x4, x5, x6 b ng các gi i h n d l n mu n v y i c a nó. T c là: x3 := x2 + 1 = 4 x4 := x3 + 1 = 5 x5 := x4 + 1 = 6 x6 := x5 + 1 = 7 Ta c c u hình m i x = {1, 3, 4, 5, 6, 7} là c u hình k ti p. N u mu n tìm ti p, ta l i nh n th y r ng x6 = 7 ch a t gi i h n trên, nh v y ch c n t ng x6 lên 1 là c x = {1, 3, 4, 5, 6, 8}. V y k thu t sinh t p con k ti p t t p ã có x có th xây d ng nh sau: Tìm t cu i dãy lên u cho t i khi g p m t ph n t xi ch a t gi i h n trên n - k + i. i := n; while (i > 0) and (xi = n - k + i) do i := i - 1; (1, 2, 6, 7, 8, 9); N u tìm th y: if i > 0 then T ng xi ó lên 1. xi := xi + 1; (1, 3, 6, 7, 8, 9) t t t c các ph n t phía sau xi b ng gi i h n d i: for j := i + 1 to k do x j := xj-1 + 1; (1, 3, 4, 5, 6, 7) Input: file v n b n SUBSET.INP ch a hai s nguyên d ng n, k (1 k n 30) cách nhau ít nh t m t d u cách Output: file v n b n SUBSET.OUT các t p con k ph n t c a t p {1, 2, …, n} Lê Minh Hoàng 8 Chuyên SUBSET.INP 5 3 SUBSET.OUT {1, 2, 3} {1, 2, 4} {1, 2, 5} {1, 3, 4} {1, 3, 5} {1, 4, 5} {2, 3, 4} {2, 3, 5} {2, 4, 5} {3, 4, 5} P_1_02_2.PAS * Thu t toán sinh li t kê các t p con k ph n t program Combination; const InputFile = 'SUBSET.INP'; OutputFile = 'SUBSET.OUT'; max = 30; var x: array[1..max] of Integer; n, k, i, j: Integer; f: Text; begin Assign(f, InputFile); Reset(f); ReadLn(f, n, k); Close(f); Assign(f, OutputFile); Rewrite(f); for i := 1 to k do x[i] := i; {x1 := 1; x2 := 2; … ; x3 := k (C u hình kh i t o)} repeat {In ra c u hình hi n t i} Write(f, '{'); for i := 1 to k - 1 do Write(f, x[i], ', '); WriteLn(f, x[k], '}'); {Sinh ti p} i := k; {xi là ph n t cu i dãy, lùi d n i cho t i khi g p m t xi ch a t gi i h n trên n - k + i} while (i > 0) and (x[i] = n - k + i) do Dec(i); if i > 0 then {N u ch a lùi n 0 có ngh a là ch a ph i c u hình k t thúc} begin Inc(x[i]); {T ng xi lên 1, t các ph n t ng sau xi b ng gi i h n d i c a nó} for j := i + 1 to k do x[j] := x[j - 1] + 1; end; until i = 0; {Lùi n t n 0 có ngh a là t t c các ph n t ã t gi i h n trên - h t c u hình} Close(f); end. 2.3. LI T KÊ CÁC HOÁN V Ta s l p ch ng trình li t kê các hoán v c a {1, 2, …, n} theo th t t Ví d v i n = 4, ta ph i li t kê i n. 24 hoán v : 1.1234 2.1243 3.1324 4.1342 5.1423 6.1432 7.2134 8.2143 9.2314 10.2341 11.2413 12.2431 13.3124 14.3142 15.3214 16.3241 17.3412 18.3421 19.4123 20.4132 21.4213 22.4231 23.4312 24.4321 Nh v y hoán v u tiên s là (1, 2, …, n). Hoán v cu i cùng là (n, n-1, … , 1). Hoán v s sinh ra ph i l n h n hoán v hi n t i, h n th n a ph i là hoán v v a l n h n hoán v hi n t i theo ngh a không th có m t hoán v nào khác chen gi a chúng khi s p th t . Gi s hoán v hi n t i là x = (3, 2, 6, 5, 4, 1), xét 4 ph n t cu i cùng, ta th y chúng d n, i u ó có ngh a là cho dù ta có hoán v 4 ph n t này th nào, ta c ng c x p gi m c m t hoán v bé i h c S ph m Hà N i, 1999-2002 Bài toán li t kê 9 h n hoán v hi n t i!. Nh v y ta ph i xét n x2 = 2, thay nó b ng m t giá tr khác. Ta s thay b ng giá tr nào?, không th là 1 b i n u v y s 3 r i (ph n t sau không c hoán v nh h n, không th là 3 vì ã có x1 = c ch n vào nh ng giá tr mà ph n t tr 4, 5, 6. Vì c n m t hoán v v a c ã ch n). Còn l i các giá tr l n h n hi n t i nên ta ch n x2 = 4. Còn các giá tr (x3, x4, x5, x6) s l y trong t p {2, 6, 5, 1}. C ng vì tính v a l n nên ta s tìm bi u di n nh nh t c a 4 s này gán cho x3, x4, x5, x6 t c là (1, 2, 5, 6). V y hoán v m i s là (3, 4, 1, 2, 5, 6). (3, 2, 6, 5, 4, 1) (3, 4, 1, 2, 5, 6). Ta có nh n xét gì qua ví d này: o n cu i c a hoán v c x p gi m d n, s x5 = 4 là s nh nh t trong o n cu i gi m d n tho mãn i u ki n l n h n x2 = 2. N u = 4 và o n cu i v n c x2 c s p x p gi m d n. Khi ó mu n bi u di n nh nh t cho các giá tr trong o n cu i thì ta ch c n Trong tr i ch x5 cho x2 thì ta s o ng c o n cu i. ng h p hoán v hi n t i là (2, 1, 3, 4) thì hoán v k ti p s là (2, 1, 4, 3). Ta c ng có th coi hoán v (2, 1, 3, 4) có o n cu i gi m d n, o n cu i này ch g m 1 ph n t (4) V y k thu t sinh hoán v k ti p t hoán v hi n t i có th xây d ng nh sau: Xác nh o n cu i gi m d n dài nh t, tìm ch s i c a ph n t xi ó. i u này ng ngh a v i vi c tìm t v trí sát cu i dãy lên ng li n tr c o n cu i u, g p ch s i u tiên th a mãn xi < xi+1. N u toàn dãy ã là gi m d n, thì ó là c u hình cu i. i := n - 1; while (i > 0) and (xi > xi+1) do i := i - 1; Trong o n cu i gi m d n, tìm ph n t xk nh nh t tho mãn i u ki n xk > xi. Do o n cu i gi m d n, i u này th c hi n b ng cách tìm t cu i dãy lên u g p ch s k u tiên tho mãn xk > xi (có th dùng tìm ki m nh phân). k := n; while xk < xi do k := k - 1; i ch xk và xi, l t ng c th t o n cu i gi m d n (t xi+1 Input: file v n b n PERMUTE.INP ch a s nguyên d ng n 12 Output: file v n b n PERMUTE.OUT các hoán v c a dãy (1, 2, …, n) PERMUTE.INP 3 PERMUTE.OUT 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 P_1_02_3.PAS * Thu t toán sinh li t kê hoán v program Permutation; const InputFile = 'PERMUTE.INP'; OutputFile = 'PERMUTE.OUT'; max = 12; var n, i, k, a, b: Integer; x: array[1..max] of Integer; f: Text; Lê Minh Hoàng n xk) tr thành t ng d n. 10 Chuyên procedure Swap(var X, Y: Integer); {Th t c var Temp: Integer; begin Temp := X; X := Y; Y := Temp; end; o giá tr hai tham bi n X, Y} begin Assign(f, InputFile); Reset(f); ReadLn(f, n); Close(f); Assign(f, OutputFile); Rewrite(f); for i := 1 to n do x[i] := i; {Kh i t o c u hình u: x1 := 1; x2 := 2; …, xn := n} repeat for i := 1 to n do Write(f, x[i], ' '); {In ra c u hình hoán v hi n t i} WriteLn(f); i := n - 1; while (i > 0) and (x[i] > x[i + 1]) do Dec(i); if i > 0 then {Ch a g p ph i hoán v cu i (n, n-1, … ,1)} begin k := n; {xk là ph n t cu i dãy} while x[k] < x[i] do Dec(k); {Lùi d n k tìm g p xk u tiên l n h n xi } Swap(x[k], x[i]); { i ch xk và xi} a := i + 1; b := n; {L t ng c o n cu i gi m d n, a: u o n, b: cu i o n} while a < b do begin Swap(x[a], x[b]); { i ch xa và xb} Inc(a); {Ti n a và lùi b, i ch ti p cho t i khi a, b ch m nhau} Dec(b); end; end; until i = 0; {Toàn dãy là dãy gi m d n - không sinh ti p c - h t c u hình} Close(f); end. Bài t p: Bài 1 Các ch ch ng trình trên x lý không t t trong tr ng h p t m th ng trình li t kê dãy nh phân c ng nh trong ch v i ch ng, ó là tr ng h p n = 0 ng trình li t kê hoán v , tr iv i ng h p k = 0 i ng trình li t kê t h p, hãy kh c ph c i u ó. Bài 2 Li t kê các dãy nh phân 1}. Hãy l p ch dài n có th coi là li t kê các ch nh h p l p ch p n c a t p 2 ph n t {0, ng trình: Nh p vào hai s n và k, li t kê các ch nh h p l p ch p k c a {0, 1, …, n -1}. G i ý: thay h c s 2 b ng h c s n. Bài 3 Hãy li t kê các dãy nh phân dài n mà trong ó c m ch s "01" xu t hi n úng 2 l n. Bài 4. Nh p vào m t danh sách n tên ng i. Li t kê t t c các cách ch n ra úng k ng i trong s n ng i ó. i h c S ph m Hà N i, 1999-2002
- Xem thêm -

Tài liệu liên quan