CodeBlanks Logo Icon CodeBlanks

Komşuluk listesi

Her düğümün komşularını listede tutan gösterimi öğrenirsin.

Komşuluk listesi

Komşuluk listesi, her düğümün komşularını bir listede tutar. graph = {'A': ['B', 'C'], 'B': ['A']}.

Bellek O(V + E): her düğüm ve her kenar bir kez tutulur. Seyrek graph'larda verimlidir.

Python'da dict + list ile uygulanır. Düğüm ekleme O(1), kenar ekleme O(1).

Kenar ekleme fonksiyonu

Kenar eklerken iki düğüm de graph'ta yoksa önce boş liste ile eklenir. Sonra her düğüme diğeri komşu olarak eklenir (yönsüz graph'ta).

add_edge(graph, a, b): graph.setdefault(a, []).append(b) ve graph.setdefault(b, []).append(a). İki tarafa da ekleme yapılır.

Yönlü graph'ta sadece tek yön eklenir; yani sadece bir tarafa append yapılır, diğeri atlanır.

Uygulama Kenar ekle

add_edge(graph, a, b) yaz. Yönsüz: iki tarafa da ekle. g = create_graph(); add_edge(g, 'a', 'b'); print(g) ile {'a': ['b'], 'b': ['a']} yazdır.

Başlangıç kodu

solution.py
def add_edge(graph, a, b):
    # Yönsüz kenar ekle

Örnek çözüm

solution.py
def create_graph():
    return {}
def add_edge(graph, a, b):
    # Yönsüz kenar ekle
    graph.setdefault(a, []).append(b)
    graph.setdefault(b, []).append(a)
g = create_graph()
add_edge(g, 'a', 'b')
print(g)

Beklenen çıktı

{'a': ['b'], 'b': ['a']}

Soru ve cevaplar

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

1 Kenar ekleme

Soru
graph[a].append(____)
Cevap
graph[a].append(b)

Açıklama: b doğru.

2 Komşuluk listesi: kavramları eşleştir

Kavram Anlamı
Komşuluk listesi O(V+E)
Kenar ekle O(1)
Seyrek graph Verimli
Yönsüz İki yön

3 Komşuluk listesi belleği nedir?

  • O(V^2)
  • O(E)
  • O(V + E) Doğru cevap
  • O(V)

Açıklama: O(V + E)

Orta seviye bölümündeki tüm dersler