Để tìm lưu lượng tối đa trong biểu đồ, tại sao nó không đủ để làm bão hòa tất cả các đường tăng thêm với khả năng cạnh tối thiểu trong đường dẫn đó mà không xem xét các cạnh sau? Ý tôi là, điểm nào gọi nó là một lợi thế nếu chúng ta giả định dòng chảy từ nó?Tại sao các cạnh sau được yêu cầu trong thuật toán Ford-Fulkerson?
Trả lời
Cạnh sau là cần thiết khi thực hiện thuật toán Ford-Fulkerson trong trường hợp đường dẫn bạn chọn kết thúc không phải là một phần của luồng tổng thể.
Như một ví dụ nơi lại cạnh là cần thiết, hãy xem xét luồng trên mạng này:
s
/\
a b
\/\
c d
\/
t
Giả định rằng tất cả các cạnh chỉ xuống và rằng tất cả các cạnh có công suất 1 và bạn muốn tìm một dòng chảy từ s đến t . Giả sử trên lần lặp đầu tiên của Ford-Fulkerson bạn lấy đường dẫn s -> b -> c -> t. Tại thời điểm này, bạn đã đẩy một đơn vị lưu lượng từ s đến t. Nếu bạn không thêm vào bất kỳ cạnh nào, bạn còn lại với điều này:
s
/
a b
\ \
c d
/
t
Không có thêm đường dẫn s-t, nhưng điều đó không có nghĩa là bạn có luồng tối đa. Bạn có thể đẩy hai đơn vị của dòng chảy từ s đến t bằng cách gửi một dọc theo đường dẫn s -> a -> c -> t và đường khác dọc theo đường dẫn s -> b -> d -> t. Nếu không có bất kỳ cạnh sau nào trong mạng lưu lượng dư, bạn sẽ không bao giờ khám phá ra con đường khác này.
Hy vọng điều này sẽ hữu ích!
- 1. Tại sao các cạnh được yêu cầu trong kết nối Relay/GraphQL?
- 2. Yêu cầu sách: Thuật toán phân phối
- 3. Tại sao kỹ thuật Aux yêu cầu cho tính toán mức loại?
- 4. Thuật toán tìm các công tắc được yêu cầu để bật đèn sáng
- 5. Tại sao CoffeeScript yêu cầu khoảng trắng sau bản đồ?
- 6. Thuật toán cho các nút giao thông Cạnh Least
- 7. Tại sao DefaultOverloadAttribute được yêu cầu trong WinRT?
- 8. Yêu cầu làm việc chính xác cho thuật toán BBP?
- 9. Tại sao các ForwardIterator được yêu cầu để mô hình DefaultConstructible?
- 10. Điều chỉnh ngưỡng trong thuật toán cạnh canny
- 11. Tại sao yêu cầu ajax nên được thực hiện trong componentDidMount trong các thành phần React?
- 12. Tại sao thuật toán Dijkstra sử dụng phím giảm? thuật toán
- 13. Thuật toán đằng sau Math.pow() trong Java
- 14. Tại sao HttpListener bỏ qua các yêu cầu bên ngoài?
- 15. Oracle sqlldr TRAILING NULLCOLS được yêu cầu, nhưng tại sao?
- 16. Yêu cầu CORS - tại sao cookie không được gửi?
- 17. Tại sao các đối số dòng lệnh bash sau 9 yêu cầu dấu ngoặc nhọn?
- 18. Có thuật toán thu thập rác nào đáp ứng các yêu cầu này không?
- 19. Tại sao các tổ chức ẩn danh toàn cầu được yêu cầu phải được khai báo là tĩnh?
- 20. Tại sao gói Visual C++ Redistributable được yêu cầu?
- 21. Tại sao không có thuật toán std :: copy_if?
- 22. Tại sao PreparedStatement.setNull yêu cầu sqlType?
- 23. Tại sao lớp MailDefinition yêu cầu System.Web.UI.Control?
- 24. Tại sao yêu cầu copy_to/from_user?
- 25. Tại sao yêu cầu một véc tơ?
- 26. Tại sao các mô-đun yêu cầu AMD được ghép nối cần một bộ nạp?
- 27. Bố cục lớp trong C++: Tại sao các thành viên đôi khi được yêu cầu?
- 28. Thuật toán tính toán diện tích tối thiểu (Chỉ đặt các ô trên cạnh)
- 29. Tại sao Chrome yêu cầu robots.txt?
- 30. Tại sao Cookie có sẵn trong Yêu cầu ngay sau khi cài đặt bằng Phản hồi?
Bạn có thể vui lòng xem chi tiết hơn về những gì sẽ tạo nên các bản sao lưu trong trường hợp cụ thể của bạn không? Cảm ơn bạn! – bluejamesbond
@bluejamesbond Ở đây, các cạnh sau sẽ trỏ từ b đến s, từ c sang b, và từ t đến c (đó là đảo ngược các cạnh dọc theo đường đi). Các cạnh đó tạo ra một đường tăng từ s đến t cho thấy luồng không phải là cực đại. – templatetypedef
Tuy nhiên, khi nào nó sẽ đi theo những đường dẫn đó? – bluejamesbond