Estou implementando o algoritmo de cancelamento de ciclo para encontrar uma solução ideal para o problema de fluxo de custo mínimo. Ao encontrar e remover ciclos de custo negativos na rede residual, o custo total é reduzido em cada rodada. Para encontrar um ciclo negativo, estou usando o algoritmo bellman-ford.
Meu problema é: o Bellman-ford encontra apenas ciclos que podem ser acessados a partir da fonte, mas também preciso encontrar ciclos que não são acessíveis.
Exemplo: na rede a seguir, já aplicamos um fluxo máximo. A beiratorna muito caro. Na rede residual, temos um ciclo de custo negativo com capacidade. Removê-lo, nos daria uma solução mais barata usando bordas e , mas não podemos alcançá-lo da fonte .
Etiquetas: Custo / Fluxo / Capacidade
Obviamente, eu poderia executar o Bellman-ford repetidamente com cada nó como fonte, mas isso não parece uma boa solução. Estou um pouco confuso porque todos os papéis que li parecem pular esta etapa.
Você pode me dizer, como usar o bellman-ford para encontrar todos os ciclos negativos (acessíveis ou não)? E se não for possível, qual outro algoritmo você propõe?