✨Đồ thị tăng luồng
Đồ thị tăng luồng
- Giả sử f là một luồng trên mạng G = (V, E). Từ mạng G = (V, E) ta xây dựng đồ thị có trọng số trên cung Gf = (V, Ef) với tập cung Ef và trọng số trên các cung được xác định theo quy tắc sau:
Nếu e = (u, v) ∈ E với f(u, v) = 0 thì (u, v) ∈ Ef với trọng số c(u, v).
Nếu e = (u, v) ∈ E với f(u, v) = c(u, v) thì (v, u) ∈ Ef với trọng số f(u, v).
Nếu e = (u, v) ∈ E với 0 < f(u, v) < c(u, v) thì (u, v) ∈ Ef với trọng số c(u, v) – f(u, v) và (v, u) ∈ Ef với trọng số f(u, v).
- Các cung của Gf đồng thời cũng là cung của G được gọi là cung thuận, các cung còn lại được gọi là cung nghịch. Đồ thị Gf được gọi là đồ thị tăng luồng. khung|giữa|Hình 1: Ví dụ về đồ thị tăng luồng
Tăng luồng
- Giả sử P = (s = v0, v1, v2… vk = t) là một đường đi từ s đến t trên đồ thị tăng luồng Gf. Gọi k là trọng số cung nhỏ nhất trên đường đi P. Xây dựng luồng f’ theo quy tắc sau:
f’(u, v) = f(u, v) + k, nếu (u, v) ∈ P là cung thuận.
f’(u, v) = f(u, v) – k, nếu (u, v) ∈ P là cung nghịch.
f’(u, v) = f(u, v) nếu (u, v) ∉ P.
- Dễ dàng kiểm tra được rằng f’ xây dựng như trên là luồng trong mạng và val(f’) = val(f) + k.
- Thủ tục tăng luồng này gọi là tăng luồng dọc theo đường P.
Đường tăng luồng
- Đường tăng luồng f là mọi đường đi từ s đến t trên đồ thị tăng luồng Gf.
- Các mệnh đề dưới đây là tương đương:
f là luồng cực đại trong mạng.
Không tìm được đường tăng luồng f.
val(f) = c(X, X) với một lát cắt (X, X) nào đó.
Chứng minh
- CM 2 → 3: Ký hiệu X là tập các đỉnh đến được từ s, Đặt X = V\X. Lúc đó (X, X) là lát cắt và f(u, v) = 0 với mọi u ∈ X* và v ∈ X. Do đó: khung|giữa|Hình 2:
- với u ∈ X* và v ∈ X, do (u, v) ∉ Gf nên f(u, v) = c(u, v). Vậy: khung|giữa|Hình 3: