Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Struktur Data & Algoritma

Pelajaran 13 dari 17

Graf dan strategi algoritma

Graf: daftar ketetanggaan, BFS, dan DFS

Setelah pelajaran ini kamu bisa menyimpan graf sebagai daftar ketetanggaan, menghitung jumlah langkah terpendek dengan BFS, dan menghitung komponen dengan DFS.

±14 menitDiperiksa 1 Okt 2026

Materi

Graf terdiri atas simpul dan sisi yang menghubungkan dua simpul. Halte dan rute bus, akun dan hubungan pertemanan, serta halaman dan tautannya adalah graf. Sisi berarah hanya bisa dilalui satu arah; sisi tak berarah bisa dua arah. Di Python graf paling mudah disimpan sebagai daftar ketetanggaan: dict yang memetakan setiap simpul ke list tetangganya. Graf tak berarah menulis setiap sisi dua kali, sekali di tiap ujungnya.

Penelusuran melebar (breadth-first search, BFS) memakai antrean. Mulai dari simpul awal, kunjungi semua tetangganya, lalu tetangga dari tetangga, tingkat demi tingkat. Karena simpul dikunjungi menurut tingkat, BFS memberi jumlah sisi paling sedikit dari simpul awal ke setiap simpul lain pada graf tanpa bobot. Graf yang sisinya berbobot, seperti jarak dalam kilometer, butuh algoritma Dijkstra yang dibahas di kelas Riset Operasi Dasar.

from collections import deque

halte = {"Terminal": ["Pasar", "RSUD"], "Pasar": ["Alun"], "RSUD": ["Alun"], "Alun": []}

def terjangkau(graf, awal):
    dikunjungi = {awal}
    antre = deque([awal])
    while antre:
        v = antre.popleft()
        for w in graf[v]:
            if w not in dikunjungi:
                dikunjungi.add(w)
                antre.append(w)
    return dikunjungi

Penelusuran mendalam (depth-first search, DFS) memakai tumpukan, atau rekursi yang memakai tumpukan panggilan. DFS mengikuti satu jalur sejauh mungkin sebelum mundur dan mencoba cabang lain. Urutannya tidak menjamin jalur terpendek, tetapi cukup untuk pertanyaan terjangkau atau tidak, dan untuk menghitung komponen: kelompok simpul yang saling terhubung. Biaya kedua penelusuran O(V + E), sebanding dengan banyaknya simpul ditambah sisi.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

BFS ditulis tanpa himpunan dikunjungi lalu dijalankan pada graf {"A": ["B"], "B": ["A"]} mulai dari A. Apa yang terjadi?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke