1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàng

334 721 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 334
Dung lượng 16,59 MB

Nội dung

Giáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàng Với các sinh viên chuyên ngành tin học thì cụm từ Cấu trúc dữ liệu (Data Structure) không còn là xa lạ. Đây là một môn học bắt buộc và sẽ là thực sự khó cho bất kỳ sinh viên nào nếu không có sự chuẩn bị kỹ lưỡng và dành cách tiếp cận tích cực cho môn học này. Vậy Cấu trúc dữ liệu là gì?Cấu trúc dữ liệu là cách lưu trữ, tổ chức dữ liệu có thứ tự, có hệ thống để dữ liệu có thể được sử dụng một cách hiệu quả.

LÊ MINH HOÀNG (A.K.A DSAP Textbook) 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 TỐN PHÂN TÍCH S 17 3.5 BÀI TOÁN X P H U 19 §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 TOÁ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) 88 8.1 BÀI TOÁN S P X P 88 8.2 THU T TOÁN S P X P KI U CH N (SELECTIONSORT) .90 8.3 THU T TOÁN S P X P N I B T (BUBBLESORT) 91 8.4 THU T TOÁN S P X P KI U CHÈN (INSERTIONSORT) 91 8.5 S P X P CHÈN V I DÀI B C GI M D N (SHELLSORT) .93 8.6 THU T TOÁN S P X P KI U PHÂN O N (QUICKSORT) 94 8.7 THU T TOÁN S P X P KI U VUN NG (HEAPSORT) 101 8.8 S P X P B NG PHÉP M PHÂN PH I (DISTRIBUTION COUNTING) 104 8.9 TÍNH N NH C A THU T TỐN S P X P (STABILITY) 105 8.10 THU T TOÁN S P X P B NG C S (RADIX SORT) 106 8.11 THU T TOÁN S P X P TR N (MERGESORT) 111 8.12 CÀI T .114 8.13 ÁNH GIÁ, NH N XÉT 122 §9 TÌM KI M (SEARCHING) 126 9.1 BÀI TỐN TÌM KI M 126 9.2 TÌM KI M TU N T (SEQUENTIAL SEARCH) .126 9.3 TÌM KI M NH PHÂN (BINARY SEARCH) 126 9.4 CÂY NH PHÂN TÌM KI M (BINARY SEARCH TREE - BST) .127 iii 9.5 PHÉP B M (HASH) 132 9.6 KHỐ S V I BÀI TỐN TÌM KI M 132 9.7 CÂY TÌM KI M S H C (DIGITAL SEARCH TREE - DST) 133 9.8 CÂY TÌM KI M C S (RADIX SEARCH TREE - RST) 136 9.9 NH NG NH N XÉT CU I CÙNG 141 PH N QUY HO CH NG 143 §1 CƠNG TH C TRUY H I 144 1.1 VÍ D 144 1.2 C I TI N TH NH T 145 1.3 C I TI N TH HAI 147 1.4 CÀI T QUY 147 §2 PH NG PHÁP QUY HO CH NG 149 2.1 BÀI TOÁN QUY HO CH 149 2.2 PH NG PHÁP QUY HO CH NG 149 §3 M T S BÀI TỐN QUY HO CH NG 153 3.1 DÃY CON N I U T NG DÀI NH T 153 3.2 BÀI TOÁN CÁI TÚI 158 3.3 BI N I XÂU 160 3.4 DÃY CON CÓ T NG CHIA H T CHO K 164 3.5 PHÉP NHÂN T H P DÃY MA TR N 169 3.6 BÀI T P LUY N T P 172 PH N CÁC THU T TỐN TRÊN §1 CÁC KHÁI NI M C TH 177 B N .178 1.1 NH NGH A TH (GRAPH) 178 1.2 CÁC KHÁI NI M 179 §2 BI U DI N TH TRÊN MÁY TÍNH 181 2.1 MA TR N K (ADJACENCY MATRIX) 181 2.2 DANH SÁCH C NH (EDGE LIST) 182 2.3 DANH SÁCH K (ADJACENCY LIST) 183 2.4 NH N XÉT 184 §3 CÁC THU T TỐN TÌM KI M TRÊN TH 186 3.1 BÀI TOÁN 186 3.2 THU T TỐN TÌM KI M THEO CHI U SÂU (DEPTH FIRST SEARCH) 187 3.3 THU T TỐN TÌM KI M THEO CHI U R NG (BREADTH FIRST SEARCH) 189 3.4 PH C T P TÍNH TỐN C A BFS VÀ DFS 192 §4 TÍNH LIÊN THƠNG C A TH 193 4.1 NH NGH A 193 4.2 TÍNH LIÊN THÔNG TRONG TH VÔ H NG 194 iv 4.3 TH Y VÀ THU T TOÁN WARSHALL 194 4.4 CÁC THÀNH PH N LIÊN THÔNG M NH 197 §5 VÀI NG D NG C A DFS BFS 208 5.1 XÂY D NG CÂY KHUNG C A TH 208 5.2 T P CÁC CHU TRÌNH C S C A TH 211 5.3 BÀI TOÁN NH CHI U TH 211 5.4 LI T KÊ CÁC KH P VÀ C U C A TH 215 §6 CHU TRÌNH EULER, NG I EULER, TH EULER 219 6.1 BÀI TOÁN CÁI C U 219 6.2 NH NGH A 219 6.3 NH LÝ 219 6.4 THU T TỐN FLEURY TÌM CHU TRÌNH EULER 220 6.5 CÀI T 221 6.6 THU T TOÁN T T H N 223 §7 CHU TRÌNH HAMILTON, NG I HAMILTON, TH HAMILTON 226 7.1 NH NGH A 226 7.2 NH LÝ 226 7.3 CÀI T 227 §8 BÀI TỐN NG I NG N NH T 231 8.1 TH CÓ TR NG S 231 8.2 BÀI TOÁN NG I NG N NH T 231 8.3 TR NG H P TH KHƠNG CĨ CHU TRÌNH ÂM - THU T TOÁN FORD BELLMAN 233 8.4 TR NG H P TR NG S TRÊN CÁC CUNG KHÔNG ÂM - THU T TOÁN DIJKSTRA 235 8.5 THU T TOÁN DIJKSTRA VÀ C U TRÚC HEAP .238 8.6 TR NG H P TH KHƠNG CĨ CHU TRÌNH - S P X P TÔ PÔ 241 8.7 NG I NG N NH T GI A M I C P NH - THU T TOÁN FLOYD 244 8.8 NH N XÉT .246 §9 BÀI TỐN CÂY KHUNG NH NH T 251 9.1 BÀI TOÁN CÂY KHUNG NH NH T 251 9.2 THU T TOÁN KRUSKAL (JOSEPH KRUSKAL - 1956) 251 9.3 THU T TOÁN PRIM (ROBERT PRIM - 1957) 256 §10 BÀI TỐN LU NG C C I TRÊN M NG 260 10.1 CÁC KHÁI NI M 260 10.2 M NG TH NG D VÀ NG T NG LU NG 263 10.3 THU T TOÁN FORD-FULKERSON (L.R.FORD & D.R.FULKERSON - 1962) .266 10.4 THU T TOÁN PREFLOW-PUSH (GOLDBERG - 1986) 270 10.5 M T S M R NG 276 §11 BÀI TỐN TÌM B GHÉP C C I TRÊN TH HAI PHÍA 283 11.1 TH HAI PHÍA (BIPARTITE GRAPH) 283 11.2 BÀI TỐN GHÉP ƠI KHƠNG TR NG VÀ CÁC KHÁI NI M .283 11.3 THU T TOÁN NG M .284 11.4 CÀI T .285 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 TỐN HUNGARI 291 12.1 BÀI TỐN PHÂN CƠNG 291 12.2 PHÂN TÍCH 291 12.3 THU T TOÁN 292 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 301 12.5 NÂNG C P 301 §13 BÀI TỐN TÌM B GHÉP C C I TRÊN TH 307 13.1 CÁC KHÁI NI M 307 13.2 THU T TOÁN EDMONDS (1965) 308 13.3 THU T TOÁN LAWLER (1973) 310 13.4 CÀI T 312 13.5 PH C T P TÍNH TỐN 316 TÀI LI U C THÊM 319 vi HÌNH V Hình 1: Cây tìm ki m quay lui toá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 20 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 hồ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 95 Hình 30: Tr ng thái tr c g i đ quy 96 Hình 31: Heap 102 Hình 32: Vun đ ng 102 Hình 33: o giá tr k[1] cho k[n] xét ph n l i 103 Hình 34: Vun ph n cịn l i thành đ ng r i l i đ o tr k[1] cho k[n-1] 103 Hình 35: ánh s bit .106 Hình 36: Thu t tốn s p x p tr n .111 vii Hình 37: Máy Pentium 4, 3.2GHz, 2GB RAM t ch m ch p s p x p 108 khoá ∈ [0 7.107] cho dù nh ng thu t toán s p x p t t nh t đ c áp d ng 123 Hình 38: Cây nh phân tìm ki m 128 Hình 39: Xóa nút BST 129 Hình 40 Xóa nút ch có m t nhánh BST 130 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 130 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 130 Hình 43: ánh s bit 133 Hình 44: Cây tìm ki m s h c 133 Hình 45: Cây tìm ki m c s 136 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 137 Hình 47: RST ch a khố 2, 4, 5, RST sau lo i b giá tr 138 Hình 48: Cây tìm ki m c s a) Trie tìm ki m c s b) 140 Hình 49: Hàm đ quy tính s Fibonacci 151 Hình 50: Tính tốn truy v t 154 Hình 51: Truy v t 163 Hình 52: Ví d v mơ hình đ th 178 Hình 53: Phân lo i đ th 179 Hình 54 182 Hình 55 183 Hình 56: th đ ng 186 Hình 57: Cây DFS 189 Hình 58: Cây BFS 192 Hình 59: th G thành ph n liên thông G1, G2, G3 c a 193 Hình 60: Kh p c u 193 Hình 61: Liên thơng m nh liên thông y u 194 Hình 62: th đ y đ 195 Hình 63: n đ th vơ h ng bao đóng c a 195 Hình 64: Ba d ng cung ngồi DFS 199 Hình 65: Thu t toán Tarjan “b ” DFS 201 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) 206 Hình 67: th G m t s ví d khung T1, T2, T3 c a 210 Hình 68: Cây khung DFS (a) khung BFS (b) (M i tên ch chi u th m đ nh) 210 Hình 69: Phép đ nh chi u DFS 213 Hình 70: Phép đánh s ghi nh n cung ng c lên cao nh t 215 Hình 71: Mơ hình đ th c a tốn b y c u 219 Hình 72 220 Hình 73 220 Hình 74 226 viii Hình 75: Phép đánh l i ch s theo th t tôpô 241 Hình 76: Hai g c r1 r2 m i h p nh t chúng .252 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 260 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)) 264 Hình 79: M ng th ng d đ Hình 80: Lu ng m ng G tr ng t ng lu ng 265 c sau t ng 265 Hình 81: M ng gi c a m ng có nhi u m phát nhi u m thu 276 Hình 82: Thay m t đ nh u b ng hai đ nh uin, uout 277 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 277 Hình 84: th hai phía 283 Hình 85: th hai phía b ghép M .284 Hình 86: Mơ hình lu ng c a tốn tìm b ghép c c đ i đ th hai phía 288 Hình 87: Phép xoay tr ng s c nh .292 Hình 88: Thu t tốn Hungari .295 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 302 th G m t b ghép M 307 Hình 91: Phép ch p Blossom .309 Hình 92: N Blossom đ dị đ ng xuyên qua Blossom .309 ... (xét t hàng đ n v lên), tìm s g p đ u tiên Lê Minh Hồng Chun đ N u th y thay s b ng s đ t t t c ph n t phía sau v trí b ng N u khơng th y thì tồn dãy s 1, c u hình cu i D li u vào (Input): nh p... TR NG H P TH KHƠNG CĨ CHU TRÌNH ÂM - THU T TỐN FORD BELLMAN 233 8.4 TR NG H P TR NG S TRÊN CÁC CUNG KHƠNG ÂM - THU T TỐN DIJKSTRA 235 8.5 THU T TOÁN DIJKSTRA VÀ C U TRÚC HEAP .238 8.6... Thu t tốn Fleury tìm chu trình Euler 221 P_4_06_2.PAS * Thu t tốn hi u qu tìm chu trình Euler 224 P_4_07_1.PAS * Thu t toán quay lui li t kê chu trình Hamilton 227

Ngày đăng: 15/02/2017, 00:00

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w