Bölüm 14 · Simülasyon

Dijkstra Algoritması Simülatörü

← Bölüm 14

Örnek ağırlıklı çizge yüklendi. Düğümleri sürükleyin ya da Dijkstra'yı çalıştırın.

Düğüm0
Kenar0
Kesinleşen düğüm0
Gevşetme0

Güncel adım

—

Seçilen en kısa yol

—

Min-öncelikli kuyruk

Uzaklık / öncül tablosu

DüğümUzaklıkÖncülDurum

Dijkstra Algoritması Simülatörü

Dijkstra algoritması, kenar ağırlıkları negatif olmayan bir çizgede tek bir kaynak düğümden en kısa yolları bulur. Bu simülatör yönsüz ağırlıklı bir çizge, geçici uzaklıklar, öncüller ve bir min-öncelikli kuyruk kullanır.

Kullanım

  • Düğüm ekleyin ya da silin; iki uç ve bir ağırlık (0–99) seçip Ekle / Güncelle ya da Kenarı Sil'i kullanın. Çizimi düzenlemek için düğümleri sürükleyin.
  • Bir kaynak seçip Çalıştır'a basın: kesinleşen her düğüm ve her gevşetme adım adım gösterilir; öncelikli kuyruk ile uzaklık / öncül tablosu her adımdan sonra güncellenir.
  • Son çalıştırmada bulunan en kısa yolu vurgulamak için bir hedef seçip Hedefe Yol'a basın.
  • Yükle örnek çizgeyi, Rastgele rastgele bir çizgeyi yükler; Temizle çizgeyi boşaltır, İptal çalışan animasyonu durdurur.

Dijkstra kavramları

  • Açgözlü kesinleştirme: henüz kesinleşmemiş düğümler arasında geçici uzaklığı en küçük olan kesinleşir. Ağırlıklar negatif olmadığından bu uzaklık artık iyileşemez.
  • Gevşetme: ağırlığı w olan (u, v) kenarı için dist[u] + w < dist[v] ise dist[v] = dist[u] + w ve prev[v] = u yapılır.
  • Yolun yeniden kurulması: hedeften geriye doğru öncül bağlantıları izlenerek en kısa yol yeniden kurulur.
  • Ulaşılamayan düğümler: kaynağın bileşeni dışındaki bir düğümün uzaklığı ∞ kalır ve ona giden yol yoktur.

Dijkstra ne zaman uygulanır

KoşulSonuç
Tüm kenar ağırlıkları negatif değilDijkstra doğru sonuç verir.
Negatif ağırlıklı kenar varBellman–Ford ya da uygun başka bir algoritma kullanılır.
Tüm ağırlıklar eşitBFS yeterlidir.
Tüm düğüm çiftleri için en kısa yollar gerekliHer kaynaktan ayrı çalıştırılır ya da tüm çiftler için bir algoritma kullanılır.

İkili heap ile çalışma süresi O((V + E) log V) olur.