Prima di tutto, la risposta che si applica qui è stata già fornita da Raffaello nei commenti alla domanda: " Dato che non sappiamo nemmeno come trovare un semplice percorso più breve in tempo lineare, ne dubito. " Di seguito, quindi, suppongo che tu sia interessato a conoscere i migliori algoritmi disponibili nell'attuale stato dell'arte. Di seguito, descrivo il miglior caso peggiore (per quanto ne so) ma anche un algoritmo che potrebbe essere eseguito in tempo lineare in alcuni casi specifici.
Ma prima di descrivere gli ultimi sviluppi nello stato dell'arte, ho voluto sottolineare l'importanza di percorsi semplici in questo specifico problema. È un dato di fatto, molte persone trascurano l'importanza di questo requisito e alcuni non lo capiscono nemmeno a prima vista.
Quando si calcola il percorso più breve da un vertice iniziale a un vertice obiettivo, il percorso ottimale è necessariamente semplice , ovvero non ripete alcun vertice. Tuttavia, durante il calcoloKpercorsi ottimali, il secondo, il terzo, ... i percorsi migliori potrebbero non essere semplici. Per dimostrarlo, fornisco qui un esempio che è stato leggermente adattato da Hershberger, Maxel & Suri, 2007:
La figura mostra un digrafo la cui soluzione ottimale (dal vertice di origine S al vertice dell'obiettivo t) è il percorso π1: ⟨ S , A , B , C, D , t ⟩ con un costo pari a 5. Se i percorsi non sono richiesti per essere semplici, lo sono anche il secondo e il terzo percorso ottimale π2: ⟨ S , A , B , C, D , C, D , t ⟩ e π3: ⟨ S , A , B , A , B , C,D , t ⟩ entrambi con un costo pari a 7. Tuttavia, se i percorsi sono richiesti per essere semplici, lo sarebbero anche il secondo e il terzo percorso ottimale π2: ⟨ S , F, T ⟩ e π3: ⟨ S , G , t ⟩ con costi 10 e 11, rispettivamente.
Dato un grafico G ( V, E) dove V è l'insieme di vertici e ⟨ u , v ⟩ ∈ E, u , v ∈ V se c'è un bordo tra i vertici u e v, lo stato dell'arte attuale di questo problema in base alle mie conoscenze è descritto di seguito:
Il primo miglioramento significativo per risolvere il K il problema dei percorsi ottimali è l'algoritmo di Eppstein (Eppstein, 1998) O ( | E| + | V| log| V| +k). Tuttavia, questo algoritmo richiede che il grafico sia dato in modo esplicito.K*allevia questo requisito mantenendo la bassa complessità (Aljazzar & Leue, 2011) e, inoltre, consente l'applicazione di euristiche ammissibili. In entrambi i casi, l'output calcolato da questi algoritmi non è necessariamente un percorso semplice.
Nel caso in cui i percorsi debbano essere semplici, i risultati migliori sono dovuti a Yen (Yen, 1971, 1972), generalizzato in seguito da Lawler (Lawler, 1972), che può utilizzare le moderne strutture di dati in O ( k | V| ( | E| + |V|log|V| ))momento peggiore. Nel caso di grafici non indirizzati, Katoh, Ibaraki e Mine (Katoh, Ibaraki & Mine, 1982) migliorano l'algoritmo di Yen perO ( k ( | E| + |V|log|V| ))tempo. Mentre il caso peggiore asintotico di Yen è destinato all'enumerazioneK i semplici percorsi più brevi in un grafico diretto rimangono imbattuti (di nuovo, per quanto ne sappia!), sono stati fatti diversi tentativi per superarlo nella pratica.
Uno di questi lavori è dovuto a John Hershberger et al., Che ha introdotto un algoritmo per i percorsi di sostituzione che è noto per non riuscire a malapena. Di conseguenza, il loro algoritmo fornisce uno speedup che cresce in modo lineare con il numero medio di spigoli nel fileK percorsi più brevi ma, per alcuni casi (come grafici casuali), questo aumento di velocità è ridotto al minimo.
Spero che sia di aiuto,
Bibliografia
Aljazzar, H. & Leue, S. (2011). K*: Un algoritmo di ricerca euristica per trovare il file Kpercorsi più brevi. Intelligenza artificiale, 175 (18), 2129-2154.
Eppstein, D. (1998). Trovare ilKpercorsi più brevi. SIAM Journal on Computing, 28 (2), 652-673.
Hershberger, J., Maxel, M. & Suri, S. (2007). Trovare ilKpercorsi semplici più brevi: un nuovo algoritmo e la sua implementazione. Transazioni ACM su algoritmi, 3 (4), 45-46
Katoh, N., Ibaraki, T. & Mine, H. (1982). Un algoritmo efficiente perKpercorsi semplici più brevi. Reti, 12, 411-427.
Lawler, EL (1972). Una procedura per calcolare ilKle migliori soluzioni ai problemi di ottimizzazione discreti e la sua applicazione al problema del percorso più breve. Management Science, 18, 401-405.
Yen, JY (1971). Trovare ilKpercorsi loopless più brevi in una rete. Management Sciences, 17, 712-716.
Yen, JY (1972). Un altro algoritmo per trovare ilKpercorsi di rete loopless più brevi. Atti della 41a gestione operativa Research Society of America, 20.