CodeBlanks Logo Icon CodeBlanks

Özet - Prim

Prim uygulayıp MST ağırlığını yazdıran mini görev yaparsın.

Özet - Prim

Bu grupta tek düğümden başlayarak MST bulan Prim algoritmasını öğrendin. Komşuluk matrisi, min_key ve ziyaret kümesi birleşince çözüm oluşur.

Şimdi tüm parçaları bir araya getiren bir fonksiyon yazacaksın. Bu özet, grubun kavramlarını tek bir kodda birleştirir.

Uygulama mst_total fonksiyonu

mst_total(graph) yaz. min_key hazır; her tür en düşük düğümü seç, komşuları güncelle, topla. print(mst_total(init_graph())) ile 19 yazdır.

Başlangıç kodu

solution.py
def init_graph():
    # Komşuluk matrisini döndür
    return [[0, 10, 6, 5], [10, 0, 0, 15], [6, 0, 0, 4], [5, 15, 4, 0]]
def min_key(keys, visited):
    # En küçük keys'e sahip ziyaret edilmemiş indeksi bul
    best = float('inf')
    idx = -1
    for i in range(len(keys)):
        if not visited[i] and keys[i] < best:
            best = keys[i]
            idx = i
    return idx
def mst_total(graph):
    # MST toplam ağırlığını bul

Örnek çözüm

solution.py
def init_graph():
    # Komşuluk matrisini döndür
    return [[0, 10, 6, 5], [10, 0, 0, 15], [6, 0, 0, 4], [5, 15, 4, 0]]
def min_key(keys, visited):
    # En küçük keys'e sahip ziyaret edilmemiş indeksi bul
    best = float('inf')
    idx = -1
    for i in range(len(keys)):
        if not visited[i] and keys[i] < best:
            best = keys[i]
            idx = i
    return idx
def mst_total(graph):
    # MST toplam ağırlığını bul
    n = len(graph)
    keys = [float('inf')] * n
    keys[0] = 0
    visited = [False] * n
    total = 0
    for _ in range(n):
        u = min_key(keys, visited)
        visited[u] = True
        total += keys[u]
        for v in range(n):
            if graph[u][v] and not visited[v] and graph[u][v] < keys[v]:
                keys[v] = graph[u][v]
    return total
print(mst_total(init_graph()))

Beklenen çıktı

19

Soru ve cevaplar

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

1 Prim ile Kruskal'ın ortak çıktısı nedir?

  • Kenar listesi
  • Düğüm sırası
  • Döngü sayısı
  • MST ağırlığı Doğru cevap

Açıklama: Her ikisi de MST ağırlığını döndürür.

2 visited güncelleme

Soru
visited[____] = True
Cevap
visited[u] = True

Açıklama: u doğru.

3 Özet - Prim: kavramları eşleştir

Kavram Anlamı
init_graph Matris
min_key Seçim
prim MST
keys Maliyet

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