Sto implementando l'algoritmo di annullamento del ciclo per trovare una soluzione ottimale per il problema del flusso di costo minimo. Individuando e rimuovendo i cicli di costo negativi nella rete residua, il costo totale viene ridotto in ogni round. Per trovare un ciclo negativo sto usando l'algoritmo bellman-ford.
Il mio problema è: Bellman-ford trova solo i cicli che sono raggiungibili dalla fonte, ma ho anche bisogno di trovare cicli che non sono raggiungibili.
Esempio: nella seguente rete abbiamo già applicato un flusso massimo. Il bordolo rende molto costoso. Nella rete residua, abbiamo un ciclo di costi negativo con capacità. Rimuoverlo, ci darebbe una soluzione più economica usando i bordi e , ma non possiamo raggiungerlo dalla fonte .
Etichette: flusso / capacità, costo
Ovviamente, potrei eseguire Bellman-ford ripetutamente con ogni nodo come sorgente, ma non suona come una buona soluzione. Sono un po 'confuso perché tutti i documenti che leggo sembrano saltare questo passaggio.
Puoi dirmi come usare bellman-ford per trovare ogni ciclo negativo (raggiungibile o no)? E se non è possibile, quale altro algoritmo proponi?