Đối với vấn đề lưu lượng tối đa , dường như có một số thuật toán rất tinh vi, với ít nhất một thuật toán được phát triển gần đây như năm ngoái. Dòng Max của Orlin trong thời gian O (mn) hoặc tốt hơn cung cấp thuật toán chạy trong O (VE).
Mặt khác, các thuật toán mà tôi thường thấy nhất được triển khai là (tôi không tuyên bố đã thực hiện một tìm kiếm toàn diện; đây chỉ là từ quan sát thông thường):
- Edmonds-Karp: ,
- Push-relabel: hoặc bằng cách sử dụng lựa chọn đỉnh của FIFO,O ( V 3 )
- Thuật toán của Dinic: .
Có phải các thuật toán với thời gian chạy tiệm cận tốt hơn chỉ là không thực tế cho các kích thước vấn đề trong thế giới thực? Ngoài ra, tôi thấy "Cây động" có liên quan đến khá nhiều thuật toán; những cái này đã từng được sử dụng trong thực tế chưa?
Lưu ý: câu hỏi này ban đầu được hỏi về stack overflow, ở đây , nhưng tôi được bảo rằng nó sẽ phù hợp hơn ở đây.
EDIT : Tôi đã hỏi một câu hỏi liên quan trên cs.stackexchange , cụ thể về các thuật toán sử dụng cây động (hay còn gọi là cây cắt liên kết), có thể được mọi người quan tâm theo dõi câu hỏi này.