Algoritma Dijkstra: Cara Kerja, Contoh Soal dan Implementasi

algoritma dijkstra

Algoritma Dijkstra adalah salah satu algoritma pencarian jalur terpendek (shortest path algorithm) yang paling banyak digunakan dalam ilmu komputer dan pemrograman. Algoritma ini bekerja dengan menghitung jarak minimum dari satu simpul ke simpul lainnya pada graf berbobot sehingga mampu menemukan rute paling efisien secara sistematis.

Karena kemampuannya dalam menentukan jalur terpendek, algoritma Dijkstra banyak digunakan pada aplikasi navigasi GPS, jaringan komputer, sistem transportasi, hingga optimasi logistik. Pada artikel ini, kita akan membahas pengertian algoritma Dijkstra, cara kerja, contoh soal, implementasi, kelebihan, kekurangan, dan penerapannya dalam dunia nyata.

Apa itu Algoritma Dijkstra?

Algoritma Dijkstra adalah algoritma pencarian jalur terpendek (shortest path algorithm) yang digunakan untuk menentukan jarak minimum dari satu simpul sumber ke seluruh simpul lain dalam graf berbobot yang memiliki bobot non-negatif. Algoritma ini diperkenalkan oleh ilmuwan komputer Belanda, Edsger W. Dijkstra, pada tahun 1956 dan hingga saat ini masih menjadi salah satu algoritma paling penting dalam teori graf.

Algoritma ini menggunakan pendekatan greedy dengan selalu memilih simpul yang memiliki jarak terkecil yang belum diproses. Melalui proses tersebut, algoritma Dijkstra mampu menemukan jalur terpendek secara efisien dan banyak digunakan pada sistem navigasi, routing jaringan komputer, serta optimasi rute transportasi.

Baca Juga: Algoritma Greedy: Konsep, Karakteristik dan Contohnya 

Pentingnya Algoritma Dijkstra dalam Pemrograman

Algoritma ini memiliki peran penting dalam berbagai bidang pemrograman. Dalam aplikasi yang melibatkan pemetaan jalan, seperti sistem navigasi, algoritma ini digunakan untuk mencari jalur terpendek antara dua lokasi. Selain itu, Algoritma ini juga digunakan dalam jaringan komputer untuk menemukan jalur terpendek antara dua titik dalam jaringan.

Langkah-langkah Algoritma Dijkstra

  1. Tentukan titik awal dan titik tujuan yang ingin dicari jalur terpendeknya.
  2. Inisialisasi jarak awal untuk semua simpul dalam graf dengan nilai tak hingga, kecuali titik awal yang diatur jaraknya menjadi 0.
  3. Tandai titik awal sebagai simpul saat ini.
  4. Untuk setiap tetangga simpul saat ini, hitung jarak baru yang lebih pendek melalui simpul saat ini. Jika jarak baru lebih pendek dari jarak sebelumnya, perbarui jarak tersebut.
  5. Tandai simpul saat ini sebagai dikunjungi.
  6. Jika titik tujuan telah dikunjungi atau tidak ada simpul yang dapat dikunjungi lagi, selesaikan algoritma. Jika tidak, pilih simpul dengan jarak terpendek yang belum dikunjungi sebagai simpul saat ini dan lanjutkan ke langkah 4.

Baca Juga: Breadth First Search: Cara Kerja, Contoh dan Kode Program

Contoh Soal Algoritma  Dijkstra

Soal 1

Misalkan terdapat sebuah graf dengan simpul-simpul A, B, C, D, E dan F, serta bobot-bobot jarak antar simpul sebagai berikut:

  • A ke B: 4
  • A ke C: 2
  • B ke D: 5
  • C ke D: 1
  • C ke E: 6
  • D ke E: 3
  • D ke F: 2
  • E ke F: 4
  1. Berdasarkan graf di atas, tentukan jalur terpendek dari simpul A ke simpul F menggunakan Algoritma Dijkstra.

Langkah-langkahnya adalah sebagai berikut:

  • Langkah 1: Inisialisasi jarak awal untuk semua simpul dalam graf dengan nilai tak hingga, kecuali simpul awal yang diatur jaraknya menjadi 0. Jadi, kita memiliki jarak awal: A(0), B(∞), C(∞), D(∞), E(∞), F(∞).
  • Langkah 2: Pilih simpul awal, yaitu A.
  • Langkah 3: Hitung jarak baru melalui A ke tetangga-tetangganya: B(4) dan C(2).
  • Langkah 4: Tandai simpul A sebagai dikunjungi.
  • Langkah 5: Pilih simpul dengan jarak terpendek yang belum dikunjungi, yaitu C.
  • Langkah 6: Hitung jarak baru melalui C ke tetangga-tetangganya: D(3) dan E(8).
  • Langkah 7: Tandai simpul C sebagai dikunjungi.
  • Langkah 8: Pilih simpul selanjutnya dengan jarak terpendek yang belum dikunjungi, yaitu D.
  • Langkah 9: Hitung jarak baru melalui D ke tetangga-tetangganya: E(6) dan F(5).
  • Langkah 10: Tandai simpul D sebagai dikunjungi.
  • Langkah 11: Pilih simpul selanjutnya dengan jarak terpendek yang belum dikunjungi, yaitu F.
  • Langkah 12: Selesaikan algoritma, karena telah mencapai simpul tujuan F.

Dari penerapan Algoritma Dijkstra di atas, kita dapat menemukan jalur terpendek dari simpul A ke simpul F dengan jarak total 7 melalui simpul-simpul: A → C → D → F.

  1. Bagaimana hasilnya jika ada penambahan bobot jarak antara simpul E dan F menjadi 1?

Jika ada penambahan bobot jarak antara simpul E dan F menjadi 1, maka hasilnya akan berbeda. Dalam kasus ini, jalur terpendek akan menjadi A → C → D → E → F dengan jarak total 6, karena jalur ini memiliki jarak yang lebih pendek dibandingkan dengan jalur sebelumnya.

Baca Juga: Algoritma A Star (A*): Konsep, Cara Kerja, dan Kelebihan 

Soal 2

Sebagai contoh hitunglah Jarak terdekat dari V1 ke V7 pada gambar berikut ini.

contoh soal Algoritma Dijkstra

Hasil setiap stepnya dapat dilihat pada tabel berikut ini.

contoh soal dan jawaban Algoritma Dijkstra

Dengan demikian jarak terpendek dari V1 ke V7 adalah 16 dengan jalur V1->V2->V3->V5->V6->V7

Keuntungan dan Keterbatasan Algoritma Dijkstra

Keuntungan Algoritma Dijkstra

  • Algoritma Dijkstra dapat menemukan jalur terpendek dari satu titik ke semua simpul lain dalam graf.
  • Algoritma ini memiliki kompleksitas waktu yang efisien jika diimplementasikan dengan tepat.
  • Dapat digunakan dalam berbagai aplikasi yang memerlukan pencarian jalur terpendek, seperti sistem navigasi dan optimasi rute.

Keterbatasan Algoritma Dijkstra

  • Algoritma Dijkstra tidak dapat menghandle bobot negatif dalam graf. Jika terdapat bobot negatif, algoritma ini tidak akan memberikan hasil yang benar.
  • Algoritma ini memiliki kompleksitas waktu yang tinggi jika digunakan pada graf dengan jumlah simpul dan tepi yang sangat besar.

Baca Juga: Algoritma Backtracking: Cara Kerja dan Implementasinya

Algoritma Dijkstra vs. Algoritma Lainnya

Perbandingan Algoritma Dijkstra dengan Algoritma Breadth-First Search (BFS)

Algoritma Dijkstra dan BFS (Breadth-First Search) keduanya digunakan untuk pencarian jalur, tetapi dengan tujuan yang berbeda. Dijkstra mencari jalur terpendek dengan mempertimbangkan bobot, sedangkan BFS hanya mencari jalur dengan jumlah langkah terkecil tanpa mempertimbangkan bobot. Dalam beberapa kasus, BFS mungkin lebih efisien jika bobot tidak relevan.

Perbandingan Algoritma Dijkstra dengan Algoritma A (A-Star)

Algoritma Dijkstra dan A* (A-Star) keduanya digunakan untuk mencari jalur terpendek, tetapi A* adalah variasi yang lebih canggih. A* menggunakan fungsi heuristik untuk mempercepat pencarian jalur terpendek dengan memprioritaskan simpul-simpul yang kemungkinan besar menuju tujuan. Dalam kasus di mana kita memiliki informasi heuristik yang baik, A* dapat memberikan kinerja yang lebih baik daripada Dijkstra.

Penerapan Algoritma Dijkstra dalam Kehidupan Sehari-hari

Algoritma ini memiliki berbagai penerapan praktis dalam kehidupan sehari-hari, terutama dalam bidang transportasi dan navigasi. Beberapa contoh penggunaan algoritma ini antara lain:

  1. Sistem Navigasi: Dalam aplikasi peta digital atau GPS, Algoritma ini digunakan untuk mencari jalur terpendek dari lokasi awal ke tujuan dengan mempertimbangkan kondisi lalu lintas atau jarak tempuh.
  2. Optimasi Rute Transportasi: Dalam industri transportasi, Algoritma ini digunakan untuk merencanakan jadwal penerbangan, pengiriman barang, atau rute perjalanan kendaraan bermotor dengan tujuan meminimalkan waktu perjalanan atau biaya.
  3. Perencanaan Jaringan Komputer: Dalam jaringan komputer, Algoritma ini digunakan dalam protokol routing seperti OSPF (Open Shortest Path First) untuk menghitung jalur terpendek antara router-routernya, memungkinkan pengiriman data yang lebih efisien.
  4. Logistik dan Pengiriman: Dalam industri logistik, Algoritma ini digunakan untuk mengoptimalkan rute pengiriman barang, mengurangi waktu dan biaya transportasi.

Baca Juga: Algoritma Adalah: Jenis, Fungsi dan Contoh

Kesimpulan

Pada pembahasan di atas dapat disimpulkan bahwa Algoritma Dijkstra adalah algoritma pencarian jalur terpendek yang digunakan untuk menentukan jarak minimum antara simpul dalam graf berbobot non-negatif. Dengan pendekatan greedy, algoritma ini mampu menemukan rute paling efisien dan banyak diterapkan pada sistem navigasi, jaringan komputer, logistik, serta berbagai aplikasi optimasi lainnya.

Meskipun memiliki keterbatasan dalam menangani bobot negatif, algoritma Dijkstra tetap menjadi salah satu algoritma paling penting dalam ilmu komputer karena efisiensi dan kemudahan implementasinya. Dengan memahami cara kerja, contoh soal, dan penerapannya, programmer dapat memanfaatkan algoritma ini untuk menyelesaikan berbagai masalah pencarian jalur secara efektif.

Artikel ini merupakan bagian dari seri Algoritma KantinIT.com. Jika artikel ini bermanfaat, jangan lupa bagikan ke media sosial atau ke teman kamu.

Subscribe to our Newsletter

Subscribe to our email newsletter to get the latest posts delivered right to your email.
Pure inspiration, zero spam ✨