Algoritme Dijkstra: Menemukan Jalur Terpendek

Representasi Visual Graf Berbobot untuk Dijkstra A B C D E 5 3 2 6 10 1

Apa Itu Algoritme Dijkstra?

Algoritme Dijkstra adalah salah satu algoritma graf yang paling fundamental dan banyak digunakan dalam ilmu komputer dan teori graf. Dikembangkan oleh ilmuwan komputer Belanda Edsger W. Dijkstra pada tahun 1956, algoritma ini dirancang khusus untuk menemukan jalur terpendek (shortest path) antara sebuah node awal (sumber) ke semua node lain dalam sebuah graf berbobot (weighted graph).

Kunci utama dari algoritme ini adalah bahwa semua bobot tepi (weight of the edges) harus bernilai non-negatif. Jika graf mengandung bobot negatif, maka algoritme yang lebih sesuai adalah algoritme Bellman-Ford.

Prinsip Kerja Algoritme Dijkstra

Dijkstra bekerja dengan pendekatan "greedy", yaitu selalu memilih solusi yang terlihat paling optimal pada saat itu. Algoritma ini mempertahankan sekumpulan node yang sudah dikunjungi (diketahui jarak terpendeknya dari sumber) dan secara iteratif memperbarui perkiraan jarak ke node yang belum dikunjungi.

Langkah-langkah Utama:

  1. Inisialisasi: Tetapkan jarak dari node sumber ke dirinya sendiri adalah 0, dan jarak ke semua node lain adalah tak terhingga (infinity).
  2. Penandaan: Semua node ditandai belum dikunjungi, kecuali node sumber.
  3. Iterasi: Pilih node U yang belum dikunjungi dan memiliki jarak terpendek saat ini dari sumber.
  4. Relaksasi (Relaxation): Untuk setiap tetangga V dari node U, hitung jarak baru melalui U. Jika jarak baru ini lebih pendek daripada jarak V yang tercatat saat ini, perbarui jarak V dan catat U sebagai prekursornya.
  5. Penandaan Selesai: Tandai node U sebagai telah dikunjungi.
  6. Pengulangan: Ulangi langkah 3 hingga 5 sampai semua node telah dikunjungi, atau sampai node tujuan telah dikunjungi.

Penggunaan struktur data Priority Queue (Antrian Prioritas) sangat penting untuk efisiensi algoritme ini, karena memungkinkan pemilihan node dengan jarak terpendek berikutnya secara cepat.

Contoh Implementasi Konseptual

Misalkan kita ingin mencari jalur terpendek dari Node A ke Node D pada graf di atas. Bobot merepresentasikan waktu atau biaya perjalanan.

Jalur terpendek dari A ke D adalah A → B → C → D dengan total bobot 10.

Kompleksitas dan Kegunaan

Kompleksitas Waktu

Kompleksitas waktu algoritme Dijkstra sangat bergantung pada struktur data yang digunakan untuk mengimplementasikan antrian prioritas:

Aplikasi Nyata

Algoritme Dijkstra memiliki banyak aplikasi praktis:

Meskipun sangat kuat untuk graf dengan bobot non-negatif, penting untuk selalu mengingat batasan ini saat memilih algoritme pencarian jalur terpendek.

🏠 Homepage