Trovare il percorso più breve in presenza di cicli negativi


13

Dato un grafico ciclico diretto in cui il peso di ciascun bordo può essere negativo, il concetto di "percorso più breve" ha senso solo se non ci sono cicli negativi, e in tal caso è possibile applicare l'algoritmo Bellman-Ford.

Tuttavia, sono interessato a trovare il percorso più breve tra due vertici che non comporta il ciclismo (cioè sotto il vincolo che potresti non visitare lo stesso vertice due volte). Questo problema è ben studiato? È possibile utilizzare una variante dell'algoritmo Bellman-Ford e, in caso contrario, esiste un'altra soluzione?

Sono anche interessato all'equivalente problema di tutte le coppie, per il quale potrei altrimenti applicare Floyd – Warshall.

Risposte:


23

I percorsi senza vertici ripetuti sono chiamati percorsi semplici , quindi stai cercando il percorso semplice più breve in un grafico con cicli negativi.

Questo può essere ridotto dal problema del percorso più lungo . Se ci fosse un risolutore rapido per il tuo problema, quindi dato un grafico con solo i pesi dei bordi positivi, annullare tutti i pesi dei bordi e far funzionare il tuo solutore darebbe il percorso più lungo nel grafico originale.

Quindi il tuo problema è NP-Hard.


1
Questa è una bella risposta Ho chiesto a molte persone questo IRL senza soluzioni e quando ho spiegato loro che la loro reazione è stata la mia - "certo, ora mi sento così stupido".
jleahy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.