MỤC LỤC LỜI MỞ ĐẦU THÔNG TIN VỀ NHÓM CHƯƠNG I 1 MỘT SỐ KHÁI NIỆM CƠ BẢN CỦA LÝ THUYẾT ĐỒ THỊ 1 1.1 Định nghĩa đồ thị 1 1.2. Các thuật ngữ cơ bản 4 1.3. Đường đi, chu trình. Đồ thị liên thông. 5 CHƯƠNG II 7 BÀI TOÁN TÌM LUỒNG CỰC ĐẠI THEO 7 THUẬT TOÁN FORD-FULKERSON 7 2.1. Các khái niệm 7 2.1.1. Mạng và luồng trong mạng 7 2.1.2. Bài toán luồng cực đại trong mạng 8 2.1.3. Lát cắt, giá trị luồng 8 2.1.4. Định lý luồng cực đại lát cắt tối thiểu 10 2.2. Thuật toán Ford-Fulkerson tìm luồng cực đại trong mạng 12 CHƯƠNG III 18 THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH 18 3.1. Cấu trúc dữ liệu 18 3.2. Thiết kế 18 3.3. Cài đặt 22 3.4. Kiểm thử và giao diện chương trình 29 KẾT LUẬN 30 TÀI LIỆU THAM KHẢO LỜI MỞ ĐẦU Bài toán luồng cực đại trong mạng cũng là một trong số những bài toán tối ưu trên đồ thị tìm được những ứng dụng rộng rãi trong thực tế cũng như những ứng dụng thú vị trong lý thuyết tổ hợp. Bài toán được đề xuất vào đầu những năm 1950, và gắn liền với tên tuổi của hai nhà bác học Mỹ là L.R.Ford và D.R.Fulkerson. Bài toán luồng cực đại trong mạng có nhiều ứng dụng trong thực tế như: Bài toán xác định cường độ dòng lớn nhất của dòng vận tải giữa hai nút của một bản đồ giao thông, bài toán tìm luồng dầu lớn nhất có thể bơm từ tàu chở dầu vào bể chứa của một hệ thống đường ống dẫn dầu…Ngoài ra, ứng dụng của bài toán còn để giải các bài toán như: Bài toán đám cưới vùng quê, bài toán về hệ thống đại diện chung, bài toán phân nhóm sinh hoạt, bài toán lập lịch cho hội nghị… Trong bài tiểu luận này chúng em sẽ trình bày “Bài toán luồng cực đại trong mạng” sử dụng thuật toán Ford - Fulkerson (1962) để giải bài toán đặt ra. Chương trình minh họa thuật toán được viết bằng ngôn ngữ C và sử dụng các tập tin văn bản để lấy dữ liệu ban đầu và xuất kết quả ra. Nhóm chúng em đã cùng nhau thảo luận và trao đổi các vấn đề của đề tài, phân chia nhiệm vụ cho mỗi thành viên, từ đó cố gắng đạt được kết quả tốt nhất cho bài báo cáo. Tuy nhiên có thể không tránh khỏi những thiếu sót, nhóm chúng em rất mong nhận được sự góp ý của thầy giáo và các bạn để báo cáo này được hoàn thiện hơn nữa. Chân thành cảm ơn!
ĐẠI HỌC ĐÀ NẴNG BAN ĐÀO TẠO SAU ĐẠI HỌC GVHD : PGS. TS. TRẦN QUỐC CHIẾN NHÓM HV : ĐẶNG QUÝ LINH TRẦN THỊ ÁI QUỲNH HUỲNH CÔNG TRƯỜNG PHÙNG HỮU ĐOÀN PHẠM VĂN TUẤN LỚP : CAO HỌC KHMT K24 Đà Nẵng, tháng 05/2012 Đề tài: BÀI TOÁN TÌM LUỒNG CỰC ĐẠI TRONG MẠNG THEO THUẬT TOÁN FORD-FULKERSON Tiểu luận MỤC LỤC LỜI MỞ ĐẦU THÔNG TIN VỀ NHÓM 1 1 LỜI MỞ ĐẦU 3 THÔNG TIN VỀ NHÓM 4 CHƯƠNG I 1 MỘT SỐ KHÁI NIỆM CƠ BẢN CỦA LÝ THUYẾT ĐỒ THỊ 1 1.1 Định nghĩa đồ thị 1 Hình 1 2 Hình 4. Sơ đồ mạng máy tính với đa kênh thông báo 3 1.2. Các thuật ngữ cơ bản 4 1.3. Đường đi, chu trình. Đồ thị liên thông 5 CHƯƠNG II 7 BÀI TOÁN TÌM LUỒNG CỰC ĐẠI THEO 7 THUẬT TOÁN FORD-FULKERSON 7 2.1. Các khái niệm 7 2.1.1. Mạng và luồng trong mạng 7 2.1.2. Bài toán luồng cực đại trong mạng 8 2.1.3. Lát cắt, giá trị luồng 8 2.1.4. Định lý luồng cực đại lát cắt tối thiểu 10 2.2. Thuật toán Ford-Fulkerson tìm luồng cực đại trong mạng 12 CHƯƠNG III 18 THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH 18 3.1. Cấu trúc dữ liệu 18 3.2. Thiết kế 18 3.3. Cài đặt 22 3.4. Kiểm thử và giao diện chương trình 29 KẾT LUẬN 30 TÀI LIỆU THAM KHẢO 1 TÀI LIỆU THAM KHẢO Tiểu luận LỜI MỞ ĐẦU Bài toán luồng cực đại trong mạng cũng là một trong số những bài toán tối ưu trên đồ thị tìm được những ứng dụng rộng rãi trong thực tế cũng như những ứng dụng thú vị trong lý thuyết tổ hợp. Bài toán được đề xuất vào đầu những năm 1950, và gắn liền với tên tuổi của hai nhà bác học Mỹ là L.R.Ford và D.R.Fulkerson. Bài toán luồng cực đại trong mạng có nhiều ứng dụng trong thực tế như: Bài toán xác định cường độ dòng lớn nhất của dòng vận tải giữa hai nút của một bản đồ giao thông, bài toán tìm luồng dầu lớn nhất có thể bơm từ tàu chở dầu vào bể chứa của một hệ thống đường ống dẫn dầu…Ngoài ra, ứng dụng của bài toán còn để giải các bài toán như: Bài toán đám cưới vùng quê, bài toán về hệ thống đại diện chung, bài toán phân nhóm sinh hoạt, bài toán lập lịch cho hội nghị… Trong bài tiểu luận này chúng em sẽ trình bày “Bài toán luồng cực đại trong mạng” sử dụng thuật toán Ford - Fulkerson (1962) để giải bài toán đặt ra. Chương trình minh họa thuật toán được viết bằng ngôn ngữ C và sử dụng các tập tin văn bản để lấy dữ liệu ban đầu và xuất kết quả ra. Nhóm chúng em đã cùng nhau thảo luận và trao đổi các vấn đề của đề tài, phân chia nhiệm vụ cho mỗi thành viên, từ đó cố gắng đạt được kết quả tốt nhất cho bài báo cáo. Tuy nhiên có thể không tránh khỏi những thiếu sót, nhóm chúng em rất mong nhận được sự góp ý của thầy giáo và các bạn để báo cáo này được hoàn thiện hơn nữa. Chân thành cảm ơn! Tiểu luận THÔNG TIN VỀ NHÓM STT HỌ TÊN CÔNG VIỆC THỰC HIỆN CHỮ KÝ NHẬN XÉT CỦA GIÁO VIÊN 1. Đặng Quý Linh Tìm kiếm tài liệu Chương 3 + Kết luận Tổng hợp lần 3 2. Trần Thị Ái Quỳnh Tìm kiếm tài liệu Chương 1 + Lời mở đầu Tổng hợp lần 1 3. Huỳnh Công Trường Tìm kiếm tài liệu Slide thuyết trình 4. Phùng Hữu Đoàn Tìm kiếm tài liệu Chương 2 5. Phạm Văn Tuấn Tìm kiếm tài liệu Tổng hợp lần 2 Tiểu luận CHƯƠNG I MỘT SỐ KHÁI NIỆM CƠ BẢN CỦA LÝ THUYẾT ĐỒ THỊ 1.1 Định nghĩa đồ thị Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các đỉnh này, các loại đồ thị khác nhau được phân biệt bởi kiểu và số lượng cạnh nối hai đỉnh nào đó của đồ thị. Giả sử V là tập hữu hạn, không rỗng các phần tử nào đó. Bộ G = (V,E) được gọi là đồ thị hữu hạn. Mỗi phần tử của V gọi là một đỉnh và mỗi phần tử u = (x,y) của E được gọi là một cạnh của đồ thị G = (V,E). Xét một cạnh u của E khi đó tồn tại hai đỉnh x, y của V sao cho u = (x,y), ta nói rằng x nối với y hoặc x và y phụ thuộc u. - Nếu cạnh u = (x,y) mà x và y là hai đỉnh phân biệt thì ta nói x, y là hai đỉnh kề nhau. - Nếu u = (x,x) thì u là cạnh có hai đỉnh trùng nhau ta gọi đó là một khuyên. - Nếu u = (x,y) mà x, y là cặp đỉnh có phân biệt thứ tự hay có hướng từ x đến y thì u là một cung, khi đó x là gốc còn y là ngọn hoặc x là đỉnh ra, y là đỉnh vào. - Khi giữa cặp đỉnh (x,y) có nhiều hơn một cạnh thì ta nói rằng những cạnh cùng cặp đỉnh là những cạnh song song hay là cạnh bội. Trong thực tế ta có thể gặp nhiều vấn đề mà có thể dùng mô hình đồ thị để biểu diễn, như sơ đồ mạng máy tính, sơ đồ mạng lưới giao thông, sơ đồ thi công một công trình. Thí dụ 1. Xét một mạng máy tính, có thể biểu diễn mạng này bằng một mô hình đồ thị, trong đó mỗi máy tính là một đỉnh, giữa các máy được nối với nhau bằng các dây truyền, chúng tương ứng là các cạnh của đồ thị. Một mô hình mạng máy tính như hình 1 trong đó các máy tính a, b , c, d tương ứng là các đỉnh, giữa hai máy được nối trực tiếp với nhau thì tương ứng với một cặp đỉnh kề nhau. Trang 1 Tiểu luận Hình 1 Định nghĩa 1. Đơn đồ thị vô hướng G = (V,E) bao gồm V là các tập đỉnh và E là các tập các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh. Thí dụ 2. Hình 2. Sơ đồ máy tính là đơn đồ thị vô hướng Trong trường hợp giữa hai máy tính nào đó thường xuyên phải tải nhiều thông tin người ta phải nối hai máy này bởi nhiều kênh thoại. Mạng với đa kênh thoại giữa các máy được cho trong hình 3. Hình 3. Sơ đồ mạng máy tính với đa kênh thoại Định nghĩa 2. Đa đồ thị vô hướng G = (V,E) bao gồm V là tập các đỉnh, và E là họ các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh. Hai cạnh e 1 và e 2 được gọi là cạnh lặp nếu chúng cùng tương ứng với một cặp đỉnh. Trang 2 c d b a l k i h ge d c b a c d l k i h ge b a Tiểu luận Hình 4. Sơ đồ mạng máy tính với đa kênh thông báo Rõ ràng mỗi đơn đồ thị là đa đồ thị, nhưng không phải đa đồ thị nào cũng là đơn đồ thị, vì trong đa đồ thị có thể có hai (hoặc có nhiều hơn) cạnh nối một cặp đỉnh nào đó. Trong mạng máy tính có thể có những kênh thoại nối một máy nào đó với chính nó (chẳng hạn với mục đích thông báo). Mạng như vậy được cho trong hình 4. Khi đó đa đồ thị không thể mô tả được mạng như vậy, bởi vì có những khuyên(cạnh nối một đỉnh với chính nó). Trong trường hợp này chúng ta cần sử dụng đến khái niệm giả đồ thị vô hướng, được định nghĩa như sau. Định nghĩa 3. Giả đồ thị vô hướng G = (V,E) bao gồm V là các tập đỉnh, và E là họ các cặp không có thứ tự (không nhất thiết phải khác nhau) của V gọi là các cạnh. Cạnh e được gọi là khuyên nếu nó có dạng e = (u,u). Các kênh thoại trong mạng máy tính có thể chỉ cho phép truyền tin theo một chiều. Chẳng hạn trong hình 5 máy chủ ở a chỉ có thể nhận tin từ các máy ở máy khác, có một số máy chỉ có thể gửi tin đi, còn các kênh thoại cho phép truyền tin theo cả hai chiều được thay thế bởi hai cạnh có hướng ngược chiều nhau. Hình 5. Mạng máy với các kênh thoại một chiều Trang 3 l b a g c d k i h e c d l k i h ge b a Tiểu luận Ta đi đến định nghĩa sau. Định nghĩa 4. Đơn đồ thị có hướng G = (V,E) bao gồm V là các tập đỉnh và E là các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung. Nếu trong mạng có thể có đa kênh thoại một chiều, ta sẽ phải sử dụng đến khái niệm đa đồ thị có hướng: Định nghĩa 5. Đa đồ thị có hướng G = (V,E) bao gồm V là các tập đỉnh và E là họ các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung. Hai cung e 1 , e 2 tương ứng cùng với một cặp đỉnh được gọi là cung lặp. Trong các phần tử tiếp theo chủ yếu chúng ta sẽ làm việc với đơn đồ thị vô hướng và đơn đồ thị có hướng. Vì vậy, để ngắn gọn, ta bỏ qua tính từ đơn khi nhắc đến chúng. 1.2. Các thuật ngữ cơ bản Trước tiên, ta xét các thuật ngữ mô tả các đỉnh và cạnh của đồ thị vô hướng. Định nghĩa 1. Hai đỉnh u và v của đồ thị vô hướng G được gọi là kề nhau nếu (u,v) là cạnh của đồ thị G. Nếu e = (u,v) là cạnh của đồ thị thì ta nói cạnh này là liên thuộc với hai đỉnh u và v, hoặc cũng nói là cạnh e là nối đỉnh u và đỉnh v đồng thời các đỉnh u và v sẽ được gọi là các đỉnh đầu của cạnh (u,v). Để có thể biết có bao nhiêu cạnh liên thuộc với một cạnh, ta đưa vào định nghĩa sau. Định nghĩa 2. Ta gọi bậc của đỉnh v trong đồ thị vô hướng là số cạnh liên thuộc với nó và sẽ ký hiệu là deg(v). Bậc của đỉnh có các tính chất sau: Định lý 1. Giả sử G = (V,E) là đồ thị vô hướng với m cạnh. Khi đó Hệ quả. Trong đồ thị vô hướng, số đỉnh bậc lẻ (nghĩa là đỉnh có bậc là số lẻ) là một số chẵn. Ta xét các thuật ngữ tương tự cho đồ thị có hướng. Định nghĩa 3. Nếu e = (u,v) là cung của đồ thị có hướng G thì ta nói hai đỉnh u và v là kề nhau, và nói cung (u,v) nối đỉnh u với đỉnh v hoặc cũng nói cung này là đi ra khỏi đỉnh u và đi vào đỉnh v. Đỉnh u(v) sẽ được gọi là đỉnh đầu(cuối) của cung (u,v). Trang 4 ∑ ∈ = Vv vm )deg(2 Tiểu luận Định nghĩa 4. Ta gọi bán bậc ra (bán bậc vào) của đỉnh v trong đồ thị có hướng là số cung của đồ thị đi ra khỏi nó (đi vào nó) và ký hiệu là deg + (v)(deg - (v)). Định lý 2. Giả sử G = (V,E) là đồ thị có hướng. Khi đó Rất nhiều tính chất của đồ thị có hướng không phụ thuộc vào hướng trên các cung của nó. Vì vậy, trong rất nhiều trường hợp sẽ thuận tiện hơn nếu ta bỏ qua hướng trên các cung của đồ thị. Đồ thị vô hướng thu được bằng cách bỏ qua hướng trên các cung được gọi là đồ thị vô hướng tương ứng với đồ thị có hướng đã cho. 1.3. Đường đi, chu trình. Đồ thị liên thông. Định nghĩa 1. Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó n là số nguyên dương, trên đồ thị vô hướng G = (V,E) là dãy x 0 , x 1 ,…, x n-1 , x n Trong đó u = x 0 , v = x n , v = (x i , x i+1 ) ∈ E, i = 0,1,2,…, n-1. Đường đi nói trên còn có thể biểu diễn dưới dạng dãy các cạnh: (x 0 ,x 1 ), (x 1 ,x 2 ),…, (x n-1 ,x n ). Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối của đường đi. Đường đi có đỉnh đầu trùng với đỉnh cuối (tức là u = v) được gọi là chu trình. Đường đi hay chu trình được gọi là đơn nếu như không có cạnh nào bị lặp lại. Khái niệm đường đi và chu trình trên đồ thị có hướng được định nghĩa hoàn toàn tương tự như trường hợp đồ thị vô hướng, chỉ khác là ta có chú ý đến hướng trên các cung. Định nghĩa 2. Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó n là số nguyên dương, trên đồ thị có hướng G = (V,A) là dãy x 0 , x 1 ,…, x n-1 , x n ; trong đó u = x 0 , v = x n , (x i , x i+1 ) ∈ A, i = 0, 1, 2,…, n-1. Đường đi nói trên còn có thể biểu diễn dưới dạng dãy các cung: (x 0 , x 1 ), (x 1 , x 2 ), (x n-1 , x n ). Trang 5 ∑∑ ∈ − + ∈ == VvVv Evv ||)(deg)(deg Tiểu luận Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối của đường đi. Đường đi có đỉnh đầu trùng với đỉnh cuối (tức là u = v) được gọi là chu trình. Đường đi hay chu trình được gọi là đơn nếu như không có cạnh nào bị lặp lại. Xét một mạng máy tính. Một câu hỏi đặt ra là hai máy tính bất kỳ trong mạng này có thể trao đổi thông tin được với nhau hoặc là trực tiếp qua kênh nối chúng hoặc thông qua một hoặc vài máy trung gian trong mạng ? Nếu sử dụng đồ thị để biểu diễn mạng máy tính này (trong đó các đỉnh của đồ thị tương ứng với các máy tính, còn các cạnh tương ứng của các kênh nối) câu hỏi đó được phát biểu trong ngôn ngữ đồ thị như sau: Tồn tại hay chăng đường đi giữa mọi cặp đỉnh của đồ thị. Định nghĩa 3. Đồ thị vô hướng G = (V,E) được gọi là liên thông nếu luôn tìm được đường đi giữa hai đỉnh bất kỳ của nó. Như vậy hai máy tính bất kỳ trong mạng có thể trao đổi thông tin được với nhau khi và chỉ khi đồ thị tương ứng với mạng này là đồ thị liên thông. Trang 6 [...].. .Tiểu luận CHƯƠNG II BÀI TOÁN TÌM LUỒNG CỰC ĐẠI THEO THUẬT TOÁN FORD-FULKERSON Bài toán luồng cực đại trong mạng là một trong những bài toán tối ưu trên đồ thị tìm được những ứng dụng rộng rãi trong thực tế cũng như những ứng dụng thú vị trong lý thuyết tổ hợp Bài toán được đề xuất vào đầu những năm 1950, và gắn liền vơi tên tuổi của hai nhà toán học Mỹ là Ford và Fulkerson Trong nội dung bài viết... (iii) =>(i) Theo bổ đề 1, val(f) ≤ c(X,X*) với mọi luồng f và với mọi lát cắt (X,X*) Vì vậy, từ đẳng thức val(f) = c(X,X*) suy ra luồng f là luồng cực đại trong mạng 2.2 Thuật toán Ford-Fulkerson tìm luồng cực đại trong mạng Định lý 1 là cơ sở xây dựng thuật toán lặp sau đây để tìm luồng cực đại trong mạng: Bắt đầu từ luồng với luồng trên tất cả các cung bằng 0 ( ta sẽ gọi luồng như vậy là luồng không... thể sử dụng thuật toán tìm kiếm theo chiều rộng ( hay thuật toán tìm kiếm theo chiều sâu) bắt đầu từ đỉnh s, trong đó không cần xây dựng tường minh đồ thị Gf Ford- Fulkerson đề nghị thuật toán gán nhãn chi tiết sau đây để giải bài toán luồng trong mạng Thuật toán bắt đầu từ luồng chấp nhận được nào đó trong mạng ( có thể bắt đầu từ luồng không) sau đó ta sẽ tăng luồng bằng cách tìm các đường tăng luồng. .. từ s lại đến được v nên v không thể nằm trong T Trang 10 Tiểu luận Ví dụ Hình 2.1: Một mạng với luồng cực đại và ba lát cắt cực tiểu Hình là một mạng với các nút V= {s,o,p,q,r,t} và luồng cực đại là một luồng tổng từ nút phát s tới nút thu t có giá trị bằng 5 (Đây thực ra là luồng cực đại duy nhất ta có thể tìm thấy trong mạng này) Có ba lát cắt cực tiểu trong mạng Đối với lát cắt S = {s,p}, T = {o,q,r,t},... có nhãn Trong trường hợp thứ nhất ta tìm được đường tăng luồng, còn trong trường hợp thứ hai đối với luồng đang xét không tồn tại đường tăng luồng ( tức là luồng Trang 13 Tiểu luận đã là cực đại) Mỗi khi tìm được đường tăng luồng, ta lại tăng luồng theo đường tìm được, sau đó xoá tất cả các nhãn và đối với luồng mới thu được lại sử dụng phép gán nhãn các đỉnh để tìm đường tăng luồng Thuật toán sẽ kết... val(f *) là lớn nhất Luồng như vậy ta sẽ gọi là luồng cực đại trong mạng Bài toán như vậy có thể xuất hiện trong rất nhiều ứng dụng thực tế chẳng hạn khi cần xác định cường độ lớn nhất của dòng vận tải giữa 2 nút của một bản đồ giao thông Trong ví dụ này của bài toán luồng cực đại xẽ chỉ cho ta các đoạn đường đông xe nhất và chúng tạo thành “chỗ hẹp” tương ứng với dòng giao thỗng xét theo hai nút được... đề được chứng minh Từ bổ đề 1 suy ra Hệ quả 1 Giá trị luồng cực đại trong mạng không vượt quá khả năng thông qua của lát cắt hẹp nhất trong mạng Ford và Fulkerson đã chứng minh rằng giá trị luồng cực đại trong mạng đúng bằng khả năng thông qua của lát cắt hẹp nhất Để có thể phát biểu và chứng minh kết quả này chúng ta sẽ cần thêm một số khái niệm Giả sử f là một luồng trong mạng G = (V,E) Từ mạng G =... v ) Γ Trong đó Γ − (v) - tập các đỉnh của mạng mà từ đó có cung đến v, Γ + (v) - tập các đỉnh của mạng mà từ v có cung đến nó: Γ − (v) = { w ∈V : ( w, v) ∈ E}, Γ + (v ) = { w ∈V : (v, w) ∈ E} Trang 7 Tiểu luận 3.Giá trị của luồng f là số val ( f ) = ∑ f ( s, w) = ∑ f ( w, t ) w∈Γ+ ( s ) w∈Γ− ( t ) 2.1.2 Bài toán luồng cực đại trong mạng Cho mạng G=(V,E) Hãy tìm luồng f * trong mạng với giá trị luồng. .. luồng, định lý luồng cực đại lát cắt cực tiểu o Trình bày thuật toán Ford-Fulkerson tìm luồng cực đại o Thiết kế cấu trúc dữ liệu và giải thuật Ford-Fulkerson o Viết chương trình cài đặt thuật toán Ford-Fulkerson bằng ngôn ngữ C - Kết quả kiểm thử trên nhiều file dữ liệu đầu vào đều cho kết quả đúng Trang 30 TÀI LIỆU THAM KHẢO [1] Giáo trình Lý thuyết đồ thị - Pgs Trần Quốc Chiến [2] Ebook Giải thuật và... Ford-Fukerson tìm ra luồng cực đại trong mạng: - Khởi tạo luồng rỗng - Khởi tạo giá trị tăng luồng incvalue=oo - Chừng nào tìm được đường đi trong luồng thì: • Xác định giá trị tăng luồng incvalue=min (incvalue,c[u,v]-f[u,v]) • Tăng luồng f[u,v] một giá trị incvalue nếu cung (u,v) là cung thuận, giảm luồng f[v,u] một giá trị incvalue nếu cung (u,v) là cung nghịch Trang 20 Tiểu luận - Cho đến khi tìm được