Bài giảng Lý thuyết đồ thị - Chương 1, 2, 3: Các khái niệm cơ bản

274 0 0
Bài giảng Lý thuyết đồ thị - Chương 1, 2, 3: Các khái niệm cơ bản

Đ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

LÝ THUYẾT ĐỒ THỊ Graph Theory Nội dung Chương Các khái niệm – Đồ thị vô hướng có hướng – Các thuật ngữ – Một số dạng đồ thị vô hướng đặc biệt Chương Biểu diễn đồ thị – Ma trận kề, ma trận trọng số, Ma trận liên thuộc đỉnh cạnh – Danh sách cạnh, Danh sách kề Chương Duyệt đồ thị – Tìm kiếm theo chiều sâu; Tìm kiếm theo chiều rộng – Tìm đường kiểm tra tính liên thơng Nội dung Chương Cây khung đồ thị – Cây tính chất – Cây khung đồ thị – Bài toán khung nhỏ Chương Bài toán đường ngắn – Phát biểu toán – Đường ngắn xuất phát từ đỉnh (Thuật toán Dijkstra, Ford-Bellman) – Đường ngắn đồ thị khơng có chu trình – Đường ngắn cặp đỉnh (Thuật toán Floyd) Chương Bài toán luồng cực đại mạng – – – – Mạng, luồng toán luồng cực đại Định lý Ford-Fulkerson Thuật toán Ford-Fulkerson Một số ứng dụng Chương CÁC KHÁI NIỆM CƠ BẢN Chương CÁC KHÁI NIỆM CƠ BẢN 1.1 Đồ thị thực tế 1.2 Các loại đồ thị 1.3 Bậc đỉnh 1.4 Đồ thị 1.5 Đồ thị đẳng cấu 1.6 Đường chu trình 1.7 Tính liên thơng 1.8 Một số loại đồ thị đặc biệt 1.9 Tô màu đồ thị Đồ thị gì? Khơng phải • Trong toán học đời thường hiểu là: Bản vẽ hay Sơ đồ biểu diễn liệu nhờ sử dụng hệ thống toạ độ • Trong tốn rời rạc: Đây cấu trúc rời rạc có tính trực quan cao, tiện ích để biểu diễn quan hệ Các ứng dụng thực tế đồ thị • Có tiềm ứng dụng nhiều lĩnh vực (Đồ thị dùng để biểu diễn quan hệ Nghiên cứu quan hệ đối tượng mục tiêu nhiều lĩnh vực khác nhau) • Ứng dụng mạng máy tính, mạng giao thơng, mạng cung cấp nước, mạng điện,…) lập lịch, tối ưu hoá luồng, thiết kế mạch, quy hoạch phát triển • Các ứng dụng khác: Phân tích gen, trị chơi máy tính, chương trình dịch, thiết kế hướng đối tượng, … Mối liên hệ môn học 461 373 413 321 326 142 415 410 322 143 370 341 417 378 Đỉnh = mơn học Cạnh có hướng = đk tiên 421 401 Biểu diễn mê cung S S B E E Đỉnh = phịng Cạnh = cửa thơng phịng hành lang Biểu diễn mạch điện (Electrical Circuits) Nguồn Đỉnh = nguồn, công tắc, điện trở, … Cạnh = đoạn dây nối Công tắc Điện trở 10 Phân tích DFS (* Main Program*) for u  V color[u]  white [u]  NIL time  for u  V if color[u] = white then DFS-Visit(u) Các biến time, color,  toàn cục DFS-Visit(u) color[u]  GRAY (* Thăm đỉnh u *) time  time + d[u]  time for each v  Adj[u] if color[v] = WHITE then [v]  u DFS-Visit(v) color[u]  BLACK (* Đỉnh u duyệt xong *) f[u]  time  time + 260 Phân tích DFS • Vịng lặp dòng 1-2 5-7 đòi hỏi thời gian (|V|), chưa tính thời gian thực lệnh DFS(v) • DFS(v) thực đỉnh trắng vV sau thăm tơ màu xám Các dòng 3-6 DFS(v) thực |Adj[v]| lần Vậy thời gian tổng cộng DFS(v) vV|Adj[v]| = (|E|) • Do thời gian DFS (|V|+|E|) • Thuật tốn đồ thị có đánh giá thời gian gọi thuật toán thời gian tuyến tính 261 CÁC ỨNG DỤNG CỦA DFS • Tính liên thơng đồ thị • Tìm đường từ s đến t • Phát chu trình • Kiểm tra tính liên thơng mạnh • Định hướng đồ thị 262 Bài tốn tính liên thơng • Bài tốn: Cho đồ thị vô hướng G = (V,E) Hỏi đồ thị gồm thành phần liên thông, thành phần liên thơng gồm đỉnh nào? • Giải: Sử dụng DFS (BFS) : – Mỗi lần gọi đến DFS (BFS) chương trình sinh thành phần liên thơng 263 DFS giải tốn liên thông (* Main Program*) for u  V id[u]  cnt  (* cnt – số lượng tplt *) for u  V if id[u] = then cnt  cnt +1 DFS-Visit(u) DFS-Visit(u) id[u]  cnt for each v  Adj[u] if id[v] = then DFS-Visit(v) 264 Tìm đường • Bài tốn tìm đường – Input: Đồ thị G = (V,E) xác định danh sách kề hai đỉnh s, t – Đầu ra: Đường từ đỉnh s đến đỉnh t, khẳng định không tồn đường từ s đến t • Thuật tốn: Thực DFS(s) (hoặc BFS(s)) – Nếu [t] = NIL khơng có đường đi, trái lại ta có đường t  [t]  [[ t]]   s 265 DFS giải toán đường (* Main Program*) for u  V color[u]  white [u]  NIL DFS-Visit(s) DFS-Visit(u) color[u]  GRAY (* Thăm đỉnh u *) for each v  Adj[u] if color[v] = WHITE then [v]  u DFS-Visit(v) 266 DFS Chu trình • Bài tốn: Cho đồ thị G=(V,E) Hỏi G có chứa chu trình hay khơng? • Định lý: Đồ thị G khơng chứa chu trình q trình thực DFS ta khơng phát cạnh ngược • Chứng minh: – Nếu G khơng chứa chu trình rõ ràng khơng có cạnh ngược (bởi tồn cạnh ngược dẫn đến phát chu trình) – Nếu khơng có cạnh ngược G khơng chứa chu trình (acyclic) Thực • Khơng có cạnh ngược tức có cạnh • Nếu có cạnh G rừng • Vậy G khơng chứa chu trinh • Như DFS áp dụng để giải toán đặt 267 DFS chu trình • Cần phải điều chỉnh để phát chu trình? (* Main Program*) for u  V color[u]  white [u]  NIL time  for u  V if color[u] = white then DFS-Visit(u) DFS(u) color[u]  GRAY (* Thăm đỉnh u *) time  time + d[u]  time for each v  Adj[u] if color[v] = WHITE then [v]  u DFS-Visit(v) color[u]  BLACK (* Đỉnh u duyệt xong *) f[u]  time  time + 268 DFS chu trình • Câu hỏi: Thời gian tính bao nhiêu? • Trả lời: Chính thời gian thực DFS: O(|V|+|E|) • Câu hỏi: Nếu G đồ thị vơ hướng đánh giá thời gian tính sát khơng? • Trả lời: Thuật tốn có thời gian tính O(|V|), vì: – Trong rừng (đồ thị khơng chứa chu trình) |E|  |V| - – Vì đồ thị có |V| cạnh chắn chứa chu trình, thuật tốn kết thúc 269 Kiểm tra tính liên thơng mạnh • Bài tốn: Hỏi đồ thị có hướng G có liên thơng mạnh? • Mệnh đề: Đồ thị có hướng G=(V,E) liên thơng mạnh ln tìm đường từ đỉnh v đến tất đỉnh cịn lại ln tìm đường từ tất đỉnh thuộc V \ {v} đến v • Chứng minh: Hiển nhiên 270 Thuật tốn kiểm tra tính liên thơng mạnh • Thuật tốn • Chọn v  V đỉnh tuỳ ý • Thực DFS(v) G Nếu tồn đỉnh u khơng thăm G khơng liên thơng mạnh thuật tốn kết thúc Trái lại thực tiếp • Thực DFS(v) GT = (V, ET), với ET thu từ E việc đảo ngược hướng cung Nếu tồn đỉnh u không thăm G khơng liên thơng mạnh, trái lại G liên thơng mạnh Thời gian tính: O(|V|+|E|) 271 Thuật tốn kiểm tra tính liên thơng mạnh a a d f c b e Đồ thị G d f c b e Đồ thị GT 272 Định hướng đồ thị • Bài tốn: Cho đồ thị vơ hướng liên thơng G= (V, E) Hãy tìm cách định hướng cạnh để thu đồ thị có hướng liên thông mạnh trả lời G không định hướng • Thuật tốn định hướng : Trong trình thực DFS(G) định hướng cạnh DFS theo chiều từ tổ tiên đến cháu, cạnh ngược theo hướng từ cháu đến tổ tiên Ký hiệu đồ thị thu G() • Bổ đề G định hướng G() liên thơng mạnh 273 Ví dụ: Định hướng đồ thị a a d f c b Đồ thị G e d f c b e Đồ thị G() 274

Ngày đăng: 02/09/2023, 09:48

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan