1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Đồ thị - Graph docx

22 201 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 22
Dung lượng 260,78 KB

Nội dung

1 Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 1  Trình bày những kiến thức căn bản về lý thuyết đồ thị, các cách biểu diễn, một số thuật toán  Chú trọng việc cài đặt tối ưu các thuật toán bằng cách sử dụng các cấu trúc dữ liệu đặc biệt  Đánh giá thuật toán Đồ thị -Graph 10 13 7 18 25 17 27 15 21 9 16 27 11 7 19 10 10 50 Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 2 Nội dung trình bày  Các ví dụ thực tế  Các khái niệm và định nghĩa cơ bản  Biểu diễn đồ thị  Thuật toán sắp xếp Topology  Thuật toán tìm đường đi ngắn nhất 2 Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 3 Các ví dụ thực tế  Bản đồ đường đi giữa các thành phố  Hệ thống đường bay giữa các sân bay  Hệ thống lưới điện trong thành phố  Hệ thống đường ống nước trong thành phố  Sơ đồ đường xe điện, xe buýt,…  Sơ đồ mạng máy tính  … Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 4 Các khái niệm và định nghĩa cơ bản  Định nghĩa đồ thị:G = (V, E)  V (Vertices): tập các đỉnh. Số đỉnh N = |V|  E (Edges): tập các cạnh. Mỗi cạnh là 1 cặp (u, v) với u, v ∈V. Số cạnh M = |E| Ví dụ:  V = {A, B, C, D, E, F}  E = {(A,B), (A,C), (C,D), (C,E), (C,F), (D,F), (E,F)} A B E D C F 3 Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 5 Các khái niệm và định nghĩa cơ bản  Đồ thị có hướng (Directed graph): thứ tự các đỉnh trong mỗi cạnh là quan trọng, nghĩa là: (u, v) ≠ (v, u)  Đồ thị vô hướng (Undirected graph): thứ tự các đỉnh trong mỗi cạnh là không quan trọng, nghĩa là: (u, v) = (v, u) Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 6 Các khái niệm và định nghĩa cơ bản A D E F B G C Đồ thị có hướng với: V = {A, B, C, D, E, F, G} E = {(A,B), (A,E), (B,C), (B,F), (D,E), (E,F), (F,C), (F,G)} 4 Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 7 Các khái niệm và định nghĩa cơ bản A B E D C F Đồ thị vô hướng với: V = {A, B, C, D, E, F} E = {(A,B), (B,A), (A,C), (C,A), (C,D), (D,C), (C,E), (E,C), (C,F), (F,C), (D,F), (F,D), (E,F), (F,E)} Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 8 Các khái niệm và định nghĩa cơ bản  Trọng số của cạnh (Weight): là giá trị trọng số w ∈ R được gán cho 1 cạnh (u, v), ký hiệu (u, v, w)  Đồ thị có trọng (Weight Graph): trên mỗi cạnh, đều có trọng số  Đồ thị không trọng (Unweight Graph): không có trọng số trên mỗi cạnh; hay tất cả các cạnh đều có trọng số = 1  Đỉnh kề (Adjacent Vertex): đỉnh v là đỉnh kề của đỉnh u ⇔ (u, v) ∈ E 5 Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 9 Các khái niệm và định nghĩa cơ bản Đồ thị có hướng, có trọng 10 13 7 18 25 17 27 15 21 9 16 27 11 7 19 10 10 50 A D E F B G C Đồ thị có hướng, không trọng Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 10 Các khái niệm và định nghĩa cơ bản  Đường đi (Path): đường đi trong 1 đồ thị G là 1 dãy các đỉnh v 1 , v 2 , …, v n ∈ E thoả: (v i , v i+1 ) ∈ E, ∀i ∈ [1, n)  Chiều dài đường đi (Length of Path): là tổng trọng số của các cạnh trong đường đi đó  Chu trình (Cycle):  Trong đồ thị có hướng: là đường đi có độ dài tối thiểu = 1, thoả: v 1 = v n  Trong đồ thị vô hướng: là đường đi thoả: v 1 = v n và các cạnh là duy nhất 6 Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 11 Các khái niệm và định nghĩa cơ bản  VD. Xét đồ thị ở trang 9  Các dãy nào là đường đi, và độ dài tương ứng: (A, B, C), (A, B, C, G), (A, E, F, C), (A, B, F, E)  Hãy xác định 1 chu trình  VD. Xét đồ thị ở trang 7  Hãy xác định 3 chu trình  (A, B, A) có phải là chu trình ? Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 12 Các khái niệm và định nghĩa cơ bản  Bậc của đỉnh v (Degree of Vertex):  Nửa bậc ngoài (Out-degree), d + (v): là số cạnh đi ra khỏi đỉnh v.  Nửa bậc trong (In-degree), d - (v): là số cạnh đi vào đỉnh v.  Bậc của đỉnh v, d(v) = d + (v) + d - (v)  VD. Xác định d + (v), d - (v), d(v) của các đỉnh A, B, C, E, F trên đồ thị ở trang 9 7 Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 13 Biểu diễn đồ thị  Có 2 cách biễu diễn đồ thị:  Dùng Ma trận kề  Dùng Danh sách liên kết đơn Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 14 Biểu diễn đồ thị - dùng ma trận kề 8 Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 15 Biểu diễn đồ thị - dùng ma trận kề  Với đồ thị không trọng:  Nếu (u, v) ∈ E: A[u][v] = 1  Nếu (u, v) ∉ E: A[u][v] = 0  Với đồ thị có trọng:  Nếu (u, v) ∈ E: A[u][v] = w  Nếu (u, v) ∉ E: A[u][v] = ∞ Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 16 Biểu diễn đồ thị - dùng danh sách liên kết đơn 2 5 / 153 2 4 / 25 412 / 1 2 3 4 5 1 2 5 4 3 4 / 3 / 3 / 1 4 / 1 2 3 4 5 2 / / 1 2 5 4 3 3 4 5 / 9 Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 17 Thuật toán sắp xếp Topology (Topology Sorting)  Phát biểu bài toán  Thuật toán cơ bản  Thuật toán cải tiến Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 18 Thuật toán sắp xếp Topology (Topology Sorting)  Phát biểu bài toán:  Sắp xếp Topology trên 1 đồ thị có hướng, không chu trình G là thực hiện sắp xếp các đỉnh của G sao cho: nếu có đường đi từ v i đến v j thì v j sẽ đứng sau v i 10 Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 19 Thuật toán sắp xếp Topology (Topology Sorting) a d e f b g c a b d e f c g Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 20 Thuật toán sắp xếp Topology (Topology Sorting) a d e f b g c a d e b f g c [...]... đi ngắn nhất (Shortest-path Algorithm) Phát biểu bài toán Trên đồ thị không trọng Thuật toán cơ bản Thuật toán cải tiến Trên đồ thị có trọng - Thuật toán Dijkstra Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 28 14 Thuật toán tìm đường đi ngắn nhất (Shortest-path Algorithm) Phát biểu bài toán: Cho đồ thị G = (V, E) và một đỉnh s ∈ V Tìm các đường đi ngắn nhất từ... Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 1 32 16 Thuật toán tìm đường đi ngắn nhất (Shortest-path Algorithm) Trên đồ thị không trọng - thuật toán cải tiến: Ý tưởng: Thay vì phải duyệt tất cả các đỉnh trong mỗi lần lặp thì ta chỉ cần tìm trong số những đỉnh kề (vừa được cập nhật khoảng cách) Sử dụng 1 queue để lưu các đỉnh cần xét Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa... Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 29 Thuật toán tìm đường đi ngắn nhất (Shortest-path Algorithm) Trên đồ thị không trọng - thuật toán cơ bản: Ý tưởng: Chọn đỉnh xuất phát là s = v3 currDist = 0 Tìm các đỉnh kề với s: v1, v6 đường đi đến v1, v6 là 1 (currDist++) Tìm các đỉnh kề với v1, v6: v2, v4 đường đi đến v1, v6 là 2 (currDist++) … Spring 2004 Data Structure & Algorithm - Nguyen... đến nó khỏi đồ thị G [b3] Thực hiện lại bước [b1] và [b2] cho tất cả các đỉnh còn lại của đồ thị G Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 21 Thuật toán sắp xếp Topology (Topology Sorting) int Simple_TopologySort(G) { Khởi tạo danh sách In_Degree của các đỉnh for (int i = 0; i < N; i++) { v = FindZeroDegreeVertex(); if (v == NOT_FOUND) { Error( Graph has cycle”);... { Error( Graph has cycle”); return 0; } return 1; } Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 26 13 Thuật toán sắp xếp Topology (Topology Sorting) Nhận xét: Chi phí thuật toán O(N+M), N = số đỉnh của G M = số cạnh của G Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 27 Thuật toán tìm đường đi ngắn nhất (Shortest-path Algorithm)... toán tìm đường đi ngắn nhất (Shortest-path Algorithm) Trên đồ thị có trọng - Thuật toán Dijkstra Là thuật toán tiêu biểu cho loại thuật toán greedy (Greedy algorithm) Thuật toán dựa trên phương pháp là: đường đi ngắn nhất trên toàn bộ sẽ được xác định bằng cách tìm đường đi ngắn nhất tại mỗi trạng thái (cục bộ) Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 38 19 Thuật... đi ngắn nhất (Shortest-path Algorithm) Trên đồ thị có trọng - Thuật toán Dijkstra (tt): Tư tưởng: Tại mỗi trạng thái: chọn đỉnh kế tiếp để xét v = đỉnh có khoảng cách Dist bé nhất trong số những đỉnh chưa xét Cập nhật khoảng cách của các đỉnh w kề với v: Dist(w) = Dist(v) + c(v, w) nếu khoảng cách mới tốt hơn khoảng cách cũ Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN... Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 41 Thuật toán tìm đường đi ngắn nhất (Shortest-path Algorithm) 5 được xử lý 3 được xử lý v Known Dist Path Known Dist Path 1 2 3 4 5 6 7 1 1 0 1 1 0 0 0 2 3 1 3 9 5 0 1 4 1 4 4 4 1 1 1 1 1 0 0 0 2 3 1 3 8 5 0 1 4 1 4 3 4 Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 42 21 Thuật toán tìm đường đi ngắn nhất (Shortest-path... Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 36 18 Thuật toán tìm đường đi ngắn nhất (Shortest-path Algorithm) 1 được lấy ra khỏi Q 6 được lấy ra khỏi Q v Known Dist Path Known Dist Path 1 1 1 3 1 1 3 2 0 2 1 0 2 1 3 1 0 0 1 0 0 4 0 2 0 0 2 0 5 0 ∞ 1 0 ∞ 1 6 0 1 3 1 1 3 7 0 ∞ 0 0 ∞ 0 Q Spring 2004 6,2,4 2,4 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM... Thuật toán cải tiến: Ý tưởng: Chỉ cập nhật lại bậc đầu vào (In_Degree) cho 1 số đỉnh sau mỗi thao tác (giả sử đồ thị thưa) thay vì phải duyệt N phần tử của mảng In_Degree để tìm đỉnh 0 thì ta chỉ cần xét các đỉnh “tiềm năng” mà thôi Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 24 12 Thuật toán sắp xếp Topology (Topology Sorting) Thuật toán cải tiến (tt): Cách . A, B, C, E, F trên đồ thị ở trang 9 7 Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 13 Biểu diễn đồ thị  Có 2 cách biễu diễn đồ thị:  Dùng Ma trận. Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 14 Biểu diễn đồ thị - dùng ma trận kề 8 Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 15 Biểu diễn đồ. liệu đặc biệt  Đánh giá thuật toán Đồ thị -Graph 10 13 7 18 25 17 27 15 21 9 16 27 11 7 19 10 10 50 Spring 2004 Data Structure & Algorithm - Nguyen Tri Tuan - Khoa CNTT ĐH KHTN Tp.HCM 2 Nội

Ngày đăng: 01/08/2014, 07:20

TỪ KHÓA LIÊN QUAN

w