J'implémente l'algorithme d'annulation de cycle pour trouver une solution optimale au problème de flux min-cost. En trouvant et en supprimant les cycles de coûts négatifs dans le réseau résiduel, le coût total est réduit à chaque tour. Pour trouver un cycle négatif, j'utilise l'algorithme bellman-ford.
Mon problème est: Bellman-ford ne trouve que les cycles accessibles depuis la source, mais j'ai également besoin de trouver des cycles qui ne sont pas accessibles.
Exemple: Dans le réseau suivant, nous avons déjà appliqué un débit maximum. Le bord rend très cher. Dans le réseau résiduel, nous avons un cycle de coûts négatif avec la capacité . L' enlever, nous donnerait une solution moins coûteuse en utilisant les bords et , mais nous ne pouvons l' atteindre de la source .
Étiquettes: débit / capacité, coût
Bien sûr, je pourrais exécuter Bellman-ford à plusieurs reprises avec chaque nœud comme source, mais cela ne semble pas être une bonne solution. Je suis un peu confus car tous les articles que j'ai lus semblent sauter cette étape.
Pouvez-vous me dire comment utiliser bellman-ford pour trouver chaque cycle négatif (accessible ou non)? Et si ce n'est pas possible, quel autre algorithme proposez-vous?