Bài giảng Toán 8: Bài Toán Luồng Bé Nhất
Thuật toán 9.2.
Ta cải tiến thuật toán Ford – Fulkerson như sau:
Xuất phát từ một luồng t nào đó thoả mãn điều kiện b), ta tiến hành hai bước sau đây để giảm giá trị của luồng t.
- Bước 1: Đánh dấu các đỉnh
- Bước 2: Giảm luồng
9.3. BÀI TOÁN LUỒNG BÉ NHẤTBài toán: Cho mạng (G, c). Tìm luồng t qua mạng có giá trị tz bé nhất và thoả mãn điều kiện a’) thay cho điều kiện a) như sau: a’) e E , t(e) c(e). 1THUẬT TOÁN TÌM LUỒNG BÉ NHẤT Thuật toán 9.2. Ta cải tiến thuật toán Ford – Fulkerson như sau: Xuất phát từ một luồng t nào đó thoả mãn điều kiện b), ta tiến hành hai bước sau đây để giảm giá trị của luồng t. - Bước 1: Đánh dấu các đỉnh - Bước 2: Giảm luồng 2BƯỚC ĐÁNH DẤUĐầu tiên đánh dấu cho đỉnh thu z số 0.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)) > c((x,y)) thì đánh dấu cho đỉnh x là +y.3BƯỚC ĐÁNH DẤU (tiếp)Nếu đỉnh x đã được đánh dấu, có cạnh (x, y) thì đánh dấu cho đỉnh y là -x. Với cách đánh dấu này mà đi ngược tới được đỉnh phát x0 thì ta đã tìm được một đường đi vô hướng từ z tới x0.4BƯỚC GIẢM LUỒNGChọn 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. - Nếu cạnh e thuộc đường đi này và cùng chiều từ x0 tới z thì đặt t’(e) := t(e) -1 còn nếu ngược chiều thì đặt t’(e) := t(e) + 1 .Lặp lại quá trình giảm luồng trên cho đến khi không đánh dấu được tới đỉnh phát x0. Khi đó luồng nhận được có giá trị nhỏ nhất.5VÍ DỤ 9.2Xét mạng vận tải sau đây: Hình 9.7. Mạng vận tải và luồng đã giảmLuồng cũ có giá trị là tz = 19. Luồng mới sau khi cảitiến có giá trị là tz’ = 18 và là luồng nhỏ nhất.x0x2x4x1x3z+210-9/8+46-5/5-34/34/35/5+03-4/36-5/513/13069.4. LUỒNG TRÊN MẠNG CÓ NHIỀU ĐỈNH PHÁT VÀ ĐỈNH THU Giả sử (G, c) là một mạng vận tải với n đỉnh phát: p1, p2, , pn và m đỉnh thu: t1, t2, , tm.Bài toán tìm luồng lớn nhất từ nhiều đỉnh phát tới nhiều đỉnh thu có thể đưa về bài toán luồng lớn nhất bằng cách thêm vào một đỉnh phát giả X0, một đỉnh thu giả Z, các cạnh nối X0 với tất cả các đỉnh phát và các cạnh nối tất cả các đỉnh thu với Z. 79.4. LUỒNG TRÊN MẠNG CÓ NHIỀU ĐỈNH PHÁT VÀ ĐỈNH THU (tiếp) Hình 9.8. Mạng vận tải có nhiều đỉnh phát và nhiều đỉnh thuX0(G,c)P1P2Pn. . .Zt1t2tm. . .Đỉnh phát giáĐỉnh thu giá89.4. LUỒNG TRÊN MẠNG CÓ NHIỀU ĐỈNH PHÁT VÀ ĐỈNH THU (tiếp)Khả năng thông qua của các cạnh mới như sau: - Nếu lượng phát của đỉnh pi bị hạn chế bởi li thì đặt c(X0, pi) = li còn nếu không bị hạn chế thì đặt bằng . - Tương tự, giới hạn của lượng thu của đỉnh tj sẽ là khả năng thông qua của cạnh (tj, Z).99.5. BÀI TOÁN TÌM CẶP GHÉP LỚN NHẤT Giả sử G = (V1,V2, F) là đồ thị hai phần. Hãy tìm cặp ghép lớn nhất trên đồ thị này. Bài toán này là một dạng đặc biệt của bài toán mạng với nhiều đỉnh phát và nhiều đỉnh thu. Ta đưa bài toán này về bài toán luồng lớn nhất.109.5. BÀI TOÁN TÌM CẶP GHÉP LỚN NHẤT (tiếp)Xây dựng mạng vận tải như sau: - Các đỉnh của mạng là các đỉnh của đồ thị G và thêm vào đỉnh phát x0 và đỉnh thu z. - Mạng sẽ gồm tất cả các cạnh của G có hướng từ V1 sang V2. - Ngoài ra, nối x0 với tất cả các đỉnh trong V1 và nối tất cả các đỉnh trong V2 với z. - Trên mỗi cạnh e của mạng đều đặt c(e) = 1.119.5. BÀI TOÁN TÌM CẶP GHÉP LỚN NHẤT (tiếp) Khi đó, mỗi luồng t qua mạng sẽ ứng với một cặp ghép W của G mà: e W t(e) = 1. Ngược lại, mỗi cặp ghép W sẽ ứng với một luồng t qua mạng của G cũng theo quy tắc trên. Vậy tz đạt lớn mhất khi W có nhiều cạnh nhất.12VÍ DỤ 9.3Từ một đồ thị hai phần ta xây dựng mạng vận tải như sau: x0abcdefghikz11111 Hình 9.9. Mạng vận tải trên đồ thị hai phần 139.6. MẠNG VẬN TẢI VỚI KHẢ NĂNG THÔNG QUA CỦA CẠNH VÀ ĐỈNH Giả sử trong mạng (G, c) ngoài khả năng thông qua của các cạnh thì với mỗi đỉnh x V còn có khả năng thông qua của đỉnh là d(x) và đòi hỏi tổng luồng đi vào đỉnh x không được vượt quá d(x), nghĩa là:t(W-(x)) d(x). Hãy tìm luồng lớn nhất giữa x0 và z trên mạng này. 149.6. MẠNG VẬN TẢI VỚI KHẢ NĂNG THÔNG QUA CỦA CẠNH VÀ ĐỈNH (tiếp)Đưa bài toán này về bài toán luồng lớn nhất: Xây dựng mạng G’: - Mỗi đỉnh x trong G thay bằng hai đỉnh x- và x+, - Cạnh (x- , x+) thuộc G’ và c((x-,x+)) = d(x), - Mỗi cạnh (x, y) trong G tương ứng với cạnh (x+, y- ) trong G’.15VÍ DỤ 9.4Xét mạng vận tải sau đây: (G,c) =x0abz1581486979 Hình 9.10. Mạng vận tải với khả năng thông qua cạnh và đỉnh16VÍ DỤ 9.4 (tiếp) Xây dựng mạng (G’, c) như sau:Hình 9.11. Mạng vận tải tương ứngDo luồng đi vào đỉnh x- phải đi qua cạnh (x-, x+) với khả năng thông qua d(x) nên luồng lớn nhất trong G’ sẽ bằng luồng lớn nhất trong G và thoả mãn các điều kiện về khả năng thông qua của các cạnh và các đỉnh. x0x0+a-b-a+b+z-z+1586387914917
File đính kèm:
- BAI TOAN LUONG BE NHAT.ppt