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.
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?