CodeBlanks Logo Icon CodeBlanks

Öncelikli kuyruk

Dijkstra'nın öncelikli kuyrukla verimli çalıştığını öğrenirsin.

Öncelikli kuyruk

Dijkstra, her adımda en küçük mesafeye sahip ziyaret edilmemiş düğümü seçer. Bu seçim, öncelikli kuyrukla hızlanır.

Basit uygulamada doğrusal arama da yeterlidir: tüm ziyaret edilmemiş düğüümü tarayıp en küçük dist'i buluruz.

Başlangıç durumu

Tüm düğümlerin mesafesi inf olarak başlatılır, yalnızca dist[src] = 0 olur. Ziyaret dizisi False ile dolar.

Bu başlangıç durumu, algoritmanın tek kaynaktan adım adım yayılmasını sağlar.

Uygulama init_dist fonksiyonu

init_dist(n, src) yaz. float('inf') ile dolu dizi döndür, dist[src] = 0 yap. print(init_dist(4, 0)) ile yazdır.

Başlangıç kodu

solution.py
def init_dist(n, src):
    # Başlangıç mesafe dizisini döndür

Örnek çözüm

solution.py
def init_dist(n, src):
    # Başlangıç mesafe dizisini döndür
    dist = [float('inf')] * n
    dist[src] = 0
    return dist
print(init_dist(4, 0))

Beklenen çıktı

[0, inf, inf, inf]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 başlangıç mesafesi

Soru
dist[src] = ____
Cevap
dist[src] = 0

Açıklama: 0 doğru.

2 Başlangıçta dist[src] kaç olur?

  • inf
  • 0 Doğru cevap
  • 1
  • -1

Açıklama: dist[src] = 0 başlangıç değeridir.

3 Öncelikli kuyruk: kavramları eşleştir

Kavram Anlamı
dist[src] 0
dist[i] inf
visited False
n Düğüm sayısı

İleri seviye bölümündeki tüm dersler