Algoritma untuk menentukan rute tercepat?


17

Katakanlah kita pergi dari 1 ke 5. Rute terpendek adalah 1-4-3-5 (total: 60 km).

Grafik

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?


3
Apakah ini pekerjaan rumah? Bukankah ini hanya en.wikipedia.org/wiki/Travelling_salesman_problem untuk melintasi grafik berbobot?
StuperUser

9
@StuperUser: Tidak, TSP adalah sirkuit dari semua node tanpa duplikat. Dalam contoh kasus, misalnya, tidak perlu mengenai simpul 2.
David Thornley

2
@ DavidThornley, begitu. Jadi Dijkstra adalah untuk rute terpendek pada grafik berbobot? Dan TSP adalah traversal mengunjungi setiap node?
StuperUser

1
@Stuper: Lintasan terpendek, ya
BlueRaja - Danny Pflughoeft

2
@StuperUser, hanya FYI, TSP adalah masalah NP-Complete yang kuat tanpa solusi yang dapat dijalankan dalam waktu polinomial. ... Jadi sekarang kamu tahu.
riwalk

Jawaban:


5

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.


49

Ya: Dijkstra

Dijkstra bekerja dengan baik untuk situasi ini.
Anda hanya menggunakan waktu daripada jarak sebagai bobot masing-masing busur.


9
Biasanya 'jarak' di Dijkstra akan ditimbang untuk semua hal, biaya / tol, preferensi jalan bebas hambatan, batas kecepatan - menggunakan jarak hanya merupakan pendekatan sederhana yang sederhana. Inilah yang membuat algoritme begitu pintar
Martin Beckett

6
Meskipun Dijsktra akan melakukannya, saya biasanya akan memilih A * untuk pekerjaan penelusuran jalan yang serius; heuristik akan banyak membantu.
Mircea Chirea

6
Tautan: Algoritma pencarian * . Ini merupakan perpanjangan dari metode Dijkstra.
mgkrebbs

Selama ada heuristik yang berlaku, A * akan lebih unggul dari Dijkstra (dalam hal kinerja).
bummzack

Heuristik yang dapat diterima akan agak sulit untuk ditemukan di sini mengingat kita mempertimbangkan banyak faktor (seperti kemacetan lalu lintas).
pwny

16

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.


Ya maaf jika saya tidak menggunakan kata-kata yang tepat. Yang saya maksud adalah 'rute yang paling nyaman' (biaya minimum)
anta40

11

Anda seharusnya hanya bisa mengganti jarak Anda dengan waktu antara node dan menyelesaikannya dengan cara yang sama.


10

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:

Dijkstra

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.