Sau đây khi nói “luồng” ta luôn luôn giả thiết: luồng chấp nhận được và thỏa mãn mọi đỉnh (αi(X) =pi với mọii). Một luồngX đạt cực tiểu của (3.1) sẽ gọi là mộtluồng tối ưu(hayluồng chi phí nhỏ nhất).
Định lí 3.2.1. Muốn cho một luồng X ={x(u)} là tối ưu, điều kiện cần cà đủ là
trên mọi dây chuyền đóng µ chưa bão hòa, ta đều có
∑
u∈K+(µ)
c(u)− ∑
u∈K−(µ)
c(u)≥0. (3.2)
Để ý rằng một dây chuyền µ ở đây là chưa bão hòa khi nàox(u)>0trên mọi cungu∈K−(µ)(vì trên các cungu∈K+(µ)thì đương nhiênx(u)<d(u) = +∞).
Chứng minh. Phần “cần” là hiển nhiên, vì nếu có một dây chuyền đóng µ chưa bão hòa, với
∑
u∈K+(µ)
c(u)− ∑
u∈K−(µ)
c(u)<0
thì chỉ việc sửax(u)thànhx(u) +1trên mỗiu∈K+(µ)và sửax(u)thànhx(u)−1
trên mỗiu∈K−(µ), làm như vậy cước phí trênK+(µ)tăng thêm
∑
u∈K+(µ) c(u),
nhưng cước phí trênK−(µ)giảm bớt ∑ u∈K−(µ) c(u)> ∑ u∈K+(µ) c(u),
cho nên ta sẽ được một luồng có cước phí nhỏ hơnX.
Ta hãy chứng minh phần “đủ”. ChoX ={x(u)}là một luồng có điều kiện (3.2) trên mọi dây chuyền đóng chưa bão hòa, vàX0={x0(u)}là một luồng bất kỳ. Mục đích của ta là chứng minh rằng f(X)≤ f(X0). Đặt
ρ(X,X0) = ∑
u∈U
x0(u)−x(u).
Ta có thể giả thiếtρ(X,X0)>0, vì nếuρ(X,X0) =0thìX0 trùng vớiX. Cho(i,j)
là một cung cóx0i j6=xi j, chẳng hạnxi j0 <xi j. Vì thông lượng củaX0vàX tại jbằng nhau (cùng bằng pj), nên phải có một cung (j,k) với x0jk <xjk, hoặc một cung
(k,j)vớix0k j>xk j, rồi vì thông lượng tạikbằng nhau, nên phải có một cung(k,l)
với x0kl <xkl, hoặc một cung(l,k)vớix0lk >xlk, v.v ... Do số đỉnh là hữu hạn nên cứ tiếp tục như thế, phải đến lúc ta trở lại một đỉnh đã từng đi qua rồi: lúc đó ta sẽ được một dây chuyền đóng µ với tính chất:x0(u)<x(u)trên mọi u∈K+(µ)
vàx0(i)>x(u)trên mọiu∈K−(µ). Ta sẽ sửax0(u)thànhx0(u) +1trên các cung u∈K+(µ), và thànhx0(u)−1trên các cungu∈K−(µ). Có thể thấy dễ dàng rằng làm như thế ta không tăng cước phí của X0. Thật vậy, cước phí trên K+(µ)tăng thêm
∑
u∈K+(µ) c(u),
cước phí trênK−(µ)giảm bớt
∑ u∈K−(µ) c(u) nhưng ∑ u∈K−(µ) c(u)≥ ∑ u∈K+(µ) c(u)
vì nếu gọiµ0là dây chuyền µ đổi chiều thì điều kiện (3.2) đối vớiµ0 cho ta
∑
u∈K−(µ)
c(u)− ∑
u∈K+(µ)
Chú ý 3.2.2. Đương nhiên, nếu điều kiện (3.2) được thỏa mãn trên mọi dây chuyền sơ cấp thì nó sẽ được thỏa mãn trên mọi dây chuyền, cho nên trong Định lý 3.3.2, chỉ việc xét trên các dây chuyền sơ cấp cũng đủ.
Chú ý 3.2.3. Trên mỗi chu trình, chỉ cần xét nhiều nhất là hai dây chuyền:µ1, tạo
thành bởi các cunguhướng theo chiều thuận của chu trình mà cóx(u)>0, và tất cả các cung hướng theo chiều ngược ở trên các cạnh còn lại của chu trình;µ2, định nghĩa như µ1, chỉ thay “thuận” bằng “ngược”.
Định lí 3.2.4. Muốn cho một luồngX ={x(u)}là tối ưu điều kiện cần và đủ là có
tồn tại những sốλivớii=1,2, ...,nsao cho
λj−λi≤ci j với mọiu= (i, j)∈U, (3.3) λj−λi=ci j nếuxi j >0. (3.4) Các sốλi với điều kiện trên thường gọi là cácthế vị.
Chứng minh. Đủ. Nếu có tồn tại các thế vị thì trên mỗi dây chuyền đóng µ chưa bão hòa, đi qua các đỉnhi1,i2, ...,is ta có
∑ u∈K+(µ) c(u)− ∑ u∈K−(µ) c(u)≥∑ r (λjr+1−λjr) =0.
Do đó theo Định lý 3.3.2,X là luồng tối ưu.
Cần. Ngược lại giả sử X ={x(u)} là luồng tối ưu. Với mỗi dây chuyền µ ta cho ứng một “ước lượng”l(µ)xác định như sau:
l(µ) = ∑ u∈K+(µ) c(u)− ∑ u∈K−(µ) c(u) + ∑ u∈K−(µ) c0(u), (3.5)
trong đó c0(u) =R, Rlà một số lớn hơn hoặc bằng 0. Nếu µ chưa bão hòa thì số hạng sau cùng của (3.5) không có, và nếu µ là đóng nữa thì theo Định lý 3.3.2, l(µ)≥0. Ta hãy xác định R đủ lớn để cho mọi dây chuyền đóng µ đều có ước lượngl(µ)≥0, điều đó có thể làm được, vì chỉ cầnl(µ)≥0với mọi dây chuyền sơ cấp đóng µ là đủ, mà số dây chuyền này là hữu hạn. Sau đó ta đặt λ1 =0cho đỉnh số 1 và ứng với mỗi đỉnh i ta đặt λi bằng ước lượng nhỏ nhất của mọi dây chuyền sơ cấp đi từ đỉnh 1 tới đỉnh i. Khi ấy, với mọi dây chuyền µ, sơ cấp hay không sơ cấp, đi từ đỉnh 1tới đỉnh i, ta đều có λ1 ≤l(µ)vì nếu µ không sơ cấp thì sau khi bỏ đi mọi dây chuyền sơ cấp đóng chứa trong µ ta sẽ còn lại một dây chuyền sơ cấp µ0 với l(µ0)≤l(µ)(do ước lượng của mỗi phần bỏ đi đều lớn hơn hoặc bằng 0). Ta sẽ chứng minh các λi chính là các thế vị cần tìm. Thật vậy, lấy một cung tùy ýu= (i,j)và gọi µi, µj là các dây chuyền đi từ đỉnh 1tớii, j sao cho l(µi) =λi, l(µj) =λj. Nếu j 6=1thì xét dây chuyền do cung u(i,j) tạo nên vớiµi, theo nhận xét trên ta có,λj≤λi+ci j, hayλj−λi≤ci j. Còn nếu j=1(tức làλj =0) thì dây chuyền vừa nói là đóng, cho nên phải có ước lượng lớn hơn hoặc bằng0, và hệ thức vừa rồi vẫn đúng. Nếuxi j >0thì xét dây chuyền dou= (i,j)
tạo nên với µj, ta lại có, bằng cách tương tự λi≤λj+ci j hay λj−λi≥ci j, do đó kết hợp với hệ thức trước,λj−λi =ci j. Vậy các điều kiện (3.3) và (3.4) đều được thỏa mãn. Đó là điều cần chứng minh.
Chú ý 3.2.5. Định lý trên cũng có thể chứng minh trực tiếp một cách đơn giản,
mà không cần dựa vào Định lý 3.3.2. Thật vậy, phần thứ hai của lập luận ở trên chỉ dựa vào phần “tất yếu” của Định lý 3.3.2, mà phần này thì chứng minh rất dễ. Còn phần thứ nhất thì có thể chứng minh như sau:
Nếu có tồn tại các thế vịλithì ta có f(X) = ∑ u∈U c(u)x(u) = ∑ (i,j)∈U (λj−λi)xi j =∑ j λj ∑ i,(i,j)∈U xi j ! −∑ i λi ∑ j,(i,j)∈U xi j !
f(X0) = ∑ u∈U c(u)x0(u)≥ ∑ (i,j)∈U (λj−λi)x0i j=∑ i λipi,
cho nên f(X)≤ f(X0), chứng tỏ rằngX là tối ưu.