Saya sedang mempelajari jalur terpendek dalam grafik terarah saat ini. Ada banyak algoritma yang efisien untuk menemukan jalur terpendek dalam jaringan, seperti dijkstra atau bellman-ford. Tetapi bagaimana jika grafiknya dinamis? Dengan mengatakan dinamis, saya maksudkan bahwa kita dapat menyisipkan atau menghapus simpul selama eksekusi program. Saya mencoba untuk menemukan algoritma yang efisien untuk memperbarui jalur terpendek dari vertex ke setiap titik lain , setelah memasukkan keunggulan , tanpa perlu menjalankan algoritma jalur terpendek dalam grafik baru lagi. Bagaimana saya bisa melakukan ini? Terima kasih sebelumnya.u e
- Catatan: perubahan dapat dilakukan setelah iterasi pertama algoritma
- Catatan [2]: dua node diberikan, sumber dan target. Saya perlu menemukan jalur terpendek antara node-node ini. Ketika grafik diperbarui, saya hanya perlu memperbarui , yang merupakan jalur terpendek antara dan .t π ( s , t ) s t
- Catatan [3]: Saya hanya tertarik pada kasus sisipan tepi.
Definisi formal : Diberikan grafik . Mendefinisikan operasi update sebagai 1) penyisipan dari tepi ke atau 2) aa penghapusan tepi dari . Tujuannya adalah untuk menemukan secara efisien biaya semua jalur terpendek setelah operasi pembaruan. Secara efisien, maksud kami setidaknya lebih baik daripada mengeksekusi algoritma All-Pairs-Shortest-Path, seperti algoritma Bellman-Ford, setelah setiap operasi pembaruan.e E e E
Sunting: Di bawah ini ada versi sederhana dari masalah:
Grafik tertimbang diberikan, terdiri dari tepi searah, dan dua simpul kritis dan . Satu set dari tepi dua arah kandidat juga diberikan. Saya harus membuat edge untuk meminimalkan jarak dari ke .s t Cs t