1. Trang chủ
  2. » Cao đẳng - Đại học

Toán rời rạc 2 chương 6 bài toán luồng cực đại trong mạng

23 27 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

Cấu trú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.

Nội dung

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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 6.1 Giới thiệu toá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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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) = CuuDuongThanCong.com https://fb.com/tailieudientucntt 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; CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt - 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt Đị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*) CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 13 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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ịn 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt ... đ 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tốn với... đươ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*) CuuDuongThanCong.com https://fb.com/tailieudientucntt 6. 3 Thuật... 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

Ngày đăng: 13/09/2021, 13:31

TỪ KHÓA LIÊN QUAN

w