Keduanya dapat digunakan untuk menemukan jalur terpendek dari satu sumber. BFS masuk O(E+V)
, sementara Dijkstra masuk O((V+E)*log(V))
.
Juga, saya telah melihat Dijkstra banyak digunakan seperti dalam protokol routing.
Jadi, mengapa menggunakan algoritma Dijkstra jika BFS dapat melakukan hal yang sama dengan lebih cepat?
sumber
Jika Anda mempertimbangkan situs web perjalanan, ini menggunakan algoritma Dijkstra karena bobot (jarak) pada node.
Jika Anda akan mempertimbangkan jarak yang sama antara semua node, maka BFS adalah pilihan yang lebih baik.
Misalnya, pertimbangkan
A -> (B, C) -> (F)
dengan bobot tepi yang diberikan olehA->B
= 10,A->C
= 20,B->F
=C->F
= 5.Di sini, jika kita menerapkan BFS, jawabannya adalah ABF atau ACF, karena keduanya adalah jalur terpendek (sehubungan dengan jumlah sisi), tetapi jika kita menerapkan Dijstra, jawabannya adalah ABF hanya karena mempertimbangkan bobot pada yang terhubung jalan.
sumber
Algoritma Dijkstra
Sumber: https://cs.stanford.edu/people/abisee/gs.pdf
sumber
Dari perspektif implementasi, algoritma Dijkstra dapat diimplementasikan persis seperti BFS dengan menukar
queue
dengan apriority queue
.Sumber
sumber