1. Trang chủ
  2. » Giáo án - Bài giảng

Thuật toán Ford Fulkerson

29 857 8
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 130 KB

Nội dung

BÀI TOÁN LUỒNG LỚN NHẤTtoán tối ưu của Lý thuyết Đồ thị, được đề xuất vào đầu những năm 1950 và trở nên nổi tiếng với thuật toán Ford - Fulkerson... - Mỗi cạnh e được gán một số nguyên k

Trang 1

CHƯƠNG 9MẠNG VẬN TẢI

Trang 2

NỘI DUNG

Trang 3

9.1 BÀI TOÁN LUỒNG LỚN NHẤT

toán tối ưu của Lý thuyết Đồ thị, được đề xuất vào

đầu những năm 1950 và trở nên nổi tiếng với thuật toán Ford - Fulkerson

Trang 4

- Mỗi cạnh e được gán một số nguyên không âm c(e)

và gọi là khả năng thông qua của cạnh.

Trang 7

LUỒNG QUA MẠNG (tiếp)

mạng (G, c) nếu:

a)  e  E : t(e)  c(e) - luồng trên mỗi cạnh không

được vượt quá khả năng thông qua của cạnh đó

b)  x  x 0 và z : t(W-(x)) = t(W-(x)) - luồng trên

các đỉnh phải cân bằng

Trang 9

TÍNH CHẤT CỦA LUỒNG (tiếp)

Hình 9.1 Tập cạnh vào và ra của một tập đỉnh

Trang 10

TÍNH CHẤT CỦA LUỒNG (tiếp)

thì: t(W-(B)) = t(W+ (B))

Theo tính chất b) của luồng:

 t (W-(x)) =  t (W+(x) )

Cạnh kề với đỉnh x nếu có đỉnh đầu và đỉnh cuối đều

nằm trong tập B thì nó sẽ có mặt ở cả hai vế của

đẳng thức đúng một lần, do đó có thể giản ước

Trang 11

TÍNH CHẤT CỦA LUỒNG (tiếp)

Sau khi giản ước, tổng ở vế trái chỉ còn lại các cạnh

mà đỉnh đầu ở ngoài B đỉnh cuối trong B, tức là tập

đỉnh đầu ở trong B đỉnh cuối ngoài B, tức là tập W+(B).

B

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

Trang 12

TÍNH CHẤT CỦA LUỒNG (tiếp)

Lấy B = V \ {x 0 , z} thì:

- Khi G không có cạnh (x 0 , z) ta có:

W+(x 0) = W-(B) ; W-(z) = W+(B)

- Và khi G có cạnh (x 0 , z) thì:

W+ (x 0) = W-(B)  (x 0 ,z) ; W-(z) = W+(B)  (x 0 ,z)

Suy ra: t(W+(x 0 )) = t(W-(z)).

Trang 13

GIÁ TRỊ CỦA LUỒNG

Ký hiệu: tz = t(W+(x 0 )) (cộng thêm t(x 0 ,z), nếu có) và

gọi là giá trị của luồng qua mạng G.

Trang 14

9.1 BÀI TOÁN LUỒNG LỚN NHẤT (tiếp)

t qua mạng sao cho tz đạt giá trị lớn nhất

Fulkerson

Trang 15

9.2 THUẬT TOÁN FORD - FULKERSON

Ta đánh số đỉnh của mạng là: 0, 1, , n sao cho đỉnh 0 là x 0 và đỉnh n là z

Ban đầu cho luồng t = 0 trên các cạnh

Thuật toán tiến hành hai bước:

Bước 1: Đánh dấu các đỉnh của mạng Bước 2: Nâng giá trị của luồng

Trang 16

BƯỚC 1

Lần lượt đánh dấu cho các đỉnh của mạng như sau:

- Đỉnh x 0 được đánh dấu bằng số 0

- Nếu đỉnh x đã được đánh dấu, có cạnh (x, y) với

đỉnh cuối y chưa được đánh dấu và t(x,y) < c(x,y) thì đánh dấu cho đỉnh y là +x

- Nếu đỉnh y đã được đánh dấu, có cạnh (x, y) với đỉnh đầu x chưa được đánh dấu và t(x,y) > 0 thì

đánh dấu đỉnh x là -y.

Trang 18

BƯỚC 1 (tiếp)

Cụ thể là: d(x 0 ) = 0

d(i 1 ) = +0

d(i 2 ) =  i 1

Trang 19

BƯỚC 2

Xây dựng luồng mới t' như sau:

- Nếu cạnh e không thuộc đường đi trên thì giữ

nguyên luồng, t'(e) := t(e).

- Nếu cạnh e thuộc đường đi này và cùng chiều với chiều từ x 0 tới z, thì tăng luồng: t'(e) := t(e) + 1

- Nếu cạnh e thuộc đường đi này và ngược chiều

với chiều từ x 0 tới z thì giảm luồng: t'(e) := t(e) - 1.

Trang 20

BƯỚC 2 (tiếp)

Dễ thấy rằng t' vẫn là một luồng và: t'z = tz + 1,

nghĩa là ta đã nâng luồng thêm 1

Lặp lại hai bước trên đây chừng nào còn có thể để cải

tiến luồng t.

cuối cùng sẽ là luồng lớn nhất đi qua mạng

Trang 21

9.2 THUẬT TOÁN FORD - FULKERSON

(tiếp)

Bổ đề 9.1: Nếu t là một luồng qua mạng thì:

tz  min { c(W-(B))B chứa z nhưng không chứa x 0}

Trang 22

9.2 THUẬT TOÁN FORD - FULKERSON (tiếp)

Trang 23

9.2 THUẬT TOÁN FORD - FULKERSON (tiếp)

Trang 24

9.2 THUẬT TOÁN FORD - FULKERSON (tiếp)

Trang 25

9.2 THUẬT TOÁN FORD - FULKERSON (tiếp)

Trang 26

9.2 THUẬT TOÁN FORD - FULKERSON (tiếp)

mạng

đều không vượt quá khả năng thông qua của mọi thiết diện của mạng

Trang 27

9.2 THUẬT TOÁN FORD - FULKERSON (tiếp)

Định lý 9.1 Khi thuật toán Ford - Fulkerson dừng thì

luồng cuối cùng nhận được sẽ là luồng lớn nhất với giá trị của luồng qua mạng là:

tz = min { c(W-(B))B chứa z và không chứa x 0 }

Trang 28

9.2 THUẬT TOÁN FORD - FULKERSON (tiếp)

Chứng minh: Khi thuật toán dừng có nghĩa là ta

không đánh dấu được đến đỉnh z

Ký hiệu B là tập các đỉnh không được đánh dấu

Theo Bổ đề 9.1 thì:

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

Trang 29

9.2 THUẬT TOÁN FORD - FULKERSON (tiếp)

Nếu cạnh (a, b)  W-(B) thì a được đánh dấu và b

không được đánh dấu Thế thì: t((a,b)) = c((a,b)).

không được đánh dấu Do đó, t((a,b)) = 0 Vậy thì:

tz = c(W-(B)) - 0 = c(W-(B))

 min { c(W-(B)) }  tz 

Ngày đăng: 17/08/2013, 08:42

HÌNH ẢNH LIÊN QUAN

Hình 9.1. Tập cạnh vào và ra của một tập đỉnh - Thuật toán Ford Fulkerson
Hình 9.1. Tập cạnh vào và ra của một tập đỉnh (Trang 9)

TỪ KHÓA LIÊN QUAN

w