Come posso verificare una soluzione al problema del commesso viaggiatore in tempo polinomiale?


31

Quindi, il problema decisionale TSP (Venditore ambulante) è NP completo .

Ma non capisco come posso verificare che una data soluzione a TSP sia effettivamente ottimale in tempo polinomiale, dato che non c'è modo di trovare la soluzione ottimale in tempo polinomiale (perché il problema non è in P)?

Qualcosa che potrebbe aiutarmi a vedere che la verifica può effettivamente essere fatta in tempo polinomiale?

Risposte:


20

Per essere più precisi, noi non sappiamo se TSP è in . È possibile che può essere risolto in tempo polinomiale, anche se forse la convinzione comune è che P ≠ N P . Ora, ricorda cosa significa che un problema è -hard e completo, vedi ad esempio la mia risposta qui . Credo che la tua fonte di confusione derivi dalle definizioni: un -hard non è necessariamente in .PP≠NPNPNPNPNP

Come tu e la pagina Wikipedia che colleghi, il problema decisionale è -completo: dati i costi e un intero , decidi se c'è un tour più economico di . Un modo di vedere il problema è in è vedere che data una soluzione, è facile verificare in tempo polinomiale se la soluzione è più economica di . Come puoi farlo? Segui semplicemente il tour indicato, registra il suo costo totale e infine confronta il costo totale con .NPxxNPxx


"Basta seguire il tour indicato, registrare il costo totale e infine confrontare il costo totale con x". -> Sì, ma ci sono un numero esponenziale di tour da controllare!
— Lazer,

2
Ero solo un po 'troppo lento, a quanto pare. ;-)
— Niel de Beaudrap il

3
@Lazer No, c'è esattamente un tour da controllare. Ti viene dato un tour e ne registri la lunghezza. Se è inferiore a , visualizza sì , altrimenti no . x
— Juho,

"Decidi se c'è un tour" questo significa sicuramente che non ci viene dato un tour. Cosa mi sto perdendo?
— Lazer,

3
@Lazer No, nel problema ti viene dato un grafico ponderato e un costo target. Il certificato è un tour. Per una spiegazione alternativa, vedi la risposta di Niel. Proprio come nell'esempio su Wiki nel caso di SUBSET-SUM, non ci viene dato zero, ma invece ci viene dato un particolare sottoinsieme come certificato.
— Juho,

34

Il punto cruciale è che devi considerare il problema decisionale :

Problema del commesso viaggiatore (versione decisionale). Dato un grafico ponderato G e un costo target C , esiste un ciclo hamiltoniano in G il cui peso è al massimo C ?

Per un 'sì' esempio, il certificato è solo un po 'di ciclo hamiltoniano il cui peso è al massimo C . Se riuscissi a risolvere questo problema in modo efficiente, potresti trovare il costo di un tour minimo mediante la ricerca binaria, iniziando con il peso dell'intera rete come limite superiore.


3

Probabilmente stai pensando al problema di determinare se una determinata soluzione al TSP è la soluzione migliore . Tuttavia, non esiste una soluzione polinomiale nota per questo, il che significa che questo problema è in NP-difficile, ma non necessariamente NP-Complete.

Il Problema Decisionale TSP è in realtà quello di determinare se il peso di qualsiasi soluzione in un grafico Gsia al massimo costo C(come spiegato meglio nella risposta di Niel), che è certamente verificabile in tempo polinomiale.


5
Ci scusiamo per la pedanteria, ma TSP non è NP-difficile perché ci sono tour . Ad esempio, l'ordinamento è in P sebbene ci siano n ! possibili permutazioni pure. Gli spazi di ricerca enormi o in rapida crescita non implicano sempre la durezza. O(n!)n!
— Juho,

n0<=n1<=...

4
No, puoi ottenere l'ottimale anche senza calcolare le lunghezze di tutti gli altri tour. E sì, è possibile dimostrare che questo è in realtà l'ottimale senza calcolare tutti gli altri tour. Per un esempio consideriamo branch & bound.
— Juho,

7
O(n22n)

@Juho buon punto. Ho aggiornato la risposta per non indicare più la forza bruta come unica opzione (solo che non ci sono soluzioni polinomiali).
— Casey Kuball,

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.