1. Trang chủ
  2. » Tất cả

Đồ thị

17 0 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 17
Dung lượng 4,66 MB

Nội dung

5/27/2019 ĐỒ THỊ- GRAPH CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Data Structures & Algorithms ĐỒ THỊ– GRAPH Bản vẽ hay sơ đồ biểu diễn liệu nhờ sử dụng hệ thống tọa độ ! ĐỒ THỊ- GRAPH Đồ thị -GRAPH  Trong toán rời rạc: Là cấu trúc rời rạc có tính trực quan cao, sử dụng để biểu diễn tập đối tượng có quan hệ với theo cách  Định nghĩa hình thức: Đồ thị G xác định cặp (V, E),  V tập đỉnh  E tập cạnh nối cặp đỉnh E ⊆ {(u,v) | u, v ∈ V} Ứng dụng thực tế GRAPH Mối quan hệ môn học 5/27/2019 Biểu diễn mạch điện Truyền thơng mạng máy tính Mơ hình mạng xã hội Cung – Cạnh đồ thị • Tập cung nối cặp nút, có nhiều cung cặp nút A B B A C D E D C E Cung – Cạnh đồ thị 10 Đơn đồ thị - Simple Graph • Đơn đồ thị : đồ thị mà khơng có khun khơng có cạnh song song u u v Khuyên Cạnh song song 11 12 5/27/2019 Đa đồ thị - Multi Graphs Đồ thị vô hướng (Undirected graphs) • Đa đồ thị: đồ thị không thỏa mãn đơn đồ thị !  Cạnh – cung khơng có thứ tự 13 Đồ thị vô hướng (Undirected graphs) 14 Đồ thị vơ hướng (Undirected graphs) 15 Đồ thị có hướng (Directed graphs) 16 Đồ thị có hướng (Directed graphs)  Cạnh – cung có thứ tự 17 18 5/27/2019 Đồ thị có hướng (Directed graphs) Kề (Adjacency) – đồ thị vô hướng 19 Kề (Adjacency) – đồ thị có hướng 20 Đường (Path) 21 Chu trình (cycle) 22 Tính liên thơng (connectedness) 23 24 5/27/2019 Tính liên thơng (connectedness) Tính liên thơng (connectedness) 25 26 Biểu diễn đồ thị máy tính Biểu diễn ma trận kề(Adjacency Matrix) (Representation of Graphs) 27 Biểu diễn ma trận kề(Adjacency Matrix) 28 Biểu diễn ma trận kề(Adjacency Matrix) 29 30 5/27/2019 Biểu diễn ma trận liên thuộc đỉnh cạnh Biểu diễn ma trận liên thuộc đỉnh cạnh 31 Biểu diễn ma trận trọng số 32 Biểu diễn ma trận trọng số 33 Biểu diễn danh sách kề (Adjacency List) 34 Biểu diễn danh sách kề (Adjacency List) 35 36 5/27/2019 Biểu diễn danh sách kề (Adjacency List) Các thuật toán duyệt đồ thị 37 38 DFS VS BFS Tìm kiếm theo chiều rộng (BFS) 39 40 Tìm kiếm theo chiều rộng (BFS) Tìm kiếm theo chiều rộng (BFS) • Tìm kiếm theo tầng Expand node gần nút • Tìm kiếm theo tầng Expand đỉnh gần nút • Cài đặt: • Cài đặt: • L (danh sách node sinh chờ duyệt) cài đặt dạng danh sách FIFO, i.e., Các node sinh (bởi EXPAND) đặt L 41 • L (danh sách node sinh chờ duyệt) cài đặt dạng danh sách FIFO, i.e., Các node sinh (bởi EXPAND) đặt L Chương 3: Tìm kiếm mù 42 5/27/2019 Tìm kiếm theo chiều rộng (BFS) Tìm kiếm theo chiều rộng (BFS) • Tìm kiếm theo tầng Expand node gần nút • Cài đặt: • L (danh sách node sinh chờ duyệt) cài đặt dạng danh sách FIFO, i.e., Các node sinh (bởi EXPAND) đặt L Chương 3: Tìm kiếm mù • Tìm kiếm theo tầng Expand node gần nút • Cài đặt: • L (danh sách node sinh chờ duyệt) cài đặt dạng danh sách FIFO, i.e., Các node sinh (bởi EXPAND) đặt L 43 44 Tìm kiếm theo chiều rộng (BFS) Thuật tốn tìm kiếm theo bề rộng mơ tả thủ tục sau: procedure Breadth_First_Search; begin Khởi tạo danh sách L chứa trạng thái ban đầu; loop 2.1 if L rỗng then {thơng báo tìm kiếm thất bại; stop}; 2.2 Loại trạng thái u đầu danh sách L; 2.3 if u trạng thái kết thúc then {thơng báo tìm kiếm thành cơng; stop}; 2.4 for trạng thái v kề u { Đặt v vào cuối danh sách L; father(v) ← u} end; Trong thuật toán, sử dụng hàm father(v) để lưu lại cha đỉnh đường đi, father(v)=u u cha đỉnh v Các step duyệt theo chiều rộng theo hai tập: Open[] đỉnh xét Close[] Đỉnh duyệt qua 46 45 Tìm kiếm theo chiều rộng (BFS) Tìm kiếm theo chiều rộng (BFS) Khởi tạo Open = [A]; Closed = [] Open = [B,C,D] Closed = [A] Open = [C,D,E,F] Closed = [B,A] Open = [D,E,F,G,H]; Closed = [C,B,A] Open = [E,F,G,H,I,J]; Closed = [D,C,B,A] Open = [F,G,H,I,J,K,L]; Closed = [E,D,C,B,A] Open = [G,H,I,J,K,L,M]; Closed = [F,E,D,C,B,A] … 5/27/2019 Tìm kiếm theo chiều sâu (DFS) Tìm kiếm theo chiều sâu (DFS) • EXPAND node chưa xét sâu • Cài đặt: • L = danh sách kiểu LIFO, i.e., Đẩy nodes sinh EXPAND vào đầu L 49 Tìm kiếm theo chiều sâu (DFS) • EXPAND node chưa xét sâu • Cài đặt: 50 Tìm kiếm theo chiều sâu (DFS) • EXPAND node chưa xét sâu • Cài đặt: • L = danh sách kiểu LIFO, i.e., Đẩy nodes sinh EXPAND vào đầu L • L = danh sách kiểu LIFO, i.e., Đẩy nodes sinh EXPAND vào đầu L 51 Tìm kiếm theo chiều sâu (DFS) • EXPAND node chưa xét sâu • Cài đặt: 52 Tìm kiếm theo chiều sâu (DFS) • EXPAND node chưa xét sâu • Cài đặt: • L = danh sách kiểu LIFO, i.e., Đẩy nodes sinh EXPAND vào đầu L • L = danh sách kiểu LIFO, i.e., Đẩy nodes sinh EXPAND vào đầu L 53 54 5/27/2019 Tìm kiếm theo chiều sâu (DFS) Tìm kiếm theo chiều sâu (DFS) • EXPAND node chưa xét sâu • Cài đặt: • EXPAND node chưa xét sâu • Cài đặt: • L = danh sách kiểu LIFO, i.e., Đẩy nodes sinh EXPAND vào đầu L • L = danh sách kiểu LIFO, i.e., Đẩy nodes sinh EXPAND vào đầu L 55 Tìm kiếm theo chiều sâu (DFS) Chương 3: Tìm kiếm mù 56 Tìm kiếm theo chiều sâu (DFS) • EXPAND node chưa xét sâu • Cài đặt: • EXPAND node chưa xét sâu • Cài đặt: • L = danh sách kiểu LIFO, i.e., Đẩy nodes sinh EXPAND vào đầu L • L = danh sách kiểu LIFO, i.e., Đẩy nodes sinh EXPAND vào đầu L 57 Tìm kiếm theo chiều sâu (DFS) 58 Tìm kiếm theo chiều sâu (DFS) • EXPAND node chưa xét sâu • Cài đặt: • EXPAND node chưa xét sâu • Cài đặt: • L = danh sách kiểu LIFO, i.e., Đẩy nodes sinh EXPAND vào đầu L • L = danh sách kiểu LIFO, i.e., Đẩy nodes sinh EXPAND vào đầu L 59 60 10 5/27/2019 Tìm kiếm theo chiều sâu (DFS) Tìm kiếm theo chiều sâu (DFS) Procedure Depth_First_Search; begin Khởi tạo danh sách L chứa trạng thái ban đầu u0; loop 2.1 if L rỗng then {thông báo thất bại; stop}; 2.2 Loại trạng thái u đầu danh sách L; 2.3 if u trạng thái kết thúc then {thông báo thành công; stop}; 2.4 for trạng thái v kề u {Đặt v vào đầu danh sách L;}; end; • EXPAND node chưa xét sâu • Cài đặt: • L = danh sách kiểu LIFO, i.e., Đẩy nodes sinh EXPAND vào đầu L 61 62 63 64 Open[] tỉnh xét Close[] Đỉnh duyệt qua BÀI TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT Ý tưởng Ngun lý tham lam (Greedy Best First Search) Travelling Salesman Problem – TSP • Cho trước danh sách điểm giao hàng khoảng cách chúng • Nhân viên giao hàng xuất phát từ điểm cho trước • Tìm đường ngắn cho tất điểm phải giao hàng điểm viếng thăm lần sau trở điểm xuất phát • Từ điểm xuất phát, liệt kê tất đường từ điểm xuất phát n điểm  chọn theo đường ngắn • Khi đến điểm, chọn đến điểm theo nguyên tắc • Lặp lại trình lúc khơng cịn điểm để trở điểm ban đầu 11 5/27/2019 Bài tập: Tìm vị trí xuất phát mà hết đoạn đường tốt theo nguyên lý BFS ? Xuất phát từ điểm A  đường đi? BÀI TỐN TƠ MÀU ĐỒ THỊ 70 BÀI TỐN TƠ MÀU ĐỒ THỊ BÀI TỐN TƠ MÀU ĐỒ THỊ Cho đồ thị vơ hướng, tô màu tất đỉnh với số màu nhất, cho đỉnh nối với tơ khác màu 71 72 12 5/27/2019 Bài tốn tơ màu đồ thị Bài tốn tơ màu đồ thị - Ví dụ A I Gọi k số màu dùng để tô màu k=1; C E Trong chưa tô hết đỉnh { D H Chọn đỉnh p có bậc cao B Lặp từ màu đến màu k F { Nếu tồn màu i khác với màu đỉnh kề với p chọn màu i G } Nếu đỉnh p chưa tô màu Tô màu cho đỉnh p với màu k +1 Đỉnh Bậc } Bài tốn tơ màu đồ thị - Ví dụ D F E H I A B G Bài toán tô màu đồ thị A [1] Tô màu cho đỉnh C [2] Tô màu cho đỉnh D [3] Tô màu cho đỉnh F [4] Tô màu cho đỉnh E [5] Tô màu cho đỉnh H [6] Tô màu cho đỉnh I [7] Tô màu cho đỉnh A [8] Tô màu cho đỉnh B [9] Tô màu cho đỉnh G C I Vấn đề cài đặt: C • Loại bỏ đỉnh tơ E • Đánh dấu màu bị cấm tô đỉnh D H B F G Bài tốn tơ màu đồ thị Bài tốn tơ màu đồ thị - Ví dụ Áp dụng tơ màu cho đồ thị sau Gọi k số màu dùng để tô màu k=1; Trong chưa tô hết đỉnh { Chọn đỉnh p có bậc cao Lặp từ màu đến màu k Nếu tồn màu i khơng bị cấm tơ màu tơ p = i Nếu đỉnh p chưa tơ màu k=k+1, màu tơ p = k Với đỉnh q có nối với p Hạ bậc q, thêm màu tô p vào danh sách màu cấm tô q Gán bậc đỉnh p = } A I C E D H B F Đỉnh Bậc C D F E H I A B G G 13 5/27/2019 Bài tốn tơ màu đồ thị - Ví dụ • Bước 1: Chọn đỉnh C • Các đỉnh nối với C: A, B, D, E, G, H, G Bài tốn tơ màu đồ thị - Ví dụ Đỉnh Bậc Bậc Màu cấm tơ Màu tô A I C E D H B C D 1 • Bước 2: Chọn đỉnh D • Các đỉnh nối với D: E, F, H, I D F F 4 E 1, E H 1, H I 2 I 3 A 1 A 1 B 1 B 1 G 1 G 1 C 0 A I C E D H B F G F G Bài tốn tơ màu đồ thị - Ví dụ • Bước 3: Chọn đỉnh F • Các đỉnh nối với F: B, H, G Bài tốn tơ màu đồ thị - Ví dụ Đỉnh Bậc Bậc Màu cấm tơ Màu tô A I C E D H B F E 1 1, H 1, I 2 A 1 1 B 1 G 1 C D • Bước 4: Chọn đỉnh I • Các đỉnh nối với I: A, E Đỉnh Bậc Bậc Màu cấm tô Màu tô A I C E D H B F G I 2 A 1 E 1, B 0 H 0 1, G 0 C D F F G Bài tốn tơ màu đồ thị - Ví dụ • Bước 5: Chọn đỉnh A I C E D H B Bài tốn tơ màu đồ thị - Ví dụ Đỉnh Bậc Bậc Màu cấm tô Màu tô A G Đỉnh Bậc Bậc Màu cấm tơ Màu tơ • Bước 6: Chọn đỉnh B Đỉnh Bậc Bậc Màu cấm tô Màu tô A 0 B 0 B 0 E 0 1, 2 E 0 1, H 0 1, H 0 1, G 0 G 0 C C D D F F I I A A I C E D H B F F G 14 5/27/2019 Bài tốn tơ màu đồ thị - Ví dụ • Bước 7: Chọn đỉnh E Bài tốn tơ màu đồ thị - Ví dụ Đỉnh Bậc Bậc Màu cấm tô Màu tô A I C E D H B E 0 1, H 0 1, G 0 C D F I A B • Bước 8: Chọn đỉnh H A I C E D H B F G Đỉnh Bậc Bậc Màu cấm tô Màu tô H 0 1, G 0 C D F I A B E F G Bài tốn tơ màu đồ thị - Ví dụ • Bước 9: Chọn đỉnh G Đỉnh Bậc Bậc Màu cấm tô Màu tô A I C E D H B Bài tốn tơ màu đồ thị - Bài tập G 0 A I C D F I A B E H C E D H B F F G G Bài tập Bài tập (gợi ý) 89 90 15 5/27/2019 Bài tập (gợi ý) Bài tập 91 Bài tập (gợi ý) 92 Bài tập 93 Bài tập (gợi ý) 94 Slide tham khảo từ • Slide tham khảo từ: • Slide CTDL GT, Khoa Khoa Học Máy Tính, ĐHCNTT • Congdongcviet.com • Cplusplus.com 95 96 16 5/27/2019 97 17 ... 5/27/2019 Đa đồ thị - Multi Graphs Đồ thị vơ hướng (Undirected graphs) • Đa đồ thị: đồ thị không thỏa mãn đơn đồ thị !  Cạnh – cung khơng có thứ tự 13 Đồ thị vô hướng (Undirected graphs) 14 Đồ thị vô... hình mạng xã hội Cung – Cạnh đồ thị • Tập cung nối cặp nút, có nhiều cung cặp nút A B B A C D E D C E Cung – Cạnh đồ thị 10 Đơn đồ thị - Simple Graph • Đơn đồ thị : đồ thị mà khơng có khun khơng... TỐN TƠ MÀU ĐỒ THỊ 70 BÀI TỐN TƠ MÀU ĐỒ THỊ BÀI TỐN TƠ MÀU ĐỒ THỊ Cho đồ thị vô hướng, tô màu tất đỉnh với số màu nhất, cho đỉnh nối với tô khác màu 71 72 12 5/27/2019 Bài tốn tơ màu đồ thị Bài tốn

Ngày đăng: 25/02/2023, 15:26

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

TÀI LIỆU LIÊN QUAN

w