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

Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Trường ĐH Văn Lang

51 10 1

Đ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

Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 Lý thuyết đồ thị, cung cấp cho người học những kiến thức như: giới thiệu đồ thị; biểu diễn đồ thị; thuật toán duyệt đồ thị; bài toán tìm đường ngắn nhất. Mời các bạn cùng tham khảo!

GIỚI THIỆU • Đồ thị cấu trúc liệu trừu tượng dựa khái niệm toán học đồ thị • Đồ thị xem tổng quát hóa cấu trúc Tuy nhiên, đồ thị có mối quan hệ phức tạp quan hệ cha-con cấu trúc • Đồ thị sử dụng nhiều ứng dụng gia phả, mạng quản lý chuyến bay v.v… KHOA CÔNG NGHỆ THÔNG TIN GIỚI THIỆU • Một đồ thị G tập hợp khơng có thứ tự (V, E), V : đỉnh đồ thị E : cạnh (cung) biểu diễn mối quan hệ đỉnh A D B E KHOA CÔNG NGHỆ THÔNG TIN C V(G) = {A, B, C, D, E} E(G) = {(A, B), (A, D), (B, C}, (B, D), (C, E), (D, E)} GIỚI THIỆU • Một đồ thị G có hướng vơ hướng • Nếu đồ thị có hướng cạnh nối hai đỉnh có mũi tên đại diện cho hướng nối Đồ thị có hướng Đồ thị vơ hướng A D B E KHOA CÔNG NGHỆ THÔNG TIN C A D B C E BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH SỬ DỤNG MA TRẬN KỀ • Hai đỉnh kề có cạnh nối chúng • Ta dùng ma trận với dòng, cột biểu diễn cho đỉnh đồ thị • Biểu diễn cạnh ma trận kề Nếu đỉnh i kề đỉnh j Ngược lại 𝑎𝑖𝑗 = KHOA CÔNG NGHỆ THÔNG TIN BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH SỬ DỤNG MA TRẬN KỀ A B D C E A B D A B C D E A 1 B 1 C D 1 E 0 C E A B C D E A 1 0 B 0 0 C 0 0 D 0 0 1 E 0 0 KHOA CÔNG NGHỆ THÔNG TIN BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH SỬ DỤNG MA TRẬN KỀ Đồ thị có trọng số đồ thị mà có gán liệu cạnh A C D Biểu diễn đồ thị có trọng số KHOA CÔNG NGHỆ THÔNG TIN B E A B C D E A B 0 C 0 D 0 0 E 0 0 BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH SỬ DỤNG MA TRẬN KỀ • Đối với đồ thị đơn (khơng có vịng), ma trận kề có đường chéo mang giá trị A B C • Ma trận kề đồ thị vơ hướng đối xứng • Bộ nhớ ma trận kề O(n2), n số đỉnh đồ thị KHOA CÔNG NGHỆ THÔNG TIN D E A B C D E A B 0 C 0 D 0 0 E 0 0 BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH SỬ DỤNG DANH SÁCH KỀ • Danh sách kề gồm đỉnh đồ thị V(G) • Mỗi đỉnh vi danh sách liên kết lưu trữ đỉnh vj , vj+1, … nối tới vi • Thường dùng để lưu đồ thị nhỏ vừa • Biểu diễn đồ thị thưa (có cạnh nối) nhớ máy tính KHOA CÔNG NGHỆ THƠNG TIN 10 THUẬT TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT THUẬT TỐN DIJKSTRA • Tìm đường ngắn đỉnh đồ thị • Chỉ thực trọng số dương • Áp dụng cho đồ thị vơ hướng có hướng KHOA CƠNG NGHỆ THƠNG TIN 37 THUẬT TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT THUẬT TỐN DIJKSTRA b c Tìm đường ngắn từ đỉnh a đến đỉnh d a d f KHOA CÔNG NGHỆ THÔNG TIN e 38 THUẬT TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT THUẬT TOÁN DIJKSTRA ∞ ∞ b c Khởi động d(a) = d(b) = ∞ a d f ∞ KHOA CÔNG NGHỆ THÔNG TIN e ∞ ∞ d(f) = ∞ d(c) = ∞ d(e) = ∞ d(d) = ∞ 39 THUẬT TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT THUẬT TỐN DIJKSTRA 4(𝑎) ∞ b c Bắt đầu đỉnh a d(a) = a d ∞ f (a) e ∞ d(b) = min(d(b), d a + w a, b ) = min(∞, + 4) = d(f) = d f , d a + w a, f ∞, + = = d(c) = ∞ d(e) = ∞ d(d) = ∞ KHOA CÔNG NGHỆ THÔNG TIN 40 THUẬT TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT THUẬT TỐN DIJKSTRA 4(𝑎) ∞ b c Vì d(f) < d(b) , bắt đầu đỉnh f d(a) = (đã qua) d(b) = a d ∞ f (a) e ∞ d(f) = d(c) = ∞ d(e) = d e , d f + w f, e min(∞, + 3) = = d(d) = ∞ KHOA CÔNG NGHỆ THÔNG TIN 41 THUẬT TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT THUẬT TỐN DIJKSTRA 4(𝑎) b Vì d(b) < d(e), bắt đầu đỉnh b ∞ c d(a) = (đã qua) d(b) = a d ∞ f (a) e (f) d(f) = (đã qua) d(c)= d c , 𝑑 𝑏 + 𝑤 𝑏, 𝑐 ∞, + = = d(e) = min(5, d(b)+w(b, e)) = min(5, + 3) = d(d) = ∞ KHOA CƠNG NGHỆ THƠNG TIN 42 THUẬT TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT THUẬT TOÁN DIJKSTRA 4(𝑎) b (b) Vì d(e) < d(c) , bắt đầu đỉnh e c d(a) = (đã qua) d(b) = (đã qua) a d ∞ f (a) KHOA CÔNG NGHỆ THÔNG TIN e (f) d(f) = (đã qua) d(c) = d(e) = d(d) = ∞, 𝑑 𝑒 + 𝑤 𝑒, 𝑑 ∞, + = = 43 THUẬT TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT THUẬT TOÁN DIJKSTRA 4(𝑎) b (b) Vì d(d) < d(c), bắt đầu đỉnh d c d(a) = (đã qua) d(b) = (đã qua) a d 6, (𝑒) f (a) e (f) d(f) = (đã qua) d(c) = min(7, d(d) + w(d, c))= min(7, + 2) = d(e) = (đã qua) d(d) = KHOA CƠNG NGHỆ THƠNG TIN 44 THUẬT TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT THUẬT TOÁN DIJKSTRA 4(𝑎) b (b) d(a) = (đã qua) c d(b) = (đã qua) d(f) = (đã qua) a d 6, (𝑒) f (a) KHOA CÔNG NGHỆ THÔNG TIN e (f) d(c) = d(e) = (đã qua) d(d) = (đã qua) Dừng 45 THUẬT TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT THUẬT TỐN DIJKSTRA 4(𝑎) b (b) Ta có đường ngắn c ab=4 a d 6, (𝑒) f (a) KHOA CÔNG NGHỆ THÔNG TIN e (f) abc=7 af =2 afed=6 afe=5 46 THUẬT TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT THUẬT TOÁN DIJKSTRA THUẬT TOÁN DIJKSTRA procedure DIJKSTRA (G, w, s, d) d(s) := 0, T := V for v thuộc V d(v) := ∞ while T ≠ ∅ Tìm u thuộc T cho d(u) nhỏ T := T \ {u} for v thuộc tập đỉnh kề v d(v) := min(d(v), d(u) + w(u, v)) return d(v) KHOA CÔNG NGHỆ THÔNG TIN 47 BÀI TẬP Dùng DFS BFS duyệt đỉnh đồ thị sau Trình bày bước G A B E F C D H KHOA CÔNG NGHỆ THÔNG TIN 48 BÀI TẬP Dùng Prim, Kruskal Dijkstra cho đồ thị sau Trình bày bước cụ thể G 2 A E C D 3 B F H KHOA CÔNG NGHỆ THÔNG TIN 49 BÀI TẬP Cho ma trận sau A B C D E F a) Vẽ đồ thị A 0 b) Dùng DFS, BFS B 0 C 0 D 0 E F 0 c) Dùng Prim, Kruskal d) Dùng Dijkstra từ đỉnh a đến f KHOA CÔNG NGHỆ THÔNG TIN 50 ... GIỚI THIỆU • Đồ thị cấu trúc liệu trừu tượng dựa khái niệm toán học đồ thị • Đồ thị xem tổng quát hóa cấu trúc Tuy nhiên, đồ thị có mối quan hệ phức tạp quan hệ cha-con cấu trúc • Đồ thị sử dụng... (Breadth-First Search) đồ thị vô hướng A B D KHOA CÔNG NGHỆ THÔNG TIN C B1: Xuất phát từ đỉnh A B2: Đi qua đỉnh B, D B3: Xuất phát từ đỉnh B B4: Đi qua đỉnh C B5: Xuất phát từ đỉnh D 15 THUẬT... thêm vào T := {(C,D), (A,B)} 34 THUẬT TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT THUẬT TOÁN KRUSKAL A C B1 : Chọn cạnh có trọng số nhỏ B D CD = thêm vào T := {(C, D)} B2 : Chọn cạnh có trọng số nhỏ AB = thêm vào

Ngày đăng: 27/01/2023, 08:44

Xem thêm:

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

TÀI LIỆU LIÊN QUAN

w