Ringkasan
Makalah ini membahas tentang studi dan implementasi algoritma Bellman-Ford dalam
menangani masalah lintasan terpendek (shortest path) pada suatu graf. Lintasan terpendek
merupakan salah satu dari masalah yang dapat diselesaikan dengan graf. Jika diberikan
sebuah graf berbobot, penanganan masalah lintasan terpendek adalah bagaimana kita
mencari sebuah jalur pada graf yang meminimalkan jumlah bobot pembentuk jalur tersebut.
Algoritma Bellman-Ford memiliki spesifikasi penyelesaian masalah, kompleksitas waktu
algoritma, serta jenis masalah, kelemahannya, dan kelebihannya sendiri.
Kata kunci: Algoritma Bellman-Ford, jalur terpendek (shortest path), kompleksitas waktu
algoritma (running time).
1. Pendahuluan
Graf adalah kumpulan dari titik (node) dan garis dimana pasangan-pasangan titik (node)
tersebut dihubungkan oleh segmen garis. Node ini biasa disebut simpul (verteks) dan
segmen garis disebut ruas/sisi (edge).
Simpul dan ruas dalam graf dapat diperluas dengan penambahan informasi. Sebagai
contoh, simpul bisa diberi nomor atau label dan ruas dapat diberi nilai juga. Perluasan
dengan pemberian informasi ini sangat berguna dalam penggunaan graf untuk banyak
aplikasi komputer. Contoh, graf dengan kota sebagai simpul (vertex/node) dan jalan yang
menghubungkan setiap kotanya sebagai sisi (edge) dan bobotnya (weight)
merepresentasikan jarak yang ditempuh diantara kota-kota tersebut (atau biaya yang
dikeluarkan dalam perjalanan tersebut). Dalam beberapa model persoalan dimungkinkan
bahwa bobot dari suatu ruas/sisi bernilai negatif. Misalkan simpul merepesentasikan
bandara, sisi mereprentasikan penerbangan yang memungkinkan, dan bobot dari setiap
sisi adalah biaya yang dikeluarkan dalam penerbangan tersebut. Untuk suatu kasus
dimana seseorang akan dibayar untuk menempuh rute tertentu oleh suatu biro
penerbangan, maka bobotnya akan bernilai negatif.
Dalam kehidupan sehari-hari maupun dalam bidang akademis banyak persoalan yang
dimodelkan dengan graf. Graf dipakai untuk membantu pemecahan masalah. Dari model
graf yang dibuat, suatu masalah dapat dipahami menjadi lebih mudah. Untuk kemudian
diturunkan metode pemecahannya.
Lintasan terpendek merupakan salah satu dari masalah yang dapat diselesaikan
dengan graf. Jika diberikan sebuah graf berbobot, masalah lintasan terpendek adalah
1
Menangani Masalah Lintasan Terpendek Menggunakan Algoritma Bellman-Ford
Agustus 2016
bagaimana kita mencari sebuah jalur pada graf yang meminimalkan jumlah bobot sisi
pembentuk jalur tersebut.
2. Algoritma Bellman-Ford
Algoritma Bellman-Ford menghitung jarak terpendek (dari satu sumber) pada sebuah
graf berbobot. Maksudnya dari satu sumber ialah bahwa ia menghitung semua jarak
terpendek yang berawal dari satu titik (node). Algoritma Dijkstra dapat lebih cepat mencari
hal yang sama dengan syarat tidak ada sisi (edge) yang berbobot negatif. Maka algoritma
Bellman-Ford hanya digunakan jika ada sisi berbobot negatif. Munculnya algoritma ini
cukup membantu jika bobot dari suatu graf bernilai negatif.
BELLMAN-FORD (G, w, s)
1. INITIALIZE-SINGLE-SOURCE (G, s)
2. for each vertex i = 1 to V[G] - 1 do
3. for each edge (u, v) in E[G] do
4. RELAX (u, v, w)
5. For each edge (u, v) in E[G] do
6. if d[u] + w(u, v) < d[v] then
7. return FALSE
8. return TRUE
2
Menangani Masalah Lintasan Terpendek Menggunakan Algoritma Bellman-Ford
Fransiska Melathi Cahyaningtyas
Inisialisasi pada line 1 memerlukan waktu O(V). Untuk loop dari line 2-4 memerlukan
waktu O(E) dan untuk line 5-7 memerlukan waktu O(E) pula. Jadi, algoritma Bellman-Ford
berjalan dalam kompleksitas waktu O(E).
Untuk kasus yang induktif, pertama-tama kita membuktikan bagian yang pertama.
Pertimbangkan waktu ketika suatu jarak simpul diperbaharui oleh v.distance: = u.distance +
uv.weight. Dengan asumsi induktif, u.distance adalah panjang lintasan dari sumber sampai
u. Kemudian u.distance + uv.weight adalah panjang lintasan dari sumber sampai v yang
mengikuti lintasan dari sumber hingga u dan kemudian dilanjutkan ke v.
Untuk bagian yang kedua, pertimbangkan lintasan yang paling pendek dari sumber
sampai u dengan sisi i. Biarkan V menjadi simpul yang terakhir sebelum u pada lintasan
ini. Kemudian, bagian dari lintasan dari sumber sampai v adalah lintasan yang paling
pendek dari sumber sampai v dengan sisi i-1. Dengan asumsi induktif, v.distance setelah i-1
siklus adalah pada panjang terjauh lintasan ini. Oleh karena itu, uv.weight + v.distance
adalah panjang lintasan paling jauh dari s sampai u. Di dalam ith siklus, u.distance akan
dibandingkan dengan uv.weight + v.distance, dan akan dibuat sama jika uv.weight +
v.distance bernilai lebih kecil. Oleh karena itu, setelah i berputar, u.distance adalah lintasan
yang paling pendek dari sumber sampai u yang menggunakan sisi i.
Ketika i setara dengan banyaknya simpul di dalam graf, masing-masing lintasan akan
menjadi lintasan yang paling pendek secara keseluruhan, kecuali jika ada siklus berbobot
negatif. Jika suatu siklus berbobot negatif ada dan dapat diakses dari sumber, kemudian
tersedia jalan manapun yang lebih pendek, maka tidak ada jalan yang paling pendek. Cara
lainnya adalah rute terpendek tidak akan meliputi siklus manapun (sebab mengelilingi
suatu siklus akan membuat perjalanan lebih pendek), maka masing-masing lintasan paling
pendek mengunjungi simpul masing-masing paling tidak sekali, dan jumlah dari sisinya
lebih sedikit dari banyaknya simpul di dalam graf itu.
3
Menangani Masalah Lintasan Terpendek Menggunakan Algoritma Bellman-Ford
Agustus 2016
4
Menangani Masalah Lintasan Terpendek Menggunakan Algoritma Bellman-Ford
Fransiska Melathi Cahyaningtyas
Gambar 8. Lintasan terpendek untuk penyelesaian Algoritma Bellman-Ford pada graf gambar 2 sebesar -1
Inisialisasi: O(V)
Total: O(V.E)
3. Kesimpulan
Algoritma Bellman-Ford merupakan salah satu algoritma yang digunakan untuk
memecahkan permasalahan lintasan terpendek yang terdapat pada suatu graf. Algoritma
ini digunakan pada graf berbobot dengan bobot yang dapat bernilai positif maupun
5
Menangani Masalah Lintasan Terpendek Menggunakan Algoritma Bellman-Ford
Agustus 2016
bernilai negatif. Algoritma Bellman-Ford sangat tepat untuk menangani masalah Single-
source Shortest Path.
Meskipun pada algoritma Bellman-Ford dapat mengangani bobot bernilai negatif
namun algoritma Dijkstra lebih sering digunakan karena membutuhkan waktu yang lebih
sedikit daripada algoritma Bellman-Ford, jadi persoalan dapat diselesaikan dengan lebih
ringkas.
Daftar Pustaka
[1] WORDPRESS, Graph dan Analisis Algoritma [Online],
http://proxymous.wordpress.com/2010/08/03/graph-dan-analisis-
algoritma/, diakses tanggal 7 Agustus 2016.
[2] BLOGSPOT, Belajar Routing Internet: Algoritma Bellman-Ford [Online],
http://belajar-routing.blogspot.co.id/2011/05/algoritma-bellman-
ford.html, diakses tanggal 7 Agustus 2016.
[3] WIKIPEDIA, Bellman-Ford algorithm [Online],
http://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm,
diakses tanggal 2 Agustus 2016.
[4] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein,
“Introduction to Algorithms,” The MIT Press, Third Edition, h. 651-654, 2009.