Katakanlah kita pergi dari 1 ke 5. Rute terpendek adalah 1-4-3-5 (total: 60 km).
Kita dapat menggunakan algoritma Dijkstra untuk melakukan itu.
Sekarang masalahnya adalah, rute terpendek tidak selalu yang tercepat, karena kemacetan lalu lintas atau faktor lainnya.
Sebagai contoh:
- 1-2 diketahui sering mengalami kemacetan, sehingga harus dihindari.
- Tiba-tiba kecelakaan mobil terjadi sepanjang 4-3, sehingga harus dihindari juga.
- Dll ...
Jadi mungkin kita bisa mempercepat pada rute 1-4-5, karena tidak ada kemacetan / kecelakaan, sehingga akan tiba di 5 lebih cepat.
Nah itu ide umum, dan saya belum memikirkan detail lebih lanjut.
Apakah ada algoritma untuk menyelesaikan masalah ini?
Jawaban:
Karena Anda membawa kemacetan ke dalam gambar, berhati-hatilah agar Anda tidak ditangkap oleh Paradox Braess . Jika semua orang memilih jalur optimal, itu menghasilkan waktu perjalanan yang lebih buruk untuk semua orang.
sumber
Ya: Dijkstra
Dijkstra bekerja dengan baik untuk situasi ini.
Anda hanya menggunakan waktu daripada jarak sebagai bobot masing-masing busur.
sumber
Iya. Algoritma Dijkstra akan menyelesaikan masalah ini.
Masalah dalam kasus Anda adalah bahwa Anda secara otomatis menganggap jalur terpendek sama dengan jarak yang ditempuh, padahal sebenarnya itu lebih tepat untuk BIAYA mengambil rute.
Jika satu jalur memiliki hambatan maka BIAYA harus lebih tinggi, dan algoritme masih berlaku.
sumber
Anda seharusnya hanya bisa mengganti jarak Anda dengan waktu antara node dan menyelesaikannya dengan cara yang sama.
sumber
Dijkstra
Seperti yang dikatakan sebelumnya, itu tidak hanya digunakan untuk jarak terdekat. Saya percaya animasi ini memberikan pemahaman yang baik tentang "kekuatan" (karena tidak ada kata yang lebih baik) dari Dijkstra:
sumber