1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng môn lý thuyết đồ thị chương 6 bài toán luồng cực đại

54 49 0

Đ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

Tiêu đề Bài toán luồng cực đại
Tác giả L. R. Ford, D. R. Fulkerson
Trường học Khoa học Máy tính
Chuyên ngành Toán Rời Rạc
Thể loại Bài giảng
Năm xuất bản 2005
Thành phố Fall
Định dạng
Số trang 54
Dung lượng 1,86 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨABộ môn KHMT 8 Mạng và luồng trong mạng... Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨABộ môn KHMT LUỒNG TRONG MẠNG Định nghĩa.. Toán rời rạc – Fall

Trang 1

Chương 6 Bài toán luồng cực đại

Maximum Flow Problem

Trang 2

BM Khoa học Máy tính • TOÁN RỜI RẠC • Fall 2005 • Nguyễn Đức Nghĩa

Bài toán luồng cực đại

Maximum Flow Problem

Trang 3

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

NỘI DUNG

Trang 4

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT

L R Ford; D R Fulkerson (1962) Flows in

Networks Princeton, NJ: Princeton University Press.

4

Trang 5

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Lester Randolph Ford, Jr (1927 ~)

Lester Randolph Ford, Jr (born September 23, 1927), son of

Lester R Ford, Sr., is an American mathematician specializing

in network flow programming His 1956 paper with D R.

Fulkerson on the maximum flow problem established the

maxflow-mincut theorem.

Trang 6

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT 6

Delbert Ray Fulkerson

(August 14, 1924 - January 10, 1976)

co-developed the Ford-Fulkerson algorithm, one of the most used algorithms to compute maximal flows in networks.

Ph.D, Univ of Wisconsin-Madison, 1951.

In 1956, he published his famous paper on the Fulkerson algorithm together with Lester Randolph Ford.

Ford-In 1979, the renowned Fulkerson Prize was established which is now awarded every three years for outstanding papers in discrete mathematics jointly by the Mathematical Programming Society and the American Mathematical Society.

Trang 7

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Ravindra K Ahuja, Thomas Magnanti and James Orlin Network

Flows Prentice Hall, 1993.

Trang 8

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT 8

Mạng và luồng trong mạng

Trang 9

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

MẠNG (Network)

Mạng là đồ thị có hướng G = (V,E) :

Có duy nhất một đỉnh s không có cung đi vào gọi

là đỉnh phát (nguồn) và duy nhất một đỉnh t không có cung đi ra gọi là đỉnh thu (đích).

Mỗi cung e của G được gắn với một số không âm

c(e) được gọi là khả năng thông qua của e.

5 1

5

2

Trang 10

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT

LUỒNG TRONG MẠNG

Định nghĩa Luồng f trong mạng G=(V,E) là phép gán số f(e) cho mỗi cạnh e ( f(e) được gọi là luồng trên cạnh e) thoả mãn các điều kiện:

1) Hạn chế về khả năng thông qua (Capacity Rule):

Với mỗi cung e, 0  f (e)  c(e)

2) Điều kiện cân bằng luồng (Conservation Rule): Với mỗi v  s, t

Định nghĩa Giá trị của luồng f là

(Đẳng thức (*) thu được bằng cách cộng tất cả các điều kiện cân bằng luồng.)

Trang 11

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

LUỒNG TRONG MẠNG – Ví dụ

 Trong 2 số viết bên mỗi cạnh: giá trị luồng trên cạnh là số màu

đỏ, số còn lại là khả năng thông qua

Các điều kiện 1) và 2) được thoả mãn => f là luồng trên mạng.

 Giá trị luồng là:

8 = f(s,v) + f(s,u) + f(s,w) = f(v,t) + f(w,t) + f(z,t)

w s

Trang 12

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT 12

Bài toán luồng cực đại

Luồng trong mạng G được gọi

là luồng cực đại nếu trong số

tất cả các luồng trong mạng G

nó là luồng có giá trị lớn nhất

Bài toán tìm luồng cực đại

trong mạng G được gọi là bài

toán luồng cực đại

w s

4/ 5 1/ 1

3/ 5

2/ 2

w s

4/ 5 1/ 1

3/ 5

2/ 2 Luồng với giá trị 8 = 2 + 3 + 3 = 1 + 3 + 4

Luồng cực đại có giá trị 10 = 4 + 3 + 3 = 3 + 3 + 4

Trang 13

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Mạng: G = (V, E, s, t, c)

(V, E) = đồ thị có hướng, không có cung lặp.

Có hai đỉnh đặc biệt: s = phát/nguồn (source), t = thu/đích (sink).

c(e) = khả năng thông qua (capacity) của cung e.

30

15

10

8 15 9

10

10 15

4

4

Trang 14

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT 14

Luồng từ s đến t là hàm f: E  R thoả mãn:

Với mỗi e  E: 0  f(e)  c(e) (hạn chế kntq)

30

15

10

8 15 9

10

10 15

Trang 15

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bài toán luồng cực đại: Tìm luồng có tổng luồng trên các cạnh đi ra

30

15

10

8 15 9

10

10 15

Trang 16

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

30

15

10

8 15 9

10

10 15

kntq

Luồng

Trang 17

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Luồng có giá trị 28 trong mạng:

30

15

10

8 15 9

10

10 15

kntq

Luồng

Trang 18

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

cáp nối, cáp quang,

Luồng

voice, video, packets

mạng điện cổng, registers,

thuỷ lợi hồ chứa, trạm bơm,

dòng nước, chất lỏng

giao thông sân bay, ga tàu,

giao lộ

đường cao tốc, ray, đường bay

hàng hoá, phương tiện, hành khách

Trang 19

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Luồng trong mạng

communication

Mạng

telephone exchanges, computers, satellites

circuits gates, registers,

mechanical joints rods, beams, springs heat, energy

hydraulic reservoirs, pumping

financial stocks, currency transactions money

transportation airports, rail yards,

street intersections

highways, railbeds, airway routes

freight, vehicles, passengers

Trang 20

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Trang 21

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Lát cắt – Đường tăng luồng

Trang 22

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT 22

Lát cắt là cách phân hoạch tập đỉnh (S, T) sao cho s  S, t  T.

Khả năng thông qua cap(S,T) của lát cắt (S, T) là số:

30

15

10

8 15 9

10

10 15

4

4

kntq = 30 Lát cắt nhỏ nhất (hẹp nhất) là lát cắt với kntq nhỏ nhất.

Trang 23

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Lát cắt (S 1 , T 1 ), S 1 ={s,2,3,4}, T={5,6,7,t) có khả năng thông qua 62:

30

15

10

8 15 9

10

10 15

4

4

cap(S 1 ,T 1 )= 62

Trang 24

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

30

15

10

8 15 9

10

10 15

4

4

cap(S 2 ,T 2 ) = 28

Trang 25

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bổ đề 1. Giả sử f là luồng, và (S, T) là lát cắt Khi đó giá trị luồng

chảy qua lát cắt chính bằng giá trị của luồng:

trong đó S  T = {(v,w)E: vS, wT} và T S = {(v,w)E: vT, w S}

30

15

10

8 15 9

10

10 15

Trang 26

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT 26

Bổ đề 1. Giả sử f là luồng, và (S, T) là lát cắt Khi đó giá trị luồng

chảy qua lát cắt chính bằng giá trị của luồng:

30

15

10

8 15 9

10

10 15

4

4 Giá trị = 24

Trang 27

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bổ đề 1. Giả sử f là luồng, và (S, T) là lát cắt Khi đó giá trị luồng

chảy qua lát cắt chính bằng giá trị của luồng:

30

15

10

8 15 9

10

10 15

4

4 Giá trị = 24

0

Trang 28

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

CM Cộng tất cả các ràng buộc cân bằng luồng theo mọi vS, đơn

giản biểu thức ta thu được:

Trang 29

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

CM.

Luồng và lát cắt

( ) ( ) cap( , )

Trang 30

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT 30

Luồng cực đại và lát cắt nhỏ nhất

Max Flow and Min Cut

Hệ quả Giả sử f là luồng, còn (S, T) là lát cắt Nếu val(f) = cap(S, T) , thì

30

15

10

8 15 9

10

10 15

kntq của lát cắt = 28

Trang 31

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Định lý về luồng cực đại và lát cắt nhỏ nhất

Max-Flow Min-Cut Theorem

Đinh lý (Ford-Fulkerson, 1956): Trong mạng bất kỳ, giá trị của luồng

cực đại luôn bằng khả năng thông qua của lát cắt nhỏ nhất.

Proof (muộn hơn).

30

15

10

8 15 9

10

10 15

Cut capacity = 28

Trang 32

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT 32

Ý tưởng thuật toán

Thuật toán tham lam:

Bắt đầu từ luồng 0 (Luồng có giá trị = 0).

Tìm đường đi P từ s đến t trong đó mỗi cung thoả mãn f(e) < c(e)

Tăng luồng dọc theo đường đi P.

Lặp lại cho đến khi gặp bế tắc.

Luồng có giá trị = 0

Trang 33

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Ý tưởng thuật toán

Thuật toán tham lam:

Bắt đầu từ luồng 0 (Luồng có giá trị = 0).

Tìm đường đi P từ s đến t trong đó mỗi cung thoả mãn f(e) < c(e)

Tăng luồng dọc theo đường đi P.

Lặp lại cho đến khi gặp bế tắc.

Giá trị luồng = 10

Trang 34

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT 34

Ý tưởng thuật toán

Thuật toán tham lam:

Bắt đầu từ luồng 0 (Luồng có giá trị = 0).

Tìm đường đi P từ s đến t trong đó mỗi cung thoả mãn f(e) < c(e)

Tăng luồng dọc theo đường đi P.

Lặp lại cho đến khi gặp bế tắc.

Thuật toán tham lam cho luồng với giá trị 10.

Trang 35

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Ý tưởng thuật toán

Thuật toán tham lam không cho lời giải tối ưu.

Tối ưu:

Giá trị luồng = 14

Trang 36

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT 36

ĐỒ THỊ TĂNG LUỒNG- ĐƯỜNG TĂNG LUỒNG

Trang 37

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Đồ thị tăng luồng – Tập cung

Mạng đã cho G = (V, E).

Luồng f(e), e  E.

Cung e = (v, w)  E.

Đồ thị tăng luồng: G f = (V, E f ).

“thu lại" luồng đã gửi

Ef = {e: f(e) =0<c(e) }  {e R : f(e) > 0 }.

Khả năng thông qua

Trang 38

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT 38

Đồ thị tăng luồng - Ví dụ

Đồ thị tăng luồng: G f = (V, E f ).

E f = {e : f(e) < c(e)}  {e R : f(e) > 0}.

c f (e) cho biết lượng lớn nhất có thể tăng luồng trên cung e.

c f (e R ) cho biết lượng lớn nhất có thể giảm luồng trên cung e.

4 4

3

G f

Trang 39

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Đường tăng luồng

Đường tăng luồng = đường đi từ s đến t trên đồ thị tăng luồng G f

Khả năng thông qua của đường đi P là

4 4

G f

Trang 40

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT 40

Đường tăng luồng

Đường tăng luồng = đường đi từ s đến t trên đồ thị tăng luồng.

Luồng là cực đại  không tìm được đường tăng luồng???

4 4

7

G f

Trang 41

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Định lý về luồng cực đại và lát cắt nhỏ nhất

Định lý đường tăng luồng (Ford-Fulkerson, 1956): Luồng là cực đại khi

và chỉ khi không tìm được đường tăng luồng

Định lý về luồng cực đại và lát cắt nhỏ nhất (Ford-Fulkerson, 1956): Giá

trị của luồng cực đại bằng khả năng thông qua của lát cắt nhỏ nhất.

Ta sẽ chứng minh định lý tổng hợp sau:

(i) Tìm được lát cắt (S, T) sao cho val(f) = cap(S, T).

(ii) f là luồng cực đại.

(iii) Không tìm được đường tăng luồng f.

Trang 42

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT

Thuật toán Ford-Fulkerson:

Để tìm luồng cực đại của mạng vận tải G, ta xuất phát từ luồng tuỳ ý ϕ của G, rồi nâng luồng lên đầy, sau

đó áp dụng thuật toán Ford-Fulkerson.

Thuật toán gồm 3 bước:

Bước 1 (đánh dấu ở đỉnh của mạng):Lối vào v 0 được đánh dấu bằng 0.

Nếu đỉnh v i đã được đánh dấu thì ta dùng chỉ số +i để đánh dấu cho mọi đỉnh y chưa được đánh dấu mà

(v i ,y)∈E và cung này chưa bão hoà (ϕ(v i ,y)<m(v i ,y)).

Nếu đỉnh v+ đã được đánh dấu thì ta dùng chỉ số

−i để đánh dấu cho mọi đỉnh z chưa được đánh dấu mà

(z,v i )∈E và luồng của cung này dương (ϕ(z,v i )>0).

42

Trang 43

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Thuật toán Ford-Fulkerson:

Nếu với phương pháp này ta đánh dấu được tới

lối ra v n thì trong G tồn tại giữa v 0 và v n một xích

α, mọi đỉnh đều khác nhau và được đánh dấu

theo chỉ số của đỉnh liền trước nó (chỉ sai khác

nhau về dấu) Khi đó chắc chắn ta nâng được

giá trị của luồng.

Trang 44

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT

Thuật toán Ford-Fulkerson:

Bước 2 (nâng giá trịcủa luồng): Đểnâng giá trịcủa luồng ϕ, ta đặt:

ϕ’(e) = ϕ(e), nếu e∉α ϕ’(e) = ϕ(e)+1, nếu e∈α được định hướng theo chiều của xích α đi từ v o đến v n

ϕ’(e) = ϕ(e)−1, nếu e∈α được định hướng ngược với chiều của xích α đi từ v o đến v n

ϕ’ thoả mãn các điều kiện về luồng, nên ϕ’ là một luồng và ta có: ϕ’ n = ϕ n +1

Như vậy, ta đã nâng được luồng lên một đơn vị

Sau đó lặp lại một vòng mới Vì khả năng thông qua của các cung đều hữu hạn, nên quá trình phải dừng

lại sau một số hữu hạn bước

44

Trang 45

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Thuật toán Ford-Fulkerson:

Bước 3:

Nếu với luồng ϕ 0 bằng phương pháp trên ta không thể nâng giá trị của luồng lên nữa, nghĩa là ta

không thể đánh dấu được đỉnh v n , thì ta nói rằng quá

trình nâng luồng kết thúc và ϕ 0 đã đạt giá trịcực đại,

đồng thời gọi ϕ 0 là luồng kết thúc.

Trang 46

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

RETURN f

Thuật toán Ford-Fulkerson

Ví dụ

Trang 47

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Ví dụ:

 Cho mạng vận tải như hình dưới đây với khả

năng thông qua được đặt trong khuyên tròn,

luồng được ghi trên các cung Tìm luồng cực

đại của mạng này

Trang 48

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT

Giải:

 Mạng vận tải G có đỉnh phát là V 0 và đỉnh thu

là V 8.

 Luồng ϕ có đường đi (v 0 ,v 4 ), (v 4 ,v 6 ), (v 6 ,v 8 )

gồm các cung chưa bão hoà nên nó chưa

đầy Do đó có thể nâng luồng của các cung

này lên một đơn vị, để được ϕ 1

48

V 8

V 0 6+1

+6 2+1

11+1

Trang 49

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Giải:

Trang 50

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT

Giải:

50

Trang 51

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Giải:

Trang 52

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT

Giải:

52

Trang 53

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Trang 54

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA

Bộ môn KHMT

Bài tập

 Giải bài toán mạng vận tải sau bằng thuật toán

Ford-Fulkerson với luồng vận tải khởi đầu bằng 0.

54

Ngày đăng: 30/08/2023, 14:43

🧩 Sản phẩm bạn có thể quan tâm