Estoy implementando el algoritmo de cancelación de ciclo para encontrar una solución óptima para el problema de flujo de costo mínimo. Al encontrar y eliminar los ciclos de costos negativos en la red residual, el costo total se reduce en cada ronda. Para encontrar un ciclo negativo, estoy usando el algoritmo de Bellman-Ford.
Mi problema es: Bellman-ford solo encuentra ciclos accesibles desde la fuente, pero también necesito encontrar ciclos que no sean accesibles.
Ejemplo: en la siguiente red, ya aplicamos un flujo máximo. El borde hace muy costoso. En la red residual, tenemos un ciclo de costo negativo con capacidad . Retirarlo, nos daría una solución más barata utilizando bordes y , pero no puede llegar a ella desde la fuente .
Etiquetas: flujo / capacidad, costo
Por supuesto, podría ejecutar Bellman-Ford varias veces con cada nodo como fuente, pero eso no parece una buena solución. Estoy un poco confundido porque todos los documentos que leo parecen saltear este paso.
¿Me puede decir cómo usar bellman-ford para encontrar cada ciclo negativo (accesible o no)? Y si no es posible, ¿qué otro algoritmo propones?