Algoritma Dijkstra hanya digunakan ketika Anda memiliki satu sumber dan Anda ingin tahu jalur terkecil dari satu node ke yang lain, tetapi gagal [dalam grafik dengan tepi negatif]
Algoritma Dijkstra adalah salah satu contoh jalur terpendek sumber tunggal atau algoritma SSSP . Setiap algoritma SSSP menghitung jarak terpendek-jalan dari node sumber yang dipilih untuk setiap node yang lain dalam grafik. Selain itu, ia menghitung representasi kompak dari semua jalur terpendek dari s ke setiap simpul lainnya, dalam bentuk pohon yang di-root. Dalam kode Wikipedia, adalah induk dari v di pohon ini.ssprevious[v]
v
Perilaku algoritma Dijkstra dalam grafik dengan tepi negatif tergantung pada varian tepat yang dibahas. Beberapa varian algoritme, seperti yang ada di Wikipedia, selalu berjalan cepat tetapi tidak menghitung jalur terpendek dengan benar ketika ada tepi negatif. Varian lain, seperti yang ada dalam catatan kuliah ini selalu menghitung jalur terpendek dengan benar (kecuali jika ada siklus negatif yang dapat dijangkau dari sumber) tetapi mungkin memerlukan waktu eksponensial dalam kasus terburuk jika ada tepi negatif.
Algoritma Floyd-Warshall digunakan ketika salah satu dari semua node dapat menjadi sumber, sehingga Anda ingin jarak terpendek untuk mencapai simpul tujuan dari simpul sumber mana pun. Ini hanya gagal ketika ada siklus negatif.
Itu benar. Floyd-Warshall adalah salah satu contoh dari algoritma jalur terpendek semua-pasangan , yang berarti ia menghitung jalur terpendek antara setiap pasangan node. Contoh lain adalah "untuk setiap simpul v, jalankan Dijkstra dengan v sebagai simpul sumber". Ada beberapa yang lain.
Bellman-Ford digunakan seperti Dijkstra, ketika hanya ada satu sumber. Ini dapat menangani bobot negatif dan kerjanya sama dengan Floyd-Warshall kecuali untuk satu sumber, bukan?
HAI( V3)O ( V2E)O (VE)
Untuk perincian lebih lanjut, bacalah buku teks algoritma favorit Anda. (Anda memiliki buku teks algoritma favorit, bukan?)