Tonton videonya (dua bagian), lalu kerjakan tiga latihan: Dijkstra langkah demi langkah, penjadwal lab, dan pembanding solusi. Semua kota, jarak, dan kegiatan fiktif. Suara bisa dimatikan; teks selalu tampil di layar.
Peragaan langkah demi langkah untuk dicoba sendiri di komputer atau HP.
Pilih satu jawaban. Kalau salah, kamu dapat petunjuk, lalu coba lagi.
Tiga latihan. Jawaban salah memberi petunjuk. Kemajuan tersimpan di perangkat ini.
Kemajuan tersimpan di perangkat ini saja.
Tujuan (F12.2, elemen BK dan AP, Fase F): murid memilih dan menerapkan solusi terbaik dan paling efisien dengan struktur data yang tepat, misalnya rute terpendek atau penjadwalan. Target minimum: menelusuri Dijkstra dengan tangan pada graph kecil, lalu memakai program atau fungsi library yang tersedia. Target lanjutan: mengimplementasikan Dijkstra sendiri.
Program contoh (Python standar, tanpa instalasi tambahan):
import heapq
def dijkstra(graf, asal):
jarak = {k: float("inf") for k in graf}
dari = {}
jarak[asal] = 0
antre = [(0, asal)]
while antre:
d, kota = heapq.heappop(antre)
if d > jarak[kota]:
continue
for tetangga, w in graf[kota].items():
baru = d + w
if baru < jarak[tetangga]:
jarak[tetangga] = baru
dari[tetangga] = kota
heapq.heappush(antre, (baru, tetangga))
return jarak, dari
graf = {"A": {"B": 2, "C": 5}, "B": {"A": 2, "C": 2, "D": 6},
"C": {"A": 5, "B": 2, "D": 2, "E": 7},
"D": {"B": 6, "C": 2, "E": 3}, "E": {"C": 7, "D": 3}}
print(dijkstra(graf, "A")) # E = 9, rute A-B-C-D-E
Catatan: Dijkstra hanya benar untuk bobot yang tidak negatif. Aturan greedy "selesai paling awal" terbukti memberi jumlah kegiatan terbanyak; aturan greedy lain belum tentu.