Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 44 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
44
Dung lượng
3,79 MB
Nội dung
CHƯƠNG Giới thiệu ứng dụng: Bài toán luồng cực đại (Max-flow problem) Bài toán ghép cặp (Matching problem) Mạng (network) đồ thị có hướng có trọng số G = (V,E) ta chọn đỉnh gọi đỉnh phát (source vertex) đỉnh gọi đỉnh thu (sink vertex) Ví dụ 5 source sink 4 Một mạng G = (V,E) với đỉnh phát a, đỉnh thu z, c(e) ∈ N trọng số cung e Với đỉnh x, ta đặt: In(x) = {e ∈ E | e tới x} Out(x) = {e ∈ E | e tới x} b d 5 a 2 z Out(c)={cd, ce} 4 c In(c)={ac, bc} e Một hàm tải (flow function) G định nghĩa ánh xạ: φ: E N thỏa điều kiện (i)φ(e) ≤ c(e), ∀e ∈ E (ii)φ(e) = 0, ∀e ∈ In(a) ∪ Out(z) (iii) ∑ ϕ (e) = ∑ ϕ (e), ∀x ∈ V \ { a, z} e∈In(x) e∈Out(x) ϕ(fa) = ϕ(zg) = b 5,4 3,1 5,4 2,1 2,1 6,2 a ϕ(ab) = d 4,1 8,2 4,1 4,0 c 3,0 3,1 e 1,0 f g (2,0) z ϕ(ac) = ϕ(fc) = ϕ(gc) = ϕ(bd) = ϕ(be) = ϕ(bc) = ϕ(cd) = ϕ(ce)=1 ϕ(dz) = ϕ(ez) = ϕ(ed) = Một phép cắt (cut) xác định tập hợp P V, ký hiệu (P, P) tập hợp: (P, P) = { xy | x ∈ P y ∈ P } Trong P = V \ P Phép cắt (P, P) gọi phép cắt a-z a∈P z∈ P Trọng số (capacity) phép cắt định nghĩa là: c(P, P) = ∑ c(e) e∈(P, P ) b d 5 a 2 4 c z e P={a,b, c} P={d, e,z} (P,P)={bd,be,cd,c e} c(P,P)=16 Gọi ϕ hàm tải mạng G P ⊂ V\{a,z} thì: ∑ ϕ (e) = ∑ ϕ (e) e∈(P, P ) e∈( P , P) b Ví dụ: 5,4 4,0 c f 2,1 4,1 z 8,2 4,1 3,0 5,4 2,1 6,2 a P d 3,1 3,1 1,0 (2,0) e g 10 b 6,5 5,5 3,0 d 6,6 3,1 z a 6,1 5,2 c 1,1 e b 6,5 5,5 3,0 d 6,6 3,1 z a 6,1 5,2 c 1,1 e 30 Khi kết thúc thuật toán Ford-Fulkerson φ hàm tải tối đại phép cắt a-z tối tiểu (P, P) 31 Trong mạng G, tải trọng hàm tải tối đại trọng số phép cắt a-z tối tiểu 32 6,5 B D 6,6 5,5 3,0 3,1 A Z 5,2 6,1 C 1,1 E 33 6,3 B D 6,6 5,5 3,2 3,3 A Z 5,4 6,3 C 1,1 E 34 B A C Z D 4 E 12 F 35 7,5 B 6,5 A C 5,2 D 4,4 4,1 4,4 7,7 E 9,9 Z 3,3 12,12 F 36 Cho đồ thị lưỡng phân G = (X,Y,E) với X tập hợp đỉnh trái Y tập hợp đỉnh phải G Một ghép (matching) G tập hợp cạnh G đơi khơng có đỉnh chung Bài tốn cặp ghép (matching problem) G tìm ghép tối đại (có số lượng cạnh lớn nhất) G 37 Xét ghép M G Khi đó: ◦Các đỉnh M gọi đỉnh ghép ◦Một đường pha (alternating path) đường G bắt đầu đỉnh chưa ghép thuộc X cạnh thuộc không thuộc M ◦Một đường mở (augmenting path) đường pha kết thúc đỉnh chưa ghép thuộc Y 38 ◦Từ đỉnh u chưa ghép thuộc X, ta xây dựng pha (alternating tree) gốc u gồm tất đường pha u ◦Một pha chứa đường mở gọi mở (augmenting tree) Ngược lại gọi đóng (Hungarian tree), gốc u đóng gọi đỉnh đóng (Hungarian acorn) 39 Đặt đỉnh thuộc X chưa kiểm tra Đặt M=∅ Nếu đỉnh thuộc X chưa ghép kiểm tra dừng Nếu khơng, chọn đỉnh u∈X chưa ghép chưa kiểm tra để xây dựng pha gốc u Nếu pha mở bước Nếu khơng, đánh dấu u kiểm tra bước Mở rộng M mở sau: Trên đường mở, loại bỏ cạnh M thêm vào cạnh M Đánh dấu đỉnh thuộc X chưa kiểm tra Quay bước 40 Bộ ghép nhận sau áp dụng thuật toán Hungarian vào đồ thị lưỡng phân G tối đại 41 Một ghép M đồ thị lưỡng phân G=(X,Y,E) gọi X-đầy đủ (X-complete matching) M chứa đỉnh X Với A⊂X, đặt Γ(A) tập hợp đỉnh y∈Y kề với đỉnh x∈A Khi này, G có ghép X-đầy đủ ∀A⊂X, |Γ(A)| ≥ |A| 42 A a B b C c D d E e F f G g H h 43 A a B b C c D d E e F f G g H h 44 ... thuộc X chưa kiểm tra Quay bước 40 Bộ ghép nhận sau áp dụng thuật toán Hungarian vào đồ thị lưỡng phân G tối đại 41 Một ghép M đồ thị lưỡng phân G=(X,Y,E) gọi X-đầy đủ (X-complete matching)...Giới thiệu ứng dụng: Bài toán luồng cực đại (Max-flow problem) Bài toán ghép cặp (Matching problem) Mạng (network) đồ thị có hướng có trọng số G = (V,E) ta chọn đỉnh gọi... đại (có số lượng cạnh lớn nhất) G 37 Xét ghép M G Khi đó: ◦Các đỉnh M gọi đỉnh ghép ? ?Một đường pha (alternating path) đường G bắt đầu đỉnh chưa ghép thuộc X cạnh thuộc không thuộc M ? ?Một đường