Algoritmo del tempo lineare per la ricerca di percorsi più brevi da a


8

Definizione. Dato un grafo e due vertici e , il problema -shortest-percorsi è trovare il semplici cammini minimi tra e in .G=(V,E)stkkstG

Si noti che la lunghezza di questi percorsi non è necessariamente uguale e che i vertici e sono necessariamente collegati a . Mi chiedevo se esiste un algoritmo di tempo lineare (in termini di e ) per questo problema.stknm

Ho esaminato alcuni articoli in letteratura, come " Una nuova implementazione dell'algoritmo di percorsi senza ciclo di posizionamento di Yen ", ma la complessità temporale è molto alta . Inoltre, l'altro documento di Epstein " Trovare i k percorsi più brevi " presenta un algoritmo che trova i percorsi più brevi che non sono necessariamente semplici percorsi con tempo di esecuzione .O(Kn(m+nlogn))kO(n+m+k)

Esiste un algoritmo a tempo lineare per il problema -simple-shortest path?k


@DW L'algoritmo di Eppstein trova percorsi che non sono necessariamente semplici. OP vuole un algoritmo simile, possibilmente nello stesso tempo di esecuzione, che trova i percorsi semplici più brevi. L'algoritmo di ranking di Yen è troppo lento per quello. k
Yuval Filmus,

Risposte:


7

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:

inserisci qui la descrizione dell'immagine

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,vE,u,vV 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.Kallevia 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.


Grazie, funziona davvero O(n+m)nei grafici non ponderati. In effetti, un articolo più recente (menzionato nella domanda) mi ha fatto pensare che il suo tempo di esecuzione deve essere migliore di quello di Kotah; mi ha dato un'impressione sbagliata.
orezvani,

Felice di sentirti piacere @kezzos
Carlos Linares López
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.