LY THUYET DO THI BAI 15

6 10 0
LY THUYET DO THI BAI 15

Đang tải... (xem toàn văn)

Thông tin tài liệu

[r]

(1)

BÀI 15

Chương Mng vn ti

Khi điều hành hệ thống vận tải, mong muốn tìm phương án vận chuyển nhiều hàng hố Chương sách mơ hình hoá toán học hệ thống vận tải xây dựng thuật toán hữu hiệu

ra phương án tối ưu 9.1 Bài toán luồng lớn

Bài toán luồng lớn toán tối ưu Lý thuyết Đồ

thị, đề xuất vào đầu năm 1950 trở nên tiếng với thuật toán Ford - Fulkerson

9.1.1. Mng vn ti

Định nghĩa 9.1: Mạng vận tải một đồ thị có hướng G = (V, E) khơng có đỉnh nút, đó:

1) có đỉnh x0 khơng có cạnh vào, F-1(x0) = ∅ (đỉnh phát), 2) có đỉnh z khơng có cạnh ra, F(z) = ∅ (đỉnh thu),

3) cạnh e gán số nguyên không âm c(e) gọi khả thông qua của cạnh

9.1.2 Lung qua mng

Với mạng G = (V, E), ta ký hiệu:

W-(x) = { (a, x) ∈ E ⏐ a ∈ V} - tập cạnh vào đỉnh x W+(x) = { (x, b) ∈ E ⏐ b ∈ V} - tập cạnh khỏi đỉnh x

Định nghĩa 9.2:

Hàm t : E → N gọi luồng qua mạng (G, c) nếu:

a) ∀ e ∈ E : t(e) ≤ c(e) - luồng cạnh không vượt khả thơng qua cạnh

b) ∀ x ≠ x0 z : t(W-(x)) = t(W+(x)) - luồng đỉnh phải cân Với tập B ⊆ V, ta ký hiệu:

W-(B) = { (a, b) ∈ E ⏐ a ∉ B, b ∈ B } - tập cạnh từ B vào B, W+(B) = { (a, b) ∈ E ⏐ a ∈ B, b ∉ B } - tập cạnh từ B khỏi B

(2)

Hình 9.1 Tập cạnh vào tập đỉnh

Hiển nhiên, tập đỉnh B không chứa x0 z thì: t(W-(B)) = t(W+(B))

Thật vậy, theo tính chất b) luồng:

∑ ∑

∈ ∈

+ − =

B

t t B

x W t x

W

t( ( )) ( ( ))

Trong số cạnh kề với đỉnh x có đỉnh đầu đỉnh cuối nằm tập B có mặt hai vế đẳng thức lần, giản ước Sau giản ước, tổng vế trái lại cạnh mà đỉnh đầu B đỉnh cuối B, tức tập W-(B) Tương tự, tổng vế phải lại cạnh mà

đỉnh đầu B đỉnh cuối B, tức tập W+(B)

Hình 9.2 Các cạnh kề với tập đỉnh

Từ nhận xét trên, lấy B = V \ {x0, z} - G khơng có cạnh (x0, z) ta có:

W+(x0) = W-(B)

W-(z) = W+(B) - G có cạnh (x0, z) thì:

W+(x0) = W-(B) ∪ (x0, z) W-(z) = W+(B) ∪ (x0, z) Suy ra:

(3)

Ký hiệu: tz = t(W+(x0)) (cộng thêm t(x0,z), nếu có) gọi giá trị luồng qua mạng G

9.1.3. Bài toán lung ln nht

Bài toán: Cho mạng vận tải (G, c) Hãy tìm luồng t qua mạng cho tz đạt giá trị lớn

Để giải toán này, ta dùng thuật toán Ford - Fulkerson sau 9.1.4. Thut tốn Ford - Fulkerson tìm lung ln nht

Ta đánh số đỉnh mạng là: 0, 1, , n cho đỉnh x0 đỉnh n z Thut toán 9.1 (Tìm luồng lớn nhất):

Ban đầu cho luồng t = cạnh Bước 1: Đánh dấu đỉnh mạng

Lần lượt đánh dấu cho đỉnh mạng sau: 1) Đỉnh x0 đánh dấu số

2) Nếu đỉnh x đánh dấu, có cạnh (x, y) với đỉnh cuối y chưa

đánh dấu t(x,y) < c(x,y) đánh dấu cho đỉnh y +x

3) Nếu đỉnh y đánh dấu, có cạnh (x, y) với đỉnh đầu x chưa

đánh dấu t(x,y) > đánh dấu đỉnh x -y

4) Nếu đỉnh thu z đánh dấu +k với k có nghĩa có

đường vơ hướng từ x0 đến z có dạng < x0 , i1 , i2 , , k , z >

Hình 9.3 Một đường vơ hướng từ đỉnh phát đến đỉnh thu

trên đỉnh đánh dấu +j -j Cụ thể là: d(x0) =

d(i1) = +0 d(i2) = ± i1

d(z) = +k

(4)

Ta xây dựng luồng t' sau:

1) Nếu cạnh e không thuộc đường luồng giữ nguyên, t'(e) := t(e) 2) Nếu cạnh e thuộc đường chiều với chiều từ x0 tới z,

trên cạnh t(e) < c(e)) , ta đặt: t'(e) := t(e) +

3) Nếu cạnh e thuộc đường ngược chiều với chiều từ x0 tới z ,

đó cạnh t(u) > , ta đặt: t'(e) := t(e) -

Dễ thấy t' luồng và: t'z = tz + 1, nghĩa ta nâng luồng thêm

Lặp lại hai bước chừng cịn có thểđể cải tiến luồng t

Ta chứng minh rằng, thuật tốn kết thúc luồng cuối luồng lớn qua mạng Trước hết ta có:

Bđề 9.2: Nếu t luồng qua mạng thì:

tz { c(W-(B))⏐B chứa z không chứa x0} Chứng minh:

Giả sử B tập đỉnh chứa z không chứa x0 Xét luồng t

Đặt: B1 = B \ {z} Thế thì, B = B1 ∪ {z} Vì tập B1 không chứa x0 z nên theo nhận xét trên, ta có: t(W-(B1)) = t(W+(B1))

W-(B) = {(a, b) ∈ E⏐a ∉ B, b ∈ B } = W-(B1) ∪ W1 đó: W1 = { (a, z) ∈ E ⏐ a ∉ B }

Hai tập W-(B1) W1 rời cho nên: t(W-(B)) = t(W-(B1)) + t(W1)

Vậy thì: t(W-(B1)) = t(W-(B)) - t(W1) (1)

Hình 9.4 Các tập cạnh vào B1 Mặt khác,

(5)

Vì W2 ⊆ W+(B1) cho nên:

t(W+(B)) = t(W+(B1)) - t(W2)

Thế thì, t(W+(B1)) = t(W+(B)) + t(W2) (2) Từ (1) (2) suy ra:

t(W-(B)) - t(W1) = t(W+(B)) + t(W2) Vì W1 ∩ W2 = ∅ W1 ∪ W2 = W-(z) nên

t(W-(B)) - t(W+(B)) = t(W1) + t(W2) = tz Vậy với t luồng thì:

tz = t(W-(B)) - t(W+(B)) với tập B chứa z không chứa x0 Do đó:

tz ≤ t(W-(B)) ≤ c(W-(B))

Bổđềđược chứng minh 

Tập cạnh W-(B) gọi thiết diện mạng Theo Bổ đề 9.2 giá trị luồng qua mạng không vượt khả thông qua thiết diện mạng

Ta trở lại chứng minh tính lớn luồng thuật tốn dừng

Định lý 9.3: Khi thuật toán Ford - Fulkerson dừng luồng cuối nhận luồng lớn với giá trị luồng qua mạng là:

tz = { c(W-(B)) ⏐ B chứa z không chứa x0} Chứng minh:

Khi thuật tốn dừng có nghĩa khơng đánh dấu đến đỉnh z Ký hiệu B tập đỉnh không đánh dấu

Tập B không chứa đỉnh x0 ta ln đánh dấu từ x0 Tập B chứa đỉnh z Theo Bổ đề 9.2 thì:

tz = t(W-(B)) - t(W+(B))

- Nếu cạnh (a, b) ∈ W-(B) a đánh dấu (vì a nằm ngồi B) b khơng

được đánh dấu (b thuộc B) Điều có nghĩa là: t((a,b)) = c((a,b))

- Nếu cạnh (a, b) ∈ W+(B) b đánh dấu (vì b nằm ngồi B), a không đánh dấu (a thuộc B) Do vậy, t((a,b)) =

(6)

Tập cạnh W-(B) gọi thiết diện hẹp mạng Ví dụ 9.3: Xét mạng vận tải sau

Hình 9.5 Mạng vận tải luồng mạng

Luồng thời tz = 23 Ta nâng luồng lên Đánh dấu đỉnh mạng ta nhận đường vô hướng sau đây:

Hình 9.6 Nâng luồng thời

Ngày đăng: 13/04/2021, 01:42

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan