Slide bài giảng Toán rời rạc 2 – Vũ Văn Thỏa

23 106 0
Slide bài giảng Toán rời rạc 2 – Vũ Văn Thỏ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 BÀI TOÁN LU NG C C Đ I TRONG M NG N I DUNG:  Giới thiệu tốn  Định lý Ford-Fulkerson  Thuật tốn tìm luồng cực đại mạng  Một số toán luồng tổng quát  ng dụng 6.1 Giới thiệu tốn M ng Mạng đồ thị có hướng G = (V, E) thỏa mãn: - Có đỉnh s khơng có cung vào gọi điểm phát; - Có đỉnh t khơng có cung gọi điểm thu; - Mỗi cung e = (u, v)  E có trọng số khơng âm c(e) = c(u, v) gọi khả thông qua c a cung e 2 Lu ng m ng Luồng f mạng G = (V, E) ánh xạ f: E  R gán cung e = (u, v)  E số thực không âm f(e) = f(u, v) gọi luồng cung e thỏa mãn điều kiện: (1) Luồng cung e  E không vượt khả thông qua: ≤ f(e) ≤ c(e); (2) Điều kiện cân luồng đỉnh v  V, v ≠ s, t: Tổng luồng cung vào v tổng luồng cung khỏi v Ký hiệu Γ-(v) = {u  V: (u, v)  E}, Γ+(v) = {w  V: (v, w)  E} Divf(v) = ∑u  Γ-(v) f(u, v) - ∑w  Γ+(v) f(v, w) = 3 Giá trị lu ng Giá trị c a luồng f val(f) = ∑v  Γ+(s) f(s, v) = ∑u  Γ-(t) f(u, t) Bài toán lu ng c c đ i Input: Mạng G = (V, E); Output: Luồng f* có giá trị luồng val(f*) lớn nhất; Ví dụ lu ng: - Hệ thống ống dẫn dầu bơm từ tàu chở dầu vào bể ch a dầu - Hệ thống tuyến đường giao thông nối sân bay Nội Hồ Hoàn kiếm 6.2 Định lý Ford-Fulkerson Lát cắt: Cho X tập đỉnh X* = V\X với s  X t  X*  (X, X*) gọi lát cắt Khả thông qua c a lát cắt: c(X, X*) = ∑uX, v X* c(u, v) Lát cắt có khả thơng qua nhỏ gọi lát cắt hẹp Bổ đề Giá trị c a luồng f không vượt khả thông qua c a lát cắt bất kỳ: val(f) ≤ c(X, X*)  Giá trị luồng cực đại không vượt khả thông qua c a lát cắt hẹp M t s khái niệm - Cho luồng f mạng G = (V, E) Xét đồ thị có trọng số Gf sau: (1) Nếu e = (u, v)  E với f(u, v) =  e = (u, v)  Ef với trọng số c(u, v); (2) Nếu e = (u, v)  E với f(u, v) = c(u, v)  e = (v, u)  Ef với trọng số f(u, v); (3) Nếu e = (u, v)  E với < f(u, v) < c(u, v)  e = (u, v)  Ef với trọng số c(u, v) - f(u, v) e = (v, u)  Ef với trọng số f(u, v) - Các cung c a Gf cung c a G gọi cung thuận - Các cung c a Gf không cung c a G gọi cung nghịch - Gf gọi đồ thị tăng luồng - Gọi P = (s = v0, v1, , vk = t) đường từ s đến t Gf  giá trị nhỏ c a trọng số cung thuộc P Xây dựng luồng f’: (1) Nếu (u, v)  P cung thuận f’(u, v) = f(u, v) + ; (2) Nếu (u, v)  P cung nghịch f’(u, v) = f(u, v) - ; (3) Nếu (u, v)  P f’(u, v) = f(u, v)  val(f*) = val(f) +   Th tục tăng luồng dọc theo P - Mọi đường từ s đến t Gf đường tăng luồng f Định lý Ford-Fullkerson Các mệnh đề sau tương đương: (1) f luồng cực đại mạng; (2) Khơng tìm đường tăng luồng; (3) Giá trị luồng f khả thông qua c a lát cắt đó: val(f) = c(X, X*) 6.3 Thuật tốn tìm lu ng c c đ i m ng Input: Mạng G = (V, E) cho ma trận trọng số c[i][j]; Đỉnh phát s; Đỉnh thu t; Output: Luồng cực đại f; giá trị luồng val(f); 10 Thuật toán Max_Flow { // Khởi tạo for u V for v V {f(u, v) = 0; } //Lặp Stop = 0; while (!Stop) { if (Tìm được đường tăng luồng P) { ; } else Stop = 1; } return (f, val(f)); } 11 void FindPath(){ int cq, dq, u, v; int Stop = 1; for (u = 1; u 0) { p[v] = -u; d[v] = Min(d[u], fl[v][u]); cq++; q[cq] = v; vs[v] = 1; if (v = t) return; } } } Stop = 0; } 12 13 6.4 M t s toán lu ng tổng quát M ng có nhiều điểm phát, nhiều điểm thu Xét mạng G có p điểm phát s1, …, sp q điểm thu t1, …, tq Một luồng xuất phát từ đỉnh phát đến đỉnh thu định nghĩa tương tự - Bài toán luồng cực đại G đưa toán cách bổ sung đỉnh phát giả s đỉnh thu giả t - Từ đỉnh phát giả s có cạnh nối đến đỉnh phát s1, …, sp với khả thông qua vô lớn - Từ đỉnh thu t1, …, tq có cạnh nối đến đỉnh thu giả t với khả thông qua vơ lớn 14 Thuật tốn tìm lu ng c c đ i: - Tìm luồng cực đại f* mạng G  {s, t} thuật toán Max_Flow; - Bỏ hai đỉnh giả s t  có luồng cực đại f* G với val(f*) 15 Bài tốn với khả thơng qua c a đỉnh c nh Xét mạng G Ngồi khả thơng qua c[u][v] cạnh (u, v)  E, có khả thông qua c a đỉnh v số nguyên không âm d[v], v  V Luồng f mạng G phải thỏa mãn thêm điều kiện: tổng luồng vào đỉnh v không vượt d[v] Yêu cầu: Tìm luồng cực đại s t 16 Thuật toán: (1) Xây dựng mạng G’sao cho v  G tương ng hai đỉnh v+, v- G’ với khả thông qua: c[u-][v+] = c[u][v]; c[v-][w+] = c[v][w]; c[v-][v+] = d[v]; (2) Tìm luồng cực đại f* G’; (3) Xuất f* G val(f*); 17 M ng có khả thơng qua bị chặn hai phía Xét mạng G Khả thơng qua cạnh (u, v)  E có cận c[u][v] cận d[u][v] Luồng f mạng G phải thỏa mãn thêm điều kiện: d[u][v] ≤ f[u][v] ≤ c[u][v] Yêu cầu: Tìm luồng cực đại s t 18 Thuật toán: (1) Đưa vào hai đỉnh phát giả su thu giả tu; Xây dựng mạng Gu cho cung (u, v) có d[u][v] ≠ tương ng hai cung (su, v) (u, tu) với khả thông qua d[u][v]; khả thông qua c a (u, v) c[u][v] – d[u][v]; (2) d* = ∑(u, v)  E d[u][v]; (3) Tìm luồng cực đại f* Gu; (4) Nếu val(f*) = d*  Xuất luồng f tương thích f* G val(f); 19 6.5 ng dụng B ghép c c đ i Cho đồ thị hai phía G với V = X  Y, X  Y = ; Bộ ghép M G cặp (x, f(x)) với đơn ánh f: X  Y u cầu: Tìm M có số lượng phần tử lớn Ví dụ: 1) Bài tốn phân việc; 2) Bài toán đám cưới vùng quê 20 Thuật toán: (1) Đưa vào hai đỉnh phát giả su thu giả tu; Xây dựng mạng Gu gồm cung (u, v)  E thêm cung (su, u) (v, tu), u X v  Y với khả thơng qua 1; (2) Tìm luồng cực đại f Gu; (3) Xuất cặp (u, v) f[u][v] > 0, u X v  Y val(f); Ghi - Xét đồ thị hai phía có trọng số khơng âm; - Tìm ghép M có số cặp lớn tổng trọng số lớn nhất; - Thuật toán tương tự 21 Hệ đ i diện chung Cho X = {z1, z2, …, zm} hai dãy tập c a X: ; Dãy n phần tử khác c a X: (a1, …, an) gọi hệ đại diện chung c a hai dãy  tồn hoán vị c a số {1, , n} (h1, …, hn) thỏa mãn  Ai  Bhi, với i = 1, …, n Yêu cầu: Tìm hệ đại diện chung (a1, …, an) 22 Thuật toán: (1) Xây dựng mạng G = (V, E) với: V = {s, t}  {x1, …, xn} {u1, …, um}  {v1, …, vm}  {y1, …, yn}; xi tương ng Ai, yi tương ng Bi, uj, vj tương ng zj; E = {(s, xi)| i = 1, …, n}  {(xi, uj| zj  Ai} {(ui, uj)}  {vj, yi)}  {(yi, t)}; khả thông qua cung 1; (2) Tìm luồng cực đại f G; (3) Nếu val(f) = n  Xuất (a1, …, an), với aj tương ng zj; 23 ... đơn ánh f: X  Y Yêu cầu: Tìm M có số lượng phần tử lớn Ví dụ: 1) Bài toán phân việc; 2) Bài toán đám cưới vùng quê 20 Thuật toán: (1) Đưa vào hai đỉnh phát giả su thu giả tu; Xây dựng mạng Gu... a hai dãy  tồn hoán vị c a số {1, , n} (h1, …, hn) thỏa mãn  Ai  Bhi, với i = 1, …, n Yêu cầu: Tìm hệ đại diện chung (a1, …, an) 22 Thuật toán: (1) Xây dựng mạng G = (V, E) với: V = {s, t}... thu t1, …, tq Một luồng xuất phát từ đỉnh phát đến đỉnh thu định nghĩa tương tự - Bài toán luồng cực đại G đưa toán cách bổ sung đỉnh phát giả s đỉnh thu giả t - Từ đỉnh phát giả s có cạnh nối

Ngày đăng: 23/11/2017, 18:26

Từ khóa liên quan

Mục lục

  • }

    • Xét mạng G có p điểm phát s1, …, sp và q điểm thu t1, …, tq. Một luồng có thể xuất phát từ một đỉnh phát bất kỳ đến một trong các đỉnh thu và được định nghĩa tương tự như trên.

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

Tài liệu liên quan