İçeriğe atla
CodeItRaw
Graflar

Ders 1/4

Graf, düğümler ve onları birbirine bağlayan kenarlardan oluşur: şehirler ve yollar, sayfalar ve bağlantılar, bir labirentin hücreleri ve geçişleri. Ağaçtan farkı, kökü ve yönü olmamasıdır: bir düğüme birden çok yoldan varılabilir ve yollar döngü yapabilir.

graph = {"a": ["b", "c"], "b": ["d"], "c": ["d"], "d": []}
stack = ["a"]
seen = {"a"}
while stack:
node = stack.pop()
for nxt in graph[node]:
if nxt not in seen:
seen.add(nxt)
stack.append(nxt)
Grafı tutmanın en yaygın yolu komşuluk listesidir: her düğümün yanında komşuları. Gezmek için gidilecek düğümleri bir yığında bekletirsin; yığından çıkan düğümün görülmemiş komşuları yığına girer. Buna derinlemesine arama (DFS) denir: bir yolun sonuna kadar gider, sonra geri döner.

Izgara da bir graftır, yalnızca komşuluk listesi yazılmaz: bir hücrenin komşuları üstündeki, altındaki, solundaki ve sağındaki hücrelerdir. Labirentte duvarı takip eden bot da aslında grafı geziyordur.

Görevler

Görevler sırayla açılır. Hepsini çözünce sonraki ders açılır.

Bu dersin görevleri, önceki dersler bitince açılır. Anlatımı şimdiden okuyabilirsin.

  1. 01

    Veri Labirenti

    Sızma

  2. 02

    Yığınla Gezinti

    Kod Okuma · Çıktıyı Tahmin Et

Sırayı beklemeden çözmek istersen bütün problemler kilitsiz açık: Problemler listesi