Aggiornare:
Questa soluzione non è corretta.
Sfortunatamente la soluzione è vera (e semplice) per gli alberi! Trovare il diametro di un albero non ha nemmeno bisogno di questo. Ecco un controesempio per i grafici (il diametro è 4, l'algoritmo restituisce 3 se si seleziona questa ):v
Se il grafico è diretto, questo è piuttosto complesso, ecco alcuni documenti che sostengono risultati più rapidi nel caso denso rispetto all'utilizzo di algoritmi per i percorsi più brevi di tutte le coppie.
Tuttavia il mio punto principale riguarda il caso in cui il grafico non è diretto e con pesi non negativi, ho sentito parlare di un bel trucco più volte:
- Scegli un vertice v
- Trova tale che d ( v , u ) è massimoud( v , u )
- Trova tale che d ( u , w ) sia massimowd( u , w )
- Ritorna d( u , w )
La sua complessità è la stessa di due prime ricerche di ampiezza successive¹, ovvero se il grafico è collegato².O ( | E| )
Sembrava folklore ma in questo momento, sto ancora lottando per ottenere un riferimento o per dimostrarne la correzione. Aggiornerò quando raggiungerò uno di questi obiettivi. Mi sembra così semplice pubblicare la mia risposta proprio ora, forse qualcuno la riceverà più velocemente.
¹ se il grafico è ponderato, Wikipedia sembra dire ma sono sicuro solo di O ( | E | log | V | ) .O ( | E| + | V| log| V| )O ( | E| log| V| )
² Se il grafico non è collegato si ottiene ma potrebbe essere necessario aggiungere O ( α ( | V | ) ) per selezionare un elemento da ciascun componente collegato. Non sono sicuro che ciò sia necessario e, comunque, potresti decidere che il diametro è infinito in questo caso.O ( | V| + | E| )O ( α ( | V| ))