L'Algoritmo di Dijkstra, inventato dallo scienziato informatico Edsger W. Dijkstra nel 1959, è un algoritmo per trovare il percorso più breve tra i nodi in un grafo. In particolare, produce un albero dei cammini minimi da un nodo sorgente a tutti gli altri nodi del grafo quando i pesi sugli archi sono non negativi. È spesso usato nel routing e come sottoroutine in altri algoritmi di grafi.
Come Funziona:
L'algoritmo di Dijkstra funziona mantenendo un insieme di nodi per cui è già stato calcolato il cammino minimo (l'insieme "risolto") e un insieme di nodi per cui il cammino minimo non è ancora stato calcolato. Inizia con il nodo sorgente e assegna a tutti gli altri nodi una distanza infinita. A ogni iterazione, seleziona il nodo non risolto con la distanza più piccola dal nodo sorgente (questo nodo è il più vicino tra quelli ancora da esplorare), lo aggiunge all'insieme "risolto" e aggiorna le distanze dei suoi vicini. L'aggiornamento delle distanze consiste nel verificare se il cammino attraverso il nodo appena aggiunto all'insieme "risolto" è più breve del cammino corrente verso il vicino.
Passi dell'Algoritmo:
Complessità Computazionale:
La complessità computazionale dell'algoritmo di Dijkstra dipende dalla struttura dati utilizzata per implementare la coda di priorità dei nodi non visitati. Con una coda di priorità implementata come un array semplice, la complessità è O(V<sup>2</sup>), dove V è il numero di vertici. Con una coda di priorità implementata come un heap binario, la complessità è O((V + E)log V), dove E è il numero di archi. Con un heap di Fibonacci, la complessità può essere ridotta a O(E + V log V).
Limitazioni:
Applicazioni:
L'algoritmo di Dijkstra ha molte applicazioni pratiche, tra cui:
Concetti importanti correlati:
Ne Demek sitesindeki bilgiler kullanıcılar vasıtasıyla veya otomatik oluşturulmuştur. Buradaki bilgilerin doğru olduğu garanti edilmez. Düzeltilmesi gereken bilgi olduğunu düşünüyorsanız bizimle iletişime geçiniz. Her türlü görüş, destek ve önerileriniz için iletisim@nedemek.page