En hızlı rotayı belirlemek için algoritma?


17

Diyelim ki 1'den 5'e gidiyoruz. En kısa rota 1-4-3-5 (toplam: 60 km) olacak.

grafik

Bunu yapmak için Dijkstra'nın algoritmasını kullanabiliriz.

Şimdi sorun, trafik sıkışıklığı veya diğer faktörler nedeniyle en kısa yol her zaman en hızlı rota değildir.

Örneğin:

  • 1-2 sık trafik sıkışıklığı olduğu bilinmektedir, bu nedenle kaçınılmalıdır.
  • Aniden 4-3 boyunca bir trafik kazası olur, bu yüzden de kaçınılmalıdır.
  • Vb...

Bu yüzden muhtemelen trafik sıkışıklığı / kazası olmadığı için 1-4-5 rotasını hızlandırabiliriz, bu yüzden 5 daha hızlı ulaşacaktır.

Genel fikir bu ve henüz daha fazla ayrıntı düşünmedim.

Bu sorunu çözmek için herhangi bir algoritma var mı?


3
Bu ödev mi? Bu sadece ağırlıklı bir grafikte gezinmek için en.wikipedia.org/wiki/Travelling_salesman_problem değil mi?
StuperUser

9
@StuperUser: Hayır, TSP yinelenmeyen tüm düğümlerin bir devresidir. Örnek durumda, örneğin düğüm 2'ye basmaya gerek yoktur.
David Thornley

2
@DavidThornley anlıyorum. Dijkstra ağırlıklı bir grafikte en kısa rota için mi? Ve TSP her düğümü gezmeye mi gidiyor?
StuperUser

1
@Stuper: En kısa geçiş, evet
BlueRaja - Danny Pflughoeft

2
@StuperUser, sadece FYI, TSP, polinom zamanında çalıştırılabilecek hiçbir çözümü olmayan güçlü bir NP-Complete problemidir. ... Yani şimdi biliyorsun.
riwalk

Yanıtlar:


5

Resme tıkanıklık getirdiğiniz için, Braess'in Paradoksu tarafından yakalanmamaya dikkat edin . Herkes en uygun yolu seçerse, herkes için daha kötü seyahat süresi sağlar.


49

Evet: Dijkstra

Dijkstra da bu durum için çalışıyor.
Her yayın ağırlığı olarak mesafe yerine zamanı kullanırsınız.


9
Tipik olarak Dijkstra'daki 'mesafe' her türlü şey, maliyet / ücret, otoyol tercihi, hız sınırları için ağırlıklandırılır - sadece mesafeyi kullanmak sadece en basit niave yaklaşımdır. Algoritmayı bu kadar zeki yapan şey budur
Martin Beckett

6
Dijsktra yapsa da, ciddi yol bulma çalışmaları için genellikle A * 'yı seçerdim; sezgisel tarama çok yardımcı olacaktır.
Mircea Chirea

6
Bağlantı: A * arama algoritması . Dijkstra'nın yönteminin bir uzantısı.
mgkrebbs

Uygulanabilir bir sezgisel tarama olduğu sürece, A * Dijkstra'nınkinden daha üstün olacaktır (performans açısından).
bummzack

Kabul edilebilir bir sezgisel tarama, birçok faktörü (trafik sıkışıklığı gibi) hesaba kattığımızı düşünerek burada bulmak biraz zor olabilir.
pwny

16

Evet. Dijkstra'nın algoritması bu sorunu çözecektir.

Sizin durumunuzdaki sorun, otomatik olarak en kısa yolun, kat edilen mesafeye eşit olduğunu varsaymanızdır, aslında bir rotayı almanın COST değerine daha uygun bir şekilde eşittir.

Bir yolun birlikte gösterimi varsa, COST değeri daha yüksek olmalıdır ve algoritma yine de geçerlidir.


Evet, doğru ifadeyi kullanmadıysam özür dilerim. Demek istediğim 'en uygun rota' (en düşük maliyet)
anta40 17

11

Sadece mesafenizi düğümler arasındaki zamanla değiştirebilmeli ve aynı şekilde çözebilmelisiniz.


10

Dijkstra

Daha önce de belirtildiği gibi, sadece en kısa mesafe için kullanılmaz. Bu animasyonun Dijkstra'nın "gücü" (daha iyi bir kelime olmaması nedeniyle) hakkında iyi bir anlayış verdiğine inanıyorum:

Dijkstra

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.