Tôi đang thực hiện thuật toán hủy chu kỳ để tìm ra giải pháp tối ưu cho bài toán dòng chi phí tối thiểu. Bằng cách tìm và loại bỏ các chu kỳ chi phí âm trong mạng dư, tổng chi phí được hạ xuống trong mỗi vòng. Để tìm chu kỳ âm tôi đang sử dụng thuật toán bellman-ford.
Vấn đề của tôi là: Bellman-ford chỉ tìm thấy các chu kỳ có thể truy cập được từ nguồn, nhưng tôi cũng cần tìm các chu kỳ không thể truy cập được.
Ví dụ: Trong mạng sau, chúng tôi đã áp dụng một luồng tối đa. Các cạnh làm cho nó rất đắt. Trong mạng dư, chúng ta có chu kỳ chi phí âm với công suất . Loại bỏ nó, sẽ cung cấp cho chúng ta một giải pháp rẻ hơn sử dụng các cạnh (A, C) và (C, T) , nhưng chúng ta không thể đạt được nó từ nguồn S .1 ( A , C ) ( C , T ) S
Nhãn: Lưu lượng / Công suất, Chi phí
Tất nhiên, tôi có thể chạy Bellman-ford nhiều lần với mỗi nút dưới dạng nguồn, nhưng điều đó không có vẻ là một giải pháp tốt. Tôi hơi bối rối vì tất cả các bài báo tôi đọc dường như bỏ qua bước này.
Bạn có thể cho tôi biết, làm thế nào để sử dụng bellman-ford để tìm mọi chu kỳ tiêu cực (có thể tiếp cận hay không)? Và nếu không thể, bạn đề xuất thuật toán nào khác?