Chúng tôi có thể giải quyết vấn đề lập trình tuyến tính (10,11) bằng phương pháp simplex hoặc bằng một thuật toán để tổng hợp các vấn đề lập trình tuyến tính (xem phần 10,1). Tuy nhiên, cấu trúc đặc biệt của vấn đề (10,11) có thể được khai thác để thiết kế thuật toán nhanh hơn. Đặc biệt, nó là khá tự nhiên để sử dụng lặp đi lặp lại cải tiến ý tưởng như sau. Chúng tôi luôn luôn có thể bắt đầu với dòng zero (tức là, đặt xij = 0 cho mỗi cạnh (i, j) trong mạng). Sau đó, trên mỗi lặp đi lặp lại, chúng tôi có thể cố gắng tìm một đường đi từ nguồn chìm dọc theo đó có thể được gửi một số lưu lượng bổ sung. Như một con đường được gọi là dòng chảy augmenting. Nếu một con đường augmenting dòng chảy được tìm thấy, chúng tôi điều chỉnh dòng chảy dọc theo các cạnh của con đường này để có được một dòng chảy của một giá trị gia tăng và cố gắng tìm một con đường thông cho dòng mới. Nếu không có dòng chảy-augmenting đường dẫn có thể được tìm thấy, chúng tôi kết luận rằng dòng là tối ưu. Mẫu này tổng hợp để giải quyết vấn đề dòng chảy tối đa được gọi là phương pháp đường dẫn augmenting, còn được gọi là phương pháp Ford-Fulkerson sau L. R. Ford, Jr., và D. R. Fulkerson, người phát hiện ra nó (xem [For57])Một thực hiện thực tế của các ý tưởng thông đường dẫn là, Tuy nhiên, không khá đơn giản. Để thấy điều này, chúng ta hãy xem xét mạng trong hình 10.4. Chúng tôi bắt đầu với dòng chảy không hiển thị trong hình 10.5a. (Trong con số đó, số tiền không được gửi qua mỗi cung được tách ra từ năng lực cạnh bằng các slashes; chúng tôi sẽ sử dụng ký hiệu này trong các ví dụ khác.) Nó là tự nhiên để tìm kiếm một con đường augmenting dòng chảy từ nguồn chìm bởi sau đây hướng cạnh (i, j) mà hiện tại dòng chảy xij là ít hơn uij công suất cạnh. Trong số nhiều khả năng, chúng ta hãy giả định rằng chúng tôi xác định thông đường dẫn 1→2→3→6 đầu tiên. Chúng tôi có thể làm tăng dòng chảy dọc theo con đường này bởi một tối đa là 2 đơn vị, đó là khả năng không sử dụng nhỏ nhất của các cạnh của nó. Dòng mới Hiển thị trong hình 10.5b. Điều này là càng xa càng tốt, chúng tôi ý tưởng simpleminded về dòng chảy-augmenting đường dẫn sẽ có thể để chúng tôi. Thật không may, dòng chảy Hiển thị trong hình 10.5b không phải là tối ưu: giá trị của nó vẫn còn có thể được tăng lên dọc theo con đường 1→4→3←2→5→6 bằng cách tăng dòng chảy của 1 rìa, (1, 4), (4, 3), (2, 5), và (5, 6) và giảm nó bởi 1 rìa (2, 3). Dòng chảy thu được như là kết quả của augmentation này được thể hiện trong hình 10,5 c. Đó là thực sự tối đa. (Bạn có thể cho biết lý do tại sao không?)Vì vậy, để tìm thấy một dòng chảy-augmenting con đường cho một dòng chảy x, chúng ta cần phải xem xét các đường đi từ nguồn chìm trong đồ thị vô hướng tiềm ẩn trong đó hai đỉnh consec utive bất kỳ tôi, j là một trong hai kết nối bởi một cạnh đạo diễn từ tôi để j với một số khả năng không sử dụng tích cực rij = uij − xij (do đó chúng tôi có thể làm tăng dòng chảy qua cạnh đó bởi lên đến đơn vị rij), hoặc kết nối bởi một cạnh hướng từ j với tôi với một số tích cực chảy xj tôi (do đó chúng tôi có thể làm giảm dòng chảy qua đó cạnh bởi lên đến xj tôi đơn vị).Cạnh của các loại đầu tiên được gọi là cạnh phía trước bởi vì đuôi liệt kê trước khi đầu của họ ở đỉnh danh sách 1 →... tôi → j... → n xác định đường dẫn; cạnh của các loại thứ hai được gọi là lạc hậu cạnh vì đuôi là liệt kê sau đợt đầu của họ trong danh sách 1 đường dẫn →... tôi ← j... → n. Để minh họa, cho 1→4→3←2→5→6 đường dẫn của các ví dụ cuối, (1, 4), (4, 3), (2, 5), và (5, 6) là các cạnh phía trước, và (3, 2) là rìa lạc hậu.Đối với một đường augmenting dòng chảy nhất định, cho phép r là tối thiểu của tất cả rij không sử dụng khả năng của các cạnh phía trước và tất cả dòng chảy xj i của các cạnh lạc hậu. Nó là dễ dàng nhận thấy rằng nếu chúng ta tăng lưu lượng hiện tại bởi r trên mỗi cạnh phía trước và giảm nó bằng số tiền này trên mỗi cạnh lạc hậu, chúng ta sẽ có được một khả thi
đang được dịch, vui lòng đợi..
