Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 332 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
332
Dung lượng
12,35 MB
Nội dung
LÊ MINH HOÀNG BÀI GI NG CHUYÊN : GI I THU T VÀ L P TRÌNH Bài gi ng chuyên đ i h c S ph m Hà N i, 1999-2002 Try not to become a man of success but rather to become a man of value Albert Einstein i M CL C PH N BÀI TOÁN LI T KÊ §1 NH C L I M T S KI N TH C IS T H P 1.1 CH NH H P L P 1.2 CH NH H P KHÔNG L P 1.3 HOÁN V 1.4 T H P §2 PH NG PHÁP SINH (GENERATION) 2.1 SINH CÁC DÃY NH PHÂN DÀI N 2.2 LI T KÊ CÁC T P CON K PH N T 2.3 LI T KÊ CÁC HOÁN V §3 THU T TỐ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 27 PH N C U TRÚC D §1 CÁC B 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 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 TỐ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 GI I THI U 40 2.2 CÁC KÝ PHÁP ÁNH GIÁ PH C T P TÍNH TỐN 40 2.3 XÁC NH PH C T P TÍNH TỐN C A GI I THU T 42 2.4 PH C T P TÍNH TỐN V I TÌNH TR NG D LI U VÀO 45 2.5 CHI PHÍ TH C HI N THU T TỐN 46 ii §3 QUY VÀ GI I THU T QUY 50 3.1 KHÁI NI M V QUY 50 3.2 GI I THU T QUY 50 3.3 VÍ D V GI I THU T QUY 51 3.4 HI U L C C A QUY .55 §4 C U TRÚC D LI U BI U DI N DANH SÁCH 58 4.1 KHÁI NI M DANH SÁCH 58 4.2 BI U DI N DANH SÁCH TRONG MÁY TÍNH 58 §5 NG N X P VÀ HÀNG I 64 5.1 NG N X P (STACK) .64 5.2 HÀNG I (QUEUE) .66 §6 CÂY (TREE) 70 6.1 NH NGH A 70 6.2 CÂY NH PHÂN (BINARY TREE) 71 6.3 BI U DI N CÂY NH PHÂN 73 6.4 PHÉP DUY T CÂY NH PHÂN 74 6.5 CÂY K_PHÂN 76 6.6 CÂY T NG QUÁT 77 §7 KÝ PHÁP TI N T , TRUNG T VÀ H U T 79 7.1 BI U TH C D I D NG CÂY NH PHÂN 79 7.2 CÁC KÝ PHÁP CHO CÙNG M T BI U TH C 79 7.3 CÁCH TÍNH GIÁ TR BI U TH C 79 7.4 CHUY N T D NG TRUNG T SANG D NG H U T 83 7.5 XÂY D NG CÂY NH PHÂN BI U DI N BI U TH C 86 §8 S P X P (SORTING) 87 8.1 BÀI TOÁN S P X P 87 8.2 THU T TOÁN S P X P KI U CH N (SELECTIONSORT) .89 8.3 THU T TOÁN S P X P N I B T (BUBBLESORT) 90 8.4 THU T TOÁN S P X P KI U CHÈN 90 8.5 SHELLSORT 92 8.6 THU T TOÁN S P X P KI U PHÂN O N (QUICKSORT) 93 8.7 THU T TOÁN S P X P KI U VUN NG (HEAPSORT) 99 8.8 S P X P B NG PHÉP M PHÂN PH I (DISTRIBUTION COUNTING) 102 8.9 TÍNH N NH C A THU T TOÁN S P X P (STABILITY) 103 8.10 THU T TOÁN S P X P B NG C S (RADIX SORT) 104 8.11 THU T TOÁN S P X P TR N (MERGESORT) 109 8.12 CÀI T .112 8.13 ÁNH GIÁ, NH N XÉT 119 §9 TÌM KI M (SEARCHING) 124 9.1 BÀI TỐN TÌM KI M 124 9.2 TÌM KI M TU N T (SEQUENTIAL SEARCH) .124 9.3 TÌM KI M NH PHÂN (BINARY SEARCH) 124 9.4 CÂY NH PHÂN TÌM KI M (BINARY SEARCH TREE - BST) .125 iii 9.5 PHÉP B M (HASH) 130 9.6 KHOÁ S V I BÀI TỐN TÌM KI M 130 9.7 CÂY TÌM KI M S H C (DIGITAL SEARCH TREE - DST) 131 9.8 CÂY TÌM KI M C S (RADIX SEARCH TREE - RST) 134 9.9 NH NG NH N XÉT CU I CÙNG 139 PH N QUY HO CH NG 141 §1 CÔNG TH C TRUY H I 142 1.1 VÍ D 142 1.2 C I TI N TH NH T 143 1.3 C I TI N TH HAI 144 1.4 CÀI T QUY 145 §2 PH NG PHÁP QUY HO CH NG 147 2.1 BÀI TOÁN QUY HO CH 147 2.2 PH NG PHÁP QUY HO CH NG 147 §3 M T S BÀI TOÁN QUY HO CH NG 151 3.1 DÃY CON N I U T NG DÀI NH T 151 3.2 BÀI TOÁN CÁI TÚI 156 3.3 BI N I XÂU 158 3.4 DÃY CON CÓ T NG CHIA H T CHO K 162 3.5 PHÉP NHÂN T H P DÃY MA TR N 166 3.6 BÀI T P LUY N T P 170 PH N CÁC THU T TỐN TRÊN §1 CÁC KHÁI NI M C TH 175 B N .176 1.1 NH NGH A TH (GRAPH) 176 1.2 CÁC KHÁI NI M 177 §2 BI U DI N TH TRÊN MÁY TÍNH 179 2.1 MA TR N K (ADJACENCY MATRIX) 179 2.2 DANH SÁCH C NH (EDGE LIST) 180 2.3 DANH SÁCH K (ADJACENCY LIST) 181 2.4 NH N XÉT 182 §3 CÁC THU T TỐN TÌM KI M TRÊN TH 184 3.1 BÀI TOÁN 184 3.2 THU T TỐN TÌM KI M THEO CHI U SÂU (DEPTH FIRST SEARCH) 185 3.3 THU T TỐN TÌM KI M THEO CHI U R NG (BREADTH FIRST SEARCH) 187 3.4 PH C T P TÍNH TỐN C A BFS VÀ DFS 190 §4 TÍNH LIÊN THƠNG C A TH 191 4.1 NH NGH A 191 4.2 TÍNH LIÊN THƠNG TRONG TH VƠ H NG 192 iv 4.3 TH Y VÀ THU T TOÁN WARSHALL 192 4.4 CÁC THÀNH PH N LIÊN THÔNG M NH 195 §5 VÀI NG D NG C A DFS BFS 206 5.1 XÂY D NG CÂY KHUNG C A TH 206 5.2 T P CÁC CHU TRÌNH C S C A TH 209 5.3 BÀI TOÁN NH CHI U TH 209 5.4 LI T KÊ CÁC KH P VÀ C U C A TH 213 §6 CHU TRÌNH EULER, NG I EULER, TH EULER 216 6.1 BÀI TOÁN CÁI C U 216 6.2 NH NGH A 216 6.3 NH LÝ 216 6.4 THU T TỐN FLEURY TÌM CHU TRÌNH EULER 217 6.5 CÀI T 218 6.6 THU T TOÁN T T H N 220 §7 CHU TRÌNH HAMILTON, NG I HAMILTON, TH HAMILTON 223 7.1 NH NGH A 223 7.2 NH LÝ 223 7.3 CÀI T 224 §8 BÀI TOÁN NG I NG N NH T 228 8.1 TH CÓ TR NG S 228 8.2 BÀI TOÁN NG I NG N NH T 228 8.3 TR NG H P TH KHƠNG CĨ CHU TRÌNH ÂM - THU T TỐN FORD BELLMAN 230 8.4 TR NG H P TR NG S TRÊN CÁC CUNG KHƠNG ÂM - THU T TỐN DIJKSTRA 232 8.5 THU T TOÁN DIJKSTRA VÀ C U TRÚC HEAP .235 8.6 TR NG H P TH KHÔNG CĨ CHU TRÌNH - S P X P TƠ PƠ 238 8.7 NG I NG N NH T GI A M I C P NH - THU T TOÁN FLOYD 241 8.8 NH N XÉT .243 §9 BÀI TỐN CÂY KHUNG NH NH T 248 9.1 BÀI TOÁN CÂY KHUNG NH NH T 248 9.2 THU T TOÁN KRUSKAL (JOSEPH KRUSKAL - 1956) 248 9.3 THU T TOÁN PRIM (ROBERT PRIM - 1957) 253 §10 BÀI TỐN LU NG C C I TRÊN M NG 257 10.1 CÁC KHÁI NI M 257 10.2 M NG TH NG D VÀ NG T NG LU NG 260 10.3 THU T TOÁN FORD-FULKERSON (L.R.FORD & D.R.FULKERSON - 1962) .263 10.4 THU T TOÁN PREFLOW-PUSH (GOLDBERG - 1986) 267 10.5 M T S M R NG 273 §11 BÀI TỐN TÌM B GHÉP C C I TRÊN TH HAI PHÍA 280 11.1 TH HAI PHÍA (BIPARTITE GRAPH) 280 11.2 BÀI TỐN GHÉP ƠI KHÔNG TR NG VÀ CÁC KHÁI NI M .280 11.3 THU T TOÁN NG M .281 11.4 CÀI T .282 v §12 BÀI TỐ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 288 12.1 BÀI TOÁN PHÂN CÔNG 288 12.2 PHÂN TÍCH 288 12.3 THU T TOÁN 289 12.4 BÀI TỐN TÌM B GHÉP C C I V I TR NG S C C I TRÊN TH HAI PHÍA 297 12.5 NÂNG C P 298 §13 BÀI TỐN TÌM B GHÉP C C I TRÊN TH 304 13.1 CÁC KHÁI NI M 304 13.2 THU T TOÁN EDMONDS (1965) 305 13.3 THU T TOÁN LAWLER (1973) 307 13.4 CÀI T 309 13.5 PH C T P TÍNH TỐN 313 TÀI LI U C THÊM 315 vi HÌNH V Hình 1: Cây tìm ki m quay lui tốn li t kê dãy nh phân .13 Hình 2: X p quân h u bàn c 8x8 .19 ng chéo B-TN mang ch s 10 đ Hình 3: ng chéo N-TB mang ch s 19 Hình 4: L u đ thu t gi i (Flowchart) 36 Hình 5: Ký pháp Θ l n, Ο l n Ω l n 41 Hình 6: Tháp Hà N i .54 Hình 7: C u trúc nút c a danh sách n i đ n 59 Hình 8: Danh sách n i đ n 59 Hình 9: C u trúc nút c a danh sách n i kép 61 Hình 10: Danh sách n i kép 61 Hình 11: Danh sách n i vòng m t h ng 61 Hình 12: Danh sách n i vịng hai h ng .62 Hình 13: Dùng danh sách vịng mơ t Queue 67 Hình 14: Di chuy n toa tàu 69 Hình 15: Di chuy n toa tàu (2) 69 Hình 16: Cây 70 Hình 17: M c c a nút 71 Hình 18: Cây bi u di n bi u th c 71 Hình 19: Các d ng nh phân suy bi n 72 Hình 20: Cây nh phân hoàn ch nh nh phân đ y đ 72 Hình 21: ánh s nút c a nh phân đ y đ đ bi u di n b ng m ng 73 Hình 22: Nh c m c a ph ng pháp bi u di n b ng m ng .73 Hình 23: C u trúc nút c a nh phân .74 Hình 24: Bi u di n b ng c u trúc liên k t .74 Hình 25: ánh s nút c a 3_phân đ bi u di n b ng m ng 76 Hình 26: Bi u di n t ng quát b ng m ng 77 Hình 27: C u trúc nút c a t ng quát 78 Hình 28: Bi u th c d i d ng nh phân 79 Hình 29: Vịng l p c a QuickSort 94 Hình 30: Tr ng thái tr c g i đ quy 95 Hình 31: Heap 100 Hình 32: Vun đ ng 100 Hình 33: o giá tr k[1] cho k[n] xét ph n l i 101 Hình 34: Vun ph n l i thành đ ng r i l i đ o tr k[1] cho k[n-1] 101 Hình 35: ánh s bit .104 Hình 36: Thu t tốn s p x p tr n .109 Hình 37: Cài đ t thu t toán s p x p v i d li u l n 121 vii Hình 38: Cây nh phân tìm ki m 126 Hình 39: Xóa nút BST 127 Hình 40 Xóa nút ch có m t nhánh BST 128 Hình 41: Xóa nút có c hai nhánh BST thay b ng nút c c ph i c a trái 128 Hình 42: Xóa nút có c hai nhánh BST thay b ng nút c c trái c a ph i 128 Hình 43: ánh s bit 131 Hình 44: Cây tìm ki m s h c 131 Hình 45: Cây tìm ki m c s 134 Hình 46: V i đ dài dãy bit z = 3, tìm ki m c s g m khoá 2, 4, sau thêm giá tr 135 Hình 47: RST ch a khoá 2, 4, 5, RST sau lo i b giá tr 136 Hình 48: Cây tìm ki m c s a) Trie tìm ki m c s b) 138 Hình 49: Hàm đ quy tính s Fibonacci 149 Hình 50: Tính tốn truy v t 152 Hình 51: Truy v t 160 Hình 52: Ví d v mơ hình đ th 176 Hình 53: Phân lo i đ th 177 Hình 54 180 Hình 55 181 Hình 56: th đ ng 184 Hình 57: Cây DFS 187 Hình 58: Cây BFS 190 Hình 59: th G thành ph n liên thông G1, G2, G3 c a 191 Hình 60: Kh p c u 191 Hình 61: Liên thơng m nh liên thông y u 192 Hình 62: th đ y đ 193 Hình 63: n đ th vơ h ng bao đóng c a 193 Hình 64: Ba d ng cung ngồi DFS 197 Hình 65: Thu t tốn Tarjan "b " DFS 199 Hình 66: ánh s l i, đ o chi u cung t BFS v i cách ch n đ nh xu t phát ng c l i v i th t t xong (th t 11, 10… 3, 2, 1) 204 Hình 67: th G m t s ví d khung T1, T2, T3 c a 208 Hình 68: Cây khung DFS (a) khung BFS (b) (M i tên ch chi u th m đ nh) 208 Hình 69: Phép đ nh chi u DFS 211 Hình 70: Phép đánh s ghi nh n cung ng c lên cao nh t 213 Hình 71: Mơ hình đ th c a tốn b y c u 216 Hình 72 217 Hình 73 217 Hình 74 223 Hình 75: Phép đánh l i ch s theo th t tôpô 238 Hình 76: Hai g c r1 r2 m i h p nh t chúng 249 viii Hình 77: M ng v i kh n ng thông qua (1 phát, thu) m t lu ng c a v i giá tr 257 Hình 78: M ng G m ng th ng d Gf t ng ng (ký hi u f[u,v]:c[u,v] ch lu ng f[u, v] kh n ng thông qua c[u, v] cung (u, v)) 261 Hình 79: M ng th ng d đ Hình 80: Lu ng m ng G tr ng t ng lu ng 262 c sau t ng 262 Hình 81: M ng gi c a m ng có nhi u m phát nhi u m thu 273 Hình 82: Thay m t đ nh u b ng hai đ nh uin, uout 274 Hình 83: M ng gi c a m ng có kh n ng thông qua c a cung b ch n hai phía 274 Hình 84: th hai phía 280 Hình 85: th hai phía b ghép M .281 Hình 86: Mơ hình lu ng c a tốn tìm b ghép c c đ i đ th hai phía 285 Hình 87: Phép xoay tr ng s c nh .289 Hình 88: Thu t toán Hungari .292 Hình 89: Cây pha "m c" l n h n sau m i l n xoay tr ng s c nh tìm đ Hình 90: ng 299 th G m t b ghép M 304 Hình 91: Phép ch p Blossom .306 Hình 92: N Blossom đ dò đ ng xuyên qua Blossom .306 ... nh n) c a x[k] n, c a x[k-1] n - 1, c a x[k-2] n - 2… T ng quát: gi i h n c a x[i] = n - k + i; Còn t t nhiên, gi i h n d i c a x[i] (giá tr nh nh t x[i] có th nh n) x[i-1] + Nh v y n u ta có m... TRÌNH EULER, NG I EULER, TH EULER 216 6.1 BÀI TOÁN CÁI C U 216 6.2 NH NGH A 216 6.3 NH LÝ 216 6.4 THU T TOÁN FLEURY TÌM CHU TRÌNH EULER ... Ho c t n t i m t s nguyên d ng k: ≤ k < n đ : a[1] = b[1] a[2] = b[2] HSPHN 199 9-2 004 Bài toán li t kê … a[k-1] = b[k-1] a[k] = b[k] a[k+1] < b[k+1] Trong tr ng h p này, ta có th vi t a < b Th