Dijkstra algoritmasi, bir ciygede iki kose arasindaki en kisa yolu verir. En kotu ihtimalle (Eger fibbonacci heap ile duygun implemente edilmis ise)
$|E|+|V|\log|V|$ ile calisir. Burada $|E|$ ciygenin kenar sayisi, $|V|$ ise kose sayisi.
Algoritmanin adimlari:
- Butun koseleri gidilmemis olarak isaretle
- Butun koselere bir uzaklik degeri ata. Baslangic kosesine $0$ digerlerine ise $\infty$ ata. Guncel kose, baslangic kosesi olsun
- Guncel kosenin ziyaret edilmemis komsularina bak ve uzakliklarini hesapla (kendi uzaklik degerim+komsuma olan uzakligim). Eger hesaplanan uzaklik onceki atanmis degerden kucuk ise atanmis degeri yeni uzaklikla degistir.
- Guncel kosenin komsularina bakildiktan sonra guncel kosesyi gidilmis olarak isaretle.
- Eger Bitis kosesi ziyaret edilmis ise algoritmayi durdur
- Gidilmemis koselerden uzakligi en kucuk olani sec ve algoritmaya 3. adimdan devam et
Bunun disinda bir de $A^*$ algoritmasi vardir ayni sorun icin gelistirilmistir ama o da baska bi soru olsun.