Bài giảng Toán rời rạc (Phần II: Lý thuyết đồ thị): Chương 1 - Nguyễn Đức Nghĩa

275 35 1
Bài giảng Toán rời rạc (Phần II: Lý thuyết đồ thị): Chương 1 - Nguyễn Đức Nghĩa

Đ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

Chương 1 trình bày các khái niệm cơ bản về đồ thị như: Đồ thị trong thực tế, các loại đồ thị, bậc của đỉnh, đồ thị con, đồ thị đẳng cấu, đường đi và chu trình, tính liên thông, một số loại đồ thị đặc biệt, tô màu đồ thị.

Phần LÝ THUYẾT ĐỒ THỊ Graph Theory Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội 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 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội 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 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội Chương CÁC KHÁI NIỆM CƠ BẢN Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội 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ị Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội Đồ thị gì? • Khơng phải Trong tố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ạ độ Khơng phải • ta muốn đề cập 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ệ Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội 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, … Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội Mối liên hệ môn học 461 322 143 373 413 326 142 415 410 321 370 341 417 378 421 Đỉnh = mơn học Cạnh có hướng = đk tiên 401 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội 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 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội Biểu diễn mạch điện (Electrical Circuits) Nguồn Công tắc Đỉnh = nguồn, công tắc, điện trở, … Điện trở Cạnh = đoạn dây nối 10 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ mơn KHMT, ĐHBK Hà nội 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 toán đồ thị có đánh giá thời gian gọi thuật tốn thời gian tuyến tính 261 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội 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 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội 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 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội DFS giải tốn liên thơng (* Main Program*) (* Main Program*) DFS-Visit(u) DFS-Visit(u) for u ∈ V for u ∈ V 1.1 2.2 3.3 4.4 2 id[u] ← id[u] ← cnt ← (* cnt – số lượng tplt *) cnt ← (* cnt – số lượng tplt *) for u ∈ V for u ∈ V 5 6.6 7.7 if id[u] = if id[u] = id[u] ← cnt id[u] ← cnt for each v ∈ Adj[u] for each v ∈ Adj[u] if id[v] = if id[v] = then DFS-Visit(v) then DFS-Visit(v) then cnt ← cnt +1 then cnt ← cnt +1 DFS-Visit(u) DFS-Visit(u) 264 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ mơn KHMT, ĐHBK Hà nội 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 toá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 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội DFS giải toán đường (* Main Program*) (* Main Program*) DFS-Visit(u) DFS-Visit(u) for u ∈ V for u ∈ V 1.1 2.2 3.3 4.4 5.5 2 color[u] ← white color[u] ← white 3 π[u] ← NIL π[u] ← NIL DFS-Visit(s) DFS-Visit(s) color[u] ← GRAY (* Thăm đỉnh u *) color[u] ← GRAY (* Thăm đỉnh u *) for each v ∈ Adj[u] for each v ∈ Adj[u] if color[v] = WHITE if color[v] = WHITE then π[v] ← u then π[v] ← u DFS-Visit(v) DFS-Visit(v) 266 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội 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 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 tốn đặt 267 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội DFS chu trình • Cần phải điều chỉnh để phát chu trình? (* Main Program*) (* Main Program*) for u ∈ V for u ∈ V 2 color[u] ← white color[u] ← white 3 π[u] ← NIL π[u] ← NIL time ← time ← for u ∈ V for u ∈ V 6 7 if color[u] = white if color[u] = white then DFS-Visit(u) then DFS-Visit(u) DFS(u) DFS(u) 1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 color[u] ← GRAY (* Thăm đỉnh u *) color[u] ← GRAY (* Thăm đỉnh u *) time ← time + time ← time + d[u] ← time d[u] ← time for each v ∈ Adj[u] for each v ∈ Adj[u] if color[v] = WHITE if color[v] = WHITE then π[v] ← u then π[v] ← u DFS-Visit(v) DFS-Visit(v) color[u] ← BLACK (* Đỉnh u duyệt xong *) color[u] ← BLACK (* Đỉnh u duyệt xong *) f[u] ← time ← time + f[u] ← time ← time + 268 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội 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 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội 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 lại ln tìm đường từ tất đỉnh thuộc V \ {v} đến v • Chứng minh: Hiển nhiên 270 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ mơn KHMT, ĐHBK Hà nội 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 đợc thăm G không liên thông mạnh thuật toán kết thúc Trái lại thực tiếp Thùc hiƯn DFS(v) trªn GT = (V, ET), víi ET thu đợc từ E việc đảo ngợc h ớng cung Nếu tồn đỉnh u không đợc thăm G không liên thông mạnh, trái lại G liên thông mạnh ã Thi gian tớnh: O(|V|+|E|) 271 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ mơn KHMT, ĐHBK Hà nội Thuật tốn kiểm tra tính liên thông mạnh a a d f c b Đồ thị G d f c b e Đồ thị G e T 272 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội Định hướng th ã Bài toá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 đợc đồ thị có hớng liên thông mạnh trả lời G không định hớng đợc ã Thuật toá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 đợc G() ã Bổ đề G định hớng đợc G() liên thông mạnh 273 Phn Lí THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội Ví dụ: Định hướng đồ thị a a d f c b Đồ thị G d f c b e e Đồ thị G(δ) 274 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội Questions? 275 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội ... THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội Sơ đồ đường phố 17 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội 18 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT,... phố 14 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội Mạng xe buýt 15 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội Mạng tàu điện ngầm 16 Phần LÝ THUYẾT ĐỒ... nội 19 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội 20 Phần LÝ THUYẾT ĐỒ THỊ Nguyễn Đức Nghĩa- Bộ môn KHMT, ĐHBK Hà nội Chương CÁC KHÁI NIỆM CƠ BẢN 1. 1 Đồ thị thực tế 1. 2

Ngày đăng: 08/05/2021, 16:28

Mục lục

    Chương 1 CÁC KHÁI NIỆM CƠ BẢN

    Đồ thị là gì?

    Các ứng dụng thực tế của đồ thị

    Mối liên hệ giữa các môn học

    Biểu diễn mê cung

    Biểu diễn mạch điện (Electrical Circuits)

    Các câu lệnh của chương trình Program statements

    Yêu cầu trình tự (Precedence)

    Luồng giao thông trên xa lộ (Traffic Flow on Highways)

    Sơ đồ đường phố