Qual è l'intuizione sul perché il problema del percorso più lungo non ha una sottostruttura ottimale?


9

Stavo imparando i percorsi più lunghi e mi sono imbattuto nel fatto che i percorsi più lunghi nei grafici generali non sono risolvibili dalla programmazione dinamica perché il problema mancava di una sottostruttura ottimale (che penso che l'istruzione debba essere corretta ai percorsi semplici più lunghi sui grafici generali non è risolvibile da programmazione dinamica).

Se assumiamo che debbano essere semplici (per qualche motivo questo è necessario e non lo apprezzo ancora) e più lunghi, è facile creare un contro esempio. Considera il grafico quadrato con 4 nodi A → B → C → D → A.

inserisci qui la descrizione dell'immagine

Un percorso più lungo da A a D è chiaramente A → B → CD. Ma il percorso più lungo da B a C non fa parte del percorso più lungo da A a D perché il percorso più lungo da B a C è B → A → D → C che chiaramente non è uguale al percorso B → C (che in questo caso è in effetti un percorso più breve!).

Questo sembra funzionare solo perché abbiamo richiesto che i percorsi fossero semplici. È necessario presumere che i percorsi debbano essere semplici per noi per dimostrare che la sottostruttura ottimale non è presente?

Penso che il contro esempio dovrebbe essere una buona prova / prova (che non nego), ma non trovo affatto il contro esempio molto illuminante. Perché mi dimostra il punto che non permette sottostruttura ottima ma non riesce a fornire me reale comprensione o intuizione perché dovrebbe essere ovvio che non ci dovrebbe essere alcun più lungo sottostruttura percorso ottimale. Come ad esempio, perché un argomento taglia e incolla non funziona? Se il sottotraccia non è più lungo, allora segui un percorso più lungo! Sembra molto allettante, intendo, se mettiamo in atto qualcosa di più lungo, ovviamente dovrebbe allungarsi ... tuttavia, questo è per qualche ragione sbagliato . L'esempio in realtà dimostra che DP non può mairisolvere i percorsi più lunghi (semplici?) in modo efficiente? Non ho bisogno di una prova generale che non sia in P (poiché potrebbe richiedere una soluzione P vs NP). Sto solo cercando di dimostrare che non è risolvibile da DP (o almeno una prova molto forte che DP non può mai risolvere questo problema dei percorsi più lunghi o che il problema non ha una sottostruttura ottimale).

Ho visto definitivamente su wikipedia che il problema dovrebbe essere NP-Hard, il che significa che probabilmente non esiste un algoritmo veloce. Non sono sicuro che questo sia l'unico tipo di prova / intuizione esistente per fornire che la sottostruttura ottimale dovrebbe ovviamente mancare (o se non è carente, che non può essere utilizzata per accelerare il problema). È che l'unico modo per dimostrare che dovrebbe non essere risolvibili da un programma dinamico veloce?

È la ragione per cui richiediamo semplicesolo perché se non poniamo tale requisito il problema diventa banale / poco interessante? In altre parole, se esiste un ciclo, allora si è risolto il problema del percorso più lungo per tutti i nodi raggiungibili da quel ciclo (trovando qualsiasi percorso per quel ciclo). Per i nodi che non hanno alcun ciclo raggiungibile, abbiamo un grafico aciclico, che è risolvibile da DP (se i pesi sono positivi?). Inoltre, se ci sono cicli, abbiamo automaticamente creato delle cose con una sottostruttura ottimale (penso) perché qualsiasi percorso più lungo è semplicemente costituito dal percorso più lungo che copre due casi, 1 i percorsi attraverso il ciclo o 2 i percorsi attraverso il DAG, che entrambi contengono una sottostruttura ottimale. Quindi il problema è diventato banale senza la necessità di percorsi semplici? O mi sto perdendo qualcosa o ci sono spiegazioni migliori sul perché sono richiesti percorsi semplici? doesn'i percorsi più lunghi in generale sono risolvibili da DP?

Inoltre, non sono sicuro al 100% di quali requisiti siano necessari per garantire che DP non possa essere utilizzato. È necessario pesare i bordi negativi, positivo, non ponderato, diretto, non orientato ... quali sono i requisiti?


2
"non è risolvibile con la programmazione dinamica perché il problema mancava di una sottostruttura ottimale (che penso che l'istruzione debba essere corretta su percorsi semplici più lunghi sui grafici generali non è risolvibile con la programmazione dinamica)." - né "sottostruttura ottimale" né "programmazione dinamica" "sono termini significativi in ​​senso formale; semplicemente non ci sono definizioni formali universalmente concordate per loro. Vedi anche qui e qui . Ciò significa che la prova richiesta non esiste.
Raffaello

Risposte:


11

Il problema del percorso più lungo ha una sottostruttura ottimale e questo può essere usato per migliorare il banale O(n!) algoritmo per un O~(2n)algoritmo. Innanzitutto dobbiamo generalizzare il problema:

Percorso più lungo generalizzato: dato un grafico G=(V,E), due vertici s,tVe una serie di vertici AV{s,t}, trova il percorso più lungo in G a partire dal s per t evitando i vertici in A.

Indica la soluzione a questo problema con (s,t,A) (il grafico è compreso), abbiamo la ricorrenza

(s,t,A)=1+maxxA{s}:(s,x)E(x,t,A{s})(st),(t,t,A)=0.
Se il massimo nel primo caso è sopra l'insieme vuoto (ovvero, se non esiste alcun percorso da s per t evitando A), assegniamo (s,t,A)=.

È possibile risolvere questa ricorrenza utilizzando la programmazione dinamica nel tempo O~(2n).

Sebbene ci sia una sottostruttura ottimale qui, ci sono troppi parametri da tenere traccia di, e questo è ciò che rende il problema intrattabile.


cosa significa la tilde sopra l'O? Immagino che significhi nascondere termini polinomiali nella notazione O grande.
Charlie Parker,

@CharlieParker Proprio così.
Yuval Filmus,

Come imponi percorsi semplici in questa formulazione?
Joost,

@Joost La ricorrenza già lo impone.
Yuval Filmus,

@YuvalFilmus, ah ho perso il link che x diventa s nella prossima ricorrenza, e quello Asono i nodi già visitati.
Joost

3

Prima di tutto, il percorso semplice più lungo è NP-difficile e non vi è alcun dubbio (poiché il percorso hamiltoniano si riduce ad esso).

In secondo luogo, se si considerano i percorsi non semplici, il problema non ha molto senso, poiché il percorso non semplice va oltre un bordo / vertice più di una volta, quindi ha un ciclo. Come risultato dell'avere un ciclo nel percorso, il percorso non semplice più lungo è infinito .


1

Ho pensato allo stesso nelle ultime 1 ora e sono giunto alle seguenti conclusioni:

i) Il percorso più lungo in un grafico senza cicli ha una sottostruttura ottimale, così come il percorso più breve.

ii) Il percorso più lungo senza cicli positivi ha una sottostruttura ottimale, così come un percorso più breve senza cicli negativi.

iii) Il percorso più lungo con cicli positivi e il percorso più breve con cicli negativi non esistono in quanto possiamo fare il ciclo all'infinito. Quindi guardiamo a percorsi semplici.

iv) Il percorso semplice più lungo con cicli positivi e il percorso semplice più breve con cicli negativi è NP Hard.

DP risolve (i) in O (V + E). Bellman-Ford risolve (ii) in O (VE) e Djisktra aiuta in alcuni sotto-casi di (ii).

La letteratura è confusa su questo argomento quando il percorso più lungo è solo il percorso più breve con pesi negati e viceversa. Non vedo alcun motivo per fornire istruzioni coperte come il percorso più lungo non ha una sottostruttura ottimale ma il percorso più breve ha ecc.

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.