1. Trang chủ
  2. » Cao đẳng - Đại học

lý thuyết đồ thị

54 7 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

Định dạng
Số trang 54
Dung lượng 1,5 MB

Nội dung

Đị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:[r]

(1)

Chương 6

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

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

w s

v

u

t

z

3/3

1/9

1/1

3/3

4/7

4/6

3/5

1/1

3/5

2/2

(2)

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

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

Maximum Flow Problem

w s

v

u

t

z

3/3

1/9

1/1

3/3

4/7

4/6

3/5

1/1

3/5

2/2

(3)

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

NỘI DUNG

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

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

Định lý luồng cực đại lát cắt hẹp nhất.

Thuật toán Ford-Fulkerson

Thuật toán Edmond-Karp.

(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

(5)

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

Lester Randolph Ford, Jr (1927 ~)

(6)

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

Bộ môn KHMT

Delbert Ray Fulkerson

(August 14, 1924 - January 10, 1976)

Delbert Ray Fulkerson was a mathematician who

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 Ford-Fulkerson algorithm together with Lester Randolph Ford

(7)

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

Network Flows

s t

3

1 1

4

3 2

2

2 1

1

1 1

2

1

864 pages!

Ravindra K Ahuja, Thomas Magnanti and James Orlin Network

(8)

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

Bộ mơn KHMT

(9)

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

MẠNG (Network)

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

Có đỉnh s khơng có cung vào gọi

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

Mỗi cung e G gắn với số không âm

c(e) gọi khả thơng qua e

Ví dụ:

w

s

v

u

t

z

3

9 1

3 7 6

5 1

5

(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 mạng G=(V,E) phép gán số f(e) cho cạnh e ( f(e) gọi luồng cạnh e) thoả

mãn điều kiện:

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

Với cung e,  f (e)  c(e)

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

( ) ( )

( ) ( )

e E v e E v

f e f e

 

 

 

(*)

( ) ( )

( ) ( ) ( )

e E s e E t

val f f e f e

 

 

   

trong E(v) E(v) tương ứng tập cung vào khỏi đỉnh v.

Định nghĩa Giá trị luồng f

(11)

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

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

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

đỏ, số cịn lại khả thơng qua

Các điều kiện 1) 2) thoả mãn => f luồng mạng.  Giá trị luồng là:

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

w s

v

u

t

z

3/3

2/9 1/1

1/3 3/7 2/6

4/5 1/1

3/5

2/2

(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 mạng G gọi

luồng cực đại số tất luồng mạng G nó luồng có giá trị lớn

Bài tốn tìm luồng cực đại trong mạng G gọi toán luồng cực đại

w s v u t z 3/3 2/9 1/1 1/3 3/7 2/6 4/5 1/1 3/5 2/2 w s v u t z 3/3 2/9 1/1 3/3 3/7 4/6 4/5 1/1 3/5 2/2

Luồng với giá trị = + + = + + 4

(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ả thông qua (capacity) cung e.

Mạng

Capacity

s

2

3

4

5

6

7

t

15 5

30

15

10

8 15

9

6 10

10

10

15 4

(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 hàm f: E  R thoả mãn:

Với e  E:  f(e)  c(e) (hạn chế kntq)Với v  V – {s, t}: (cân luồng)

Luồng s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 4 0 0 0 0 0 0

0 4 4

0 4 0 0 0 kntq Capacity Luồng Flow : ( , ) ( ) ( ) : ( , )

w v w E e E v

f e f v w

      - ) : ( , ) ( ) : ( , ) w w v E

e E v

f e f w v

     ( ( ) ( ) ( ) ( )

e E v e E v

f e f e

 

 

(15)

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA Bài tốn luồng cực đại: Tìm luồng có tổng luồng cạnh khỏi đỉnh phát lớn nhất:

Luồng s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 4 0 0 0 0 0

0 4 4

0

4 0

Giá trị = 4

0 0 kntq Luồng ) ( ) ( ) ( ) ( )

e E s e E t

val f f e f e

 

 

   

(16)

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

Bộ môn KHMT 16

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

Luồng s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 6 6 11 11 1 10

3 8 8

0

4 0

Giá trị = 24

0 0

kntq

(17)

Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA Luồng có giá trị 28 mạng:

Luồng s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 9 9 14 14 4 10

4 8 9

1

0 0

Giá trị = 28

0 0

kntq

(18)

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

Bộ môn KHMT 18

Luồng mạng

truyền thông

Mạng

trạm giao dịch, máy tính, vệ tinh

Đỉnh Cung

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

Luồng

voice, video, packets

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

processors dây dẫn dòng điện cơ khí joints rods, beams, springs heat, energy

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

nguồn nước đường ống

dịng nước, chất lỏng tài chính nhà băng giao dịch tiền

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

(19)

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

Luồng mạng

communication

Mạng

telephone exchanges, computers, satellites

Đỉnh Cung

cables, fiber optics, microwave relays

Luồng

voice, video, packets

circuits gates, registers,

processors wires current

mechanical joints rods, beams, springs heat, energy

hydraulic reservoirs, pumping

stations, lakes pipelines fluid, oil financial stocks, currency transactions money

transportation airports, rail yards, street intersections

highways, railbeds, airway routes

freight, vehicles, passengers

(20)

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

Bộ môn KHMT 20

Network reliability.

Security of statistical data.Distributed computing.

Egalitarian stable matching.Distributed computing.

Many many more

Các ứng dụng/qui dẫn

Network connectivity.Bipartite matching.Data mining.

(21)

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

(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) cho s  S, t  T.

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

Lát cắt (Cuts)

s

2

3

4

5

6

7

t

15 5

30

15

10

8 15

9

6 10

10

10

15 4

4

kntq = 30

(23)

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

Lát cắt (S1, T1), S1={s,2,3,4}, T={5,6,7,t) có khả thơng qua 62: Lát cắt

s

2

3

4

5

6

7

t

15 5

30

15

10

8 15

9

6 10

10

10

15 4

4

(24)

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

Bộ môn KHMT 24

Lát cắt (S2, T2), S2={s,3,4,7}, T2={2,5,6,t) có khả thơng qua 28: Lát cắt

s

2

3

4

5

6

7

t

15 5

30

15

10

8 15

9

6 10

10

10

15 4

4

(25)

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

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

trong S  T = {(v,w)E: vS, wT} T S = {(v,w)E: vT, w S} Luồng lát cắt

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 ( ) ( ) ( ) ( ) ( )

e S T e T S e E s

f e f e f e val f            

Giá trị = 24 10

6

6

10

0 10

4 8 8

0

4 0

(26)

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

Bộ môn KHMT 26 Bổ đề 1. Giả sử f luồng, (S, T) lát cắt Khi giá trị luồng

chảy qua lát cắt giá trị luồng: Luồng lát cắt

10 6 6 10 10 0 10

4 8 8

0 4 0 0 0 s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4

(27)

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

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

Luồng lát cắt

10 6 6 10 10 0 10

4 8 8

0 4 0 0 s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4

Giá trị = 24

(28)

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

Bộ môn KHMT 28

Luồng lát cắt

Chứng minh bổ đề: Giả sử f luồng cịn (S, T) cắt Khi

( )

( ) ( ) ( ) ( )

e S T e T S e E s

f e f e f e val f

    

  

  

S

CM Cộng tất ràng buộc cân luồng theo vS, đơn giản biểu thức ta thu được:

s v t u w ( ) ( ) ( )

0 ( ( ) ( ))

( ) ( ) ( )

v S e E v e E v

e S T e T S e E s

f e f e

f e f e f e

                           

từ suy đẳng thức cần chứng minh

tổng theo cung xanh

tổng theo

(29)

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

Bổ đề 2. Giả sử f luồng, (S, T) lát cắt Khi đó, val(f) cap(S, T). CM.

Luồng lát cắt

( ) ( ) ( )

( ) ( ) cap( , )

e S T e T S

e S T

e S T

val f f e f e

f e c e S T

   

 

 

 

  

 

 

s

t

S T

7

6

8

(30)

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

Bộ môn KHMT 30

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

Max Flow and Min Cut

Hệ quả. Giả sử f luồng, (S, T) lát cắt Nếu val(f) = cap(S, T), f luồng cực đại (S, T) lát cắt hẹp nhất.

CM. Xét f’ luồng (S’,T’) lát cắt Theo bổ đề ta có val(f’)  cap(S,T) = val(f)  cap(S’,T’)

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 9 9 14 14 4 10

4 8 9

1

0 0

Giá trị luồng = 28

0 0

(31)

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

Định lý luồng cực đại 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ị luồng cực đại khả thông qua lát cắt nhỏ nhất.

Proof (muộn hơn).

s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 9 9 14 14 4 10

4 8 9

1

0 0

Flow value = 28

0 0

(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 (Luồng có giá trị = 0).

Tìm đường P từ s đến t cung thoả mãn f(e) < c(e) Tăng luồng dọc theo đường P.

Lặp lại gặp bế tắc.

s

4

2

5

3 t

4

0 0

0 0 0

0

40 4 4

Luồng có giá trị = 0

(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 (Luồng có giá trị = 0).

Tìm đường P từ s đến t cung thoả mãn f(e) < c(e) Tăng luồng dọc theo đường P.

Lặp lại gặp bế tắc.

s

4

2

5

3 t

4

0 0

0 0 0

0

40 4 4

Giá trị luồng = 10

10 13 10

10 10 10

(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 (Luồng có giá trị = 0).

Tìm đường P từ s đến t cung thoả mãn f(e) < c(e) Tăng luồng dọc theo đường P.

Lặp lại gặp bế tắc.

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

s

4

2

5

3 t

10 13 10

4

0 0

10 10 10

0

(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.

s

4

2

5

3 t

10 13 10

4

0 0

10 10 10

0

40 4 4

TT tham lam: Giá trị luồng = 10

s

4

2

5

3 t

10 13 10

4

4 4

10 6 10

4

44 4 4

Tối ưu:

(36)

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

(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: Gf = (V, Ef ).

“thu lại" luồng gửi E

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

Khả thông qua

v 17 w

6

kntq

Luồng

Kntq

Kntq

v 11 w

6

(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: Gf = (V, Ef ).

E

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

c

f(e) cho biết lượng lớn tăng luồng cung e.

c

f(eR) cho biết lượng lớn giảm luồng cung e.

s

4

2

5

3 t

10 13 10

4

0 0

10 10 10

0 40 4 4 G s 4 2 5 3 t

10 10 10

(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 từ s đến t đồ thị tăng luồng Gf.

Khả thông qua đường P là

cf (P) = {cf (e): e  P }.

s

4

2

5

3 t

10 13 10

4

0 0

10 10 10

0 40 4 4 G 4 4 6 4 4 X X X X X s 4 2 5 3 t

10 10 10

4

4 4 4

Gf

(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 từ s đến t đồ thị tăng luồng.

Luồng cực đại  khơng tìm đường tăng luồng???

Giá trị luồng = 14

s

4

2

5

3 t

10 13 10

4

4 4

10 6 10

4

44 4 4

G

s

4

2

5

3 t

10 6 10

4

4 4 4

7

(41)

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

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

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

Định lý luồng cực đại lát cắt nhỏ nhất (Ford-Fulkerson, 1956): Giá trị luồng cực đại khả thông qua lát cắt nhỏ nhất.

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

Định lý. Giả sử f luồng mạng Ba mệnh đề sau tương đương

(i) Tìm lát cắt (S, T) cho val(f) = cap(S, T). (ii) f luồng cực đại.

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

(42)

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

Thuật tốn Ford-Fulkerson:

Để tìm luồng cực đại mạng vận tải G, ta xuất phát từ luồng tuỳ ý ϕ G, nâng luồng lên đầy, sau đó áp dụng thuật tốn Ford-Fulkerson.

Thuật tốn gồm bước:

Bước (đánh dấu đỉnh mạng):Lối vào v0

được đánh dấu

Nếu đỉnh vi đánh dấu ta dùng số +i

để đánh dấu cho đỉnh y chưa đánh dấu mà

(vi,y) E cung chưa bão hoà (∈ ϕ(vi,y)<m(vi,y))

Nếu đỉnh v+ đánh dấu ta dùng số −i để đánh dấu cho đỉnh z chưa đánh dấu mà

(z,vi) E luồng cung dương (∈ ϕ(z,vi)>0)

(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 ta đánh dấu tới lối vn G tồn v0 và vn một xích

(44)

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

Thuật tốn Ford-Fulkerson:

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

ϕ’(e) = ϕ(e), e∉α

ϕ’(e) = ϕ(e)+1, e∈α định hướng theo

chiều xích α từ vo đến vn

ϕ’(e) = ϕ(e)−1, e∈α định hướng ngược

với chiều xích α từ vo đến vn

ϕ’ thoả mãn điều kiện luồng, nên ϕ’

luồng ta có: ϕ’n= ϕn+1

Như vậy, ta nâng luồng lên đơn vị Sau lặp lại vịng Vì khả thông qua cung hữu hạn, nên trình phải dừng lại sau số hữu hạn bước

(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 ta

không thể nâng giá trị luồng lên nữa, nghĩa ta khơng thể đánh dấu đỉnh vn, ta nói q

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

(46)

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

Bộ môn KHMT 46

Thuật toán Ford – Fulkerson

Augment(f,P)

b  cf(P)

FOR e  P DO

IF (e  E) THEN // cạnh thuận

f(e)  f(e) + b

ELSE // cạnh nghịch

f(eR)  f(e) – b

RETURN f

Tăng luồng f dọc theo đường tăng P

Ford_Fulkerson(G,c,s,t);

FOR e  E DO // Khởi tạo luồng 0

f(e)  0

Gf  đồ thị tăng luồng f

WHILE (tìm đường tăng luồng P) DO

f  augment(f, P) Sửa lại Gf

RETURN f

Thuật toán Ford-Fulkerson

(47)

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

Ví dụ:

 Cho mạng vận tải hình với khả

(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 V

0 đỉnh thu

là V8.

 Luồng ϕ có đường (v

0,v4), (v4,v6), (v6,v8)

gồm cung chưa bão hoà nên chưa đầy Do nâng luồng cung này lên đơn vị, để ϕ1

48

V8

V4 V6

V0

6+1

+0 +4

+6 2+1

(49)

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

(50)

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

Giải:

(51)

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

(52)

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

Giải:

(53)(54)

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

Bài tập

 Giải toán mạng vận tải sau thuật toán

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

Ngày đăng: 18/04/2021, 08:57

TỪ KHÓA LIÊN QUAN

w