Đồthị
Đồ thịvôhướng
Đồ thị vô hướng G=(V,E) bao gồmVlà tập cácđỉnhvàElà tập các cặp không có thứ tự gồm hai phẩn tử khác nhau củaVgọi là cáccạnh.[37]
Mỗi cạnheEđược nối với một cặp đỉnhi, j(không có thứ tự) như Hình 1.1 sau.
Hình 1.1 Cạnh nối cặp đỉnh i , j Đồ thị Hình 1.2 là đồ thị vô hướng gồm có 4 đỉnh và 5 cạnh.
Hình 1.2 Đồ thị vô hướng
Đồ thịcó hướng
Đồ thị có hướng G=(V,E) gồmVlà tập cácđỉnhvàElà tập các cặp có thứ tự gồm hai phần tử khác củaVgọi là cáccung.[37]
Mỗi cungeEđược nối với một cặp đỉnhi,j(có thứ tự) như Hình 1.3 sau.
Hình 1.3 Cung nối cặp đỉnh i , j Đồ thị ở Hình 1.4 là đồ thị có hướng gồm 4 đỉnh và 5 cung.
Hình 1.4 Đồ thị có hướng
Đồ thịhỗn hợp
Đồ thị hỗn hợp G=(V,E) gồmVtập cácđỉnhvàElà tập vừa chứa cáccạnhvà cáccung.[47] Đồ thị ở Hình 1.5 là đồ thị hỗn hợp có 4 đỉnh, 3 cung và 2 cạnh.
Mạng, luồngtrênmạng
Mạng
Ta gọimạnglà đồ thị có hướngG=(V,E), trong đó có duy nhất một đỉnhskhôngcócungđivàogọilàđỉnhnguồn,duynhấtmộtđỉnhtkhôngcócungđira gọi làđỉnh đíchvà mỗi cunge=(i,j)E được gán một trọng số không âmc ij gọi là khả năng thông qua của cunge.
BộG= (V,E,{c ij (i, j)E}) gọi làmạng.[47] Đồ thị ở Hình 1.6 là mạng với nguồn là đỉnhsvà đích là đỉnht, ta có khả năngthông qua của các cung như sau:c sb = 5,c bc = 2,c sc = 2,c ct = 4,c bt = 2.
Hình 1.6 Mạng với đỉnh nguồn s đỉnh đích t b s 2 (1) t c
Luồngtrên mạng
Cho mạngG=(V,E,{c ij (i, j)E}) như đã định nghĩa ởmục 1.2.1 Tập các giá trịf= {f ij (i,j)E} gọi làluồngtrênGnếu thỏa mãn các điều kiện sau:
(ii) Điều kiện cân bằng luồng trên mỗi đỉnh của mạng: Tổng luồng trên các cung đi vào đỉnhkbằng tổng luồng trên các cung đi ra khỏi đỉnhk, nếuk≠s,t:
Với đồ thị ở Hình 1.7 tập {f ij } sau là luồngf sb =3,f sc =2,f bc =1,f ct = 3,f bt = 2.
Tậpcácluồngnàyđượcbiểudiễnbằngcácsốtrongngoặcđơn()trêncáccung trong mạng như trong Hình1.7.
Định lý 1.2.1 Chof={f ij (i, j)E}, là luồng trên mạngGvới đỉnh nguồnsvà đỉnhđícht.
Định nghĩa 1.2.1.Cho luồngf={f ij | (i, j)E} trên mạngG.Giá trị của luồng f, kýhiệufvđược định nghĩa là đạilượng. fv f si
Lát cắt, đồ thị tăng luồng, đường đităngluồng
Định nghĩa 1.2.2.Một lát cắt (X,X * ) là một phân hoạch tập đỉnhVthành haitập
Khả năng thông qua của lát cắt (X,X * ) được định nghĩa như sau:
Cho luồngfvà lát cắt (X,X * ) trên mạngG, ký hiệu f(X,X * )
Lát cắt với khả năng thông qua nhỏ nhất được gọi là lát cắt cực tiểu.[37]
Ví dụ minh họa: Xét mạngGvà luồngfnhư Hình1.7.
Hình 1.8 Mạng biểu diễn lát cắt
ChoX={s, b},X * ={c, t}, lát cắt (X,X * ) sẽ là (X,X * )={(s,c), (b,c), (b,t)} Ta cóC(X,X * )=6 vàf(X,X * )=5
Cho�là một luồng trên mạngG=(V,E,{c ij (i, j)E}) Từ mạng này ta xâydựngđồthịcótrọngsốG �=(𝑉,𝐸�),vớitậpcáccungE �vàtrọngsốtrên các cungđược xác định nhưsau:
-Nếu�=(i,j)Evới� ij =0,thì(i,j)E �vớitrọngsốc ij
-Nếu�=(i,j)Evới� ij =𝑐 ij ,thì(j,i)E �vớitrọngsốc ij
- Nếu�=(i,j)Evới0B) {c=c.B / B’;B’ =B; } // Điều chỉnh luồng:
ep,cf ij (e)=cf ij (e) +c; le(e) =le(e).(1+.c/(ce(e).ze(e)));
DLC(le,lv,) =DLC(le,lv,) +.c.dist ij (le,lv,);
Bước 4 :Hiệu chỉnh các giá trịt=t+1;DLC(t)=DLC(le,lv, );le t (e)=le(e)eE;lv t (v)=lv(v )vV. if (DLC(t)< 1)
i=1,…,r;j=1,…,k i ;eE f ij (e) =cf ij (e);//f ij (e) ký hiệu là luồng tối ưu
Bước 5: NếuDLC(t) >= 1 quaBước 6, ngược lại quay vềBước 3Bước 6: Xử lý kết quả đạt được
// Xử lí giá trị kết quả đạt được của luồngf
1 // Xử lý luồng trên cạnh vô hướng
i=1, ,r,j=1, ,k i ,eEvớielà cạnh vô hướng nếuf ij (e) >=f ij (e’)//e’ là cạnh ngược hướnge
B f =B f f ij (e’)(be i (e)+be i (e’)); f ij (e)=f ij (e)f ij (e’);f ij (e’)=0;n gược lại
B f =B f f ij (e)(be i (e)+be i (e’)); f ij (e’)=f ij (e’)f ij (e);f ij (e)=0 ; // Chuyển luồng quy đổif ij (e) về luồng thực tếrf ij (e) bằng cách chialuồng quy đổi cho hệ số quy đổi : rf ij (e) =f ij (e)/q i ,eE,i=1, ,r,j=1,…,k i
// hệ số cực đại đồng thời
◊Nhậnxét:Trong(t1)giaiđoạnthựchiệnthuậttoántrên,i=1,…,r,j=1,…,k i , ta đã chuyển (t1).d ij đơn vị hàng hóa loạiitừs ij đếnt ij Tuy nhiên, luồng đã chuyểncó thể vượt quá khả năng thông qua của cáccạnh.
Bổ đề sau đây giải quyết vấn đề trên t1
Xét cạnheE Ban đầu, le(e)= /(ce(e)ze(e)),e E,lv(v)= / (cv(v)zv(v)),vV,vV,=/B.Sau
(t1) giai đoạn được thực hiện, ta cóDLC(t1)(1+. g s /(ce(e)ze(e)))=(1+). s s
Ta thấy, với mọi cạnheE, cứ mỗice(e)ze(e) đơn vị của luồng được chuyển quae, thìle(e) tăng lên ít nhất một thừa số (1+).
Tương tự, với mọi đỉnhvV, cứ mỗicv(v)zv(v) đơn vị của luồng được chuyển quav, thìlv(v) tăng lên ít nhất một thừa số (1+).
Mặt khác, số lần để gửice(e).ze(e) đơn vị của luồng qua mỗi cạnheEít nhất làfe(e)/(ce(e).ze(e)) và số lần để gửicv(v)zv(v) đơn vị của luồng qua mỗi đỉnhvVít nhất làfv(v)/(cv(v)zv(v)).
Lúc này, hàm cạnhlevà hàm đỉnhlvsẽ thỏa bất đẳng thức sau: le t1(e)le 0(e).(1+ ) fe(e)/(ce(e).ze(e)),eE (118) và lv t1(v)lv 0(v).(1+ ) fv(v)/(ve(v).zv(v)),vV (119)Suy ra log le t1 (e) log 1/(ce(e).ze(e)) fe(e)ce(e).ze(e) 1