1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tiểu luận môn Kỹ thuật lập trình chủ đề MAXIMUM FLOW (LUỒNG CỰC ĐẠI)

51 957 1

Đ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 51
Dung lượng 0,92 MB

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

Nội dung

Tiểu luận môn Kỹ thuật lập trình chủ đề MAXIMUM FLOW (LUỒNG CỰC ĐẠI) Nội dung trình bày Một số khái niệm, định lý Bài toán luồng cực đại Thuật toán FordFulkerson Một số ứng dụng của mạng và luồng Báo cáo dành cho các bạn tham khảo.

Trang 2

Nội dung trình bày

 Một số khái niệm, định lý

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

 Thuật toán Ford-Fulkerson

 Một số ứng dụng của mạng và luồng

Trang 3

- Có một và chỉ một đỉnh s không có cung đi vào được

gọi là lối vào hay đỉnh phát

- Có một và chỉ một đỉnh t không có cung đi ra được gọi

là lối ra hay đỉnh thu của mạng

Trang 4

31

15

15

8 15

17

15 15

Trang 5

Cho mạng G=(V,E)

2 Luồng

 Luồng  trên G là một phép gán cho mỗi cung e=(u,v) một số thực  (e)=)=[u,v] u,v] 0, thỏa mãn :

• Luồng không vượt quá khả năng của cung đó

0 ≤ [u,v] u,v] ≤ c[u,v] u,v], (u,v)E

• Nếu v ≠ s,t thì tổng luồng đi vào v bằng tổng luồng

đi ra khỏi v (vV\{s,t})

 Giá trị của 1 luồng bằng tổng luồng trên các cung đi ra khỏi s , và bằng tổng luồng đi vào t

Một số khái niệm, định lý (tt)

Trang 6

13

2

10

Trang 7

 Lát cắt (X,Y) là một phân hoạch tập đỉnh V của mạng

thành hai tập rời nhau X,Y trong đó X chứa đỉnh phát và Y chứa đỉnh thu

 Khả năng thông qua của lát cắt (X,Y) là tổng tất cả các khả năng thông qua của các cung (u,v) có uX và vY

 Lát cắt với khả năng thông qua nhỏ nhất là lát cắt cực tiểu

 Luồng f(X,Y) bằng tổng luồng trên các cung (u,v) với

(uX,vY) và tổng luồng trên các cung (w,z) với zX,wY

3 Lát cắt

Một số khái niệm, định lý (tt)

Trang 9

Cho mạng G=(V,E) , và luồng f , khi đó luồng thông qua lát cắt (X,Y) bất kỳ bằng |f|

2

101

5

6

1s

5

13

Trang 10

Cho mạng G=(V,E) , và luồng f , khi đó f(X,Y)≤c(X,Y)

5

13

Trang 11

Cho mạng G=(V,E) , và luồng f bất kỳ, lát cắt (X,Y) bất kỳ.

khi đó |f| ≤ c(X,Y) Định lý 3

5

13

Trang 12

Cho f là 1 luồng trên mạng G, Từ mạng G =(V,E) ta xây

dựng đồ thị có trọng số Gf= (V,Ef) như sau:

• Nếu f[u,v]<c[u,v] thì ta thêm cung (u,v) vào Ef với trọng

số c[u,v]-f[u,v].

• Xét tiếp, nếu f[u,v]>0 thì thêm cung (v,u) vào Ef với

trọng số của cung là f[u,v]

Gf là đồ thị tăng luồng

Đồ thị tăng luồng

Một số khái niệm, định lý (tt)

Trang 13

13

2

13

2

10

Trang 14

• Cho f là 1 luồng trên mạng G, 1 đường đi cơ bản từ A  B

trên Gf gọi là một đường tăng luồng.

• Với một đường tăng luồng P trên Gf, ta đặt p=min{cf(u,v)| (u,v)P} p được gọi là giá trị thặng dư của đường P

Đường tăng luồng

Một số khái niệm, định lý (tt)

Trang 15

13

1

5

6

13

2

51

Mạng vận tải (1) và đồ thị tăng luồng (2) tương ứng cùng với một đường tăng luồng P=(1,3,4,2,5,6); P = min(3,2,5,3,5) = 2

5/2

1/1

3/03/1

6/5

6/6

6/1

Trang 16

 Ta sẽ tăng giá trị của luồng f bằng cách

Định lý 4,5

f[u,v] =

f[u,v] + p nếu (u,v)  P f[u,v] - p nếu (v,u)  P f[u,v]

Trang 17

1/1

3/03/1

1

23

42

5

2

- =

Trang 18

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

Cho mạng vận tải G = (V,E) Tìm luồng f* với giá trị luồng lớn nhất (Luồng f* gọi là luồng cực đại)

Phát biểu bài toán

Định lý Ford-Fulke)=rson

Giá trị luồng cực đại trên mạng bằng khả năng thông qua

của lát cắt cực tiểu.

Trang 19

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

Thuật toán Ford-Fulke)=rson

• Khởi tạo một luồng bằng 0

• Trong khi đồ thị tăng luồng của f còn có đường đi cơ

bản (đường tăng luồng), thì tìm một đường và nâng

luồng dọc theo đường này

• Khi không còn đường đi cơ bản nữa thì f là luồng cực đại

Trang 20

Sơ đồ khối thuật toán Ford-Fullke)=rson tổng quát

Trang 21

Ký hiệu 6 ( 5 ): khả năng thông qua ( luồng )

Bước 1: khởi tạo luồng f=0

Trang 22

Bước 2: Đồ thị tăng luồng Gf

Trang 26

Bước 3: Luồng cực đại

Luồng cực đại có giá trị là 9, lát cắt cực tiểu

Trang 27

0/120/80/4 0/1

0/20/5 0/1 0/2 0/1 0/5 0/12

0/10

0/1 0/6

0/3 0/2

Trang 28

0/120/80/4 0/1

0/20/5 0/1 0/2 0/1 0/5 0/12

Trang 29

0/123/80/4 0/1

0/20/5 0/1 0/2 0/1 0/5 0/12

Trang 30

0/125/82/4 0/1

0/20/5 0/1 0/2 0/1 0/5 0/12

Trang 31

0/127/82/4 0/1

0/20/5 0/1 0/2 0/1 0/5 0/12

Trang 32

5/127/82/4 0/1

0/20/5 0/1 0/2 0/1 5/5 0/12

Trang 33

6/127/82/4 0/1

0/20/5 0/1 1/2 0/1 5/5 0/12

Trang 34

7/127/82/4 0/1

0/21/5 0/1 1/2 0/1 5/5 0/12

Trang 35

8/127/82/4 0/1

0/21/5 0/1 1/2 0/1 5/5 0/12

Trang 36

8/128/82/4 0/1

1/21/5 0/1 1/2 0/1 5/5 0/12

Trang 37

9/128/82/4 0/1

2/21/5 0/1 1/2 0/1 5/5 1/12

Trang 38

9/128/82/4 0/1

2/21/5 0/1 1/2 0/1 5/5 1/12

Trang 39

Nhận xét:

• Thuật toán Ford-Fulkerson có độ phức tạp là O(e) (e

là số cung của đồ thị) ở mỗi lần thực hiện.

• Thời gian thực hiện thuật toán phụ thuộc vào số cạnh (e) và số đỉnh (n) của đồ thị Người ta gọi là “phụ thuộc

đa thức mạnh”

Trang 40

Nhược điểm của thuật toán FordFulkerson

 Dùng các đường đi có ít khả năng

 Các đường đi đưa vào luồng chứa nhiều cung

 Khắc phục nhược điểm:

Khi chọn 1 đường đi cơ bản, ta luôn chọn đường ngắn nhất theo nghĩa số cung bé nhất (vd: sử dụng BFS để tìm đường đi ngắn nhất.

Trang 41

5(4)8(0)

7(2)

9(6)7(3)

Trang 42

5(0)8(0)

7(0)

9(0)7(0)

Bước 1 khởi tạo f=0

Trang 43

5(0)8(0)

7(0)

9(0)7(0)

Bước 2 tăng luồng

P1 = (1,2,5,6)

P2 = (1,3,5,6)

P3 = (1,3,2,5,6)

P4 = (1,4,6)

Trang 44

P4 = (1,4,6)1

7(0)

9(0)7(5)

5(5)

5(0)8(0)

7(0)

9(0)

25

P1 = (1,2,5,6)

P2 = (1,3,5,6)

P3= (1,3,2,5,6)

Trang 45

9(5)

25

5(5)

5(5)8(0)

7(0)

4

25

5

5

P1 = (1,2,5,6)

P3= (1,3,2,5,6)

Trang 46

9(9)7(5)

5(5)

5(5)8(0)

3

9(9)2

4

4

5

2

Đến đây do không còn đường

đi cơ bản nào trên đồ thị tăng

luồng nên thuật toán kết thúc

Trang 47

Bước 3: Luồng cực đại fmax=14

Luồng cực đại có giá trị là 14, lát cắt cực tiểu (X,Y):

5(5)

5(5)8(0)

7(4)

9(9)7(5)

Trang 48

Bài toán luồng cực đại có rất nhiều ứng dụng trong việc giải bài toán tổ hợp Khó khăn chính ở đây là phải xây dựng mạng tương ứng sao cho việc tìm luồng cực đại trong nó sẽ tương đương với việc giải bài toán tổ hợp đặt ra

 Bài toán đám cưới vùng quê

 Bài toán lập lịch cho hội nghị

 Bài toán phân nhóm sinh hoạt

Trang 49

Có m chàng trai ở một vùng quê nọ Đối với mỗi chàng trai ta biết các

cô gái mà anh ta vừa ý Hỏi khi nào thì có thể tổ chức các đám cưới trong đó chàng trai nào cũng sánh duyên với các cô gái mà mình vừa ý.

Ta có thể xây dựng đồ thị với các đỉnh biểu thị các chàng trai và các cô gái, còn các cung biểu thị sự vừa ý của các chàng trai với các cô gái Khi đó ta thu được một

đồ thị hai phía

Phát biểu bài toán

Giải quyết vấn đề

Trang 50

Thí dụ Có 4 chàng trai { T1, T2, T3,T4} và 5 cô gái { G1, G2, G3,G4, G5} Sự vừa ý cho trong bảng sau

Chàng trai Các cô gái mà

1

1

1

1 1

1 1

1

nên luồng cực đại trong đồ thị

có giá trị Vmax = m

Ngày đăng: 19/09/2014, 14:32

HÌNH ẢNH LIÊN QUAN

Sơ đồ khối thuật toán Ford-Fullkerson tổng quát - Tiểu luận môn Kỹ thuật lập trình chủ đề MAXIMUM FLOW (LUỒNG CỰC ĐẠI)
Sơ đồ kh ối thuật toán Ford-Fullkerson tổng quát (Trang 20)
Bước 2: Đồ thị tăng luồng G f - Tiểu luận môn Kỹ thuật lập trình chủ đề MAXIMUM FLOW (LUỒNG CỰC ĐẠI)
c 2: Đồ thị tăng luồng G f (Trang 22)
Đồ thị tăng luồng - Tiểu luận môn Kỹ thuật lập trình chủ đề MAXIMUM FLOW (LUỒNG CỰC ĐẠI)
th ị tăng luồng (Trang 23)
Đồ thị tăng luồng - Tiểu luận môn Kỹ thuật lập trình chủ đề MAXIMUM FLOW (LUỒNG CỰC ĐẠI)
th ị tăng luồng (Trang 24)
Đồ thị tăng luồng - Tiểu luận môn Kỹ thuật lập trình chủ đề MAXIMUM FLOW (LUỒNG CỰC ĐẠI)
th ị tăng luồng (Trang 25)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w