Analisis dan Perbandingan Algoritmal-Deque dan Algoritma Bellman-Ford Dalam Mencari Jarak Terpendek

BAB 2

LANDASAN TEORI

2.1. Pengertian Algoritma
Algoritma adalah urutan atau deskripsi langkah-langkah untuk memecahkan suatu masalah.
Algoritma merupakan jantung ilmu komputer atau informatika. Banyak cabang dari ilmu
komputer yang diacu dalam terminologi algoritma, misalnya algoritma perutean (routing)
pesan di dalam jaringan komputer, algoritma bresenham untuk menggambar garis lurus
(bidang grafika komputer), algoritma Knuth-Morris-Pratt untuk mencari suatu pola di dalam
teks (bidang information retrievel), dan sebagainya (Munir, 2011).
2.2.Shortest Path (Jarak Terpendek)
Persoalan mencari jarak terpendek di dalam graf merupakan salah satu persoalan
optimisasi.Graf yang digunakan dalam pencarian jarak terpendek adalah graf berbobot
(weighted graph), yaitu graf yang setiap sisinya diberikan suatu nilai atau bobot. Kata
terpendek berbeda-beda maknanya bergantung pada tipikal persoalan yang akan diselesaikan.
Namun, secara umum terpendek berarti meminimisasi bobot pada suatu lintasan dalam graf
(Triansyah, 2013).
2.3.Teori Dasar Graf
Teori graf merupakanpokok bahasan yang sudah tua usianya namun memiliki banyak terapan
dalam kehidupan sehari-hari sampai saat ini. Graf digunakan untuk merepresentasikan objekobjek diskrit dan hubungan antarampai saat ini. Graf digunakan untuk merepresentasikan

objek-objek diskrit dan hubungan antara objek-objek tersebut. Banyak persoalan pada dunia
nyata yang sebenarnya merupakan representasi visual dari graf. Contoh salah satu
representasi visual dari graf adalah peta. Banyak hal yang dapat digali dari representasi
tersebut, diantaranya adalah menentukan jarak terpendek dari satu tempat ke tempat lain
(Pradhana, 2006).
Suatu graf G didefenisikan sebagai pasangan himpunan (V,E)yang dalam hal ini :
V = himpunan tidak kosong dari simpul-simpul (vertices atau node): {V1,V2,...,Vn}

Universitas Sumatera Utara

E

=

himpunan sisi (edges atau arcs) yang menghubungkan sepasang simpul:

{E1,E2,...,En}

Atau dapat ditulis singkat notasi G = (V,E)


2.3.1. Grafsederhana dan Graftak-sederhana
Graf sederhana (simple graph) yaitu graf yang tidak memiliki gelang maupun sisi-ganda.
Sedangkan Graf tidak sederhana (unsimple graph) yaitu graf yang memiliki gelang maupun
sisi ganda. Ada dua macam graf tak-sederhana, yaitu graf ganda (multigraph) dan graf semu
(pseudograph). Graf ganda adalah graf yang memiliki sisi ganda, sedangkan graf semu
adalah graf yang memiliki gelang.
Sebagai contoh definisi dari graf pada gambar 1 berikut

(a)

(b)

(c)

Gambar 2.1Beberapa Graf a)GrafSederhana, b)Graf Ganda, c)Graf Semu

2.3.2. Graf berarah dan Graf tak-berarah
Graf berarah (directed graph) merupakan graf yang setiap sisinya diberikan orientasi arah.
Pada graf berarah, (vj, vk) dan (vk, vj) menyatakan dua busur yang berbeda, dengan kata lain
(vj, vk) tidak sama dengan (vk, vj). Untuk busur (vj, vk), simpul vj disebut simpul asal (initial

vertex) dan untuk simpul vk disebut simpul terminal (terminal vertex).
Graf tak-berarah (undirected graph) merupakan graf yang sisinya tidak memiliki
orientasi arah. Pada graf tidak berarah, urutan pasangan simpul yang dihubungkan oleh sisi
tidak diperhatikan, dengan kata lain: (vj, vk) = (vk, vj)
Contoh graf berarah dapat dilihat pada gambar 2 berikut

Universitas Sumatera Utara

Gambar 2.2 Graf Berarah
2.4.Algoritma L-Deque
Antrian berakhir ganda (Deque) merupakan daftar yang menggabungkan sifat-sifat baik
antrian dan tumpukan.Sebuah deque adalah daftar dimana penambahan dan penghapusan
yang mungkin di kedua ujung, deque digunakan dalam algoritma D’Esopo – Pape, biasanya
disebut Algoritma L-Deque (Gallo & Pallotino, 1986).
Algoritma deque (double-ended antrian) adalah daftar penambahan dan penghapusan
yang mungkin di kedua ujung. Sebuah deque dapat dilihat sebagai tumpukan dan antrian
dihubungkan secara seri di sedemikian rupa sehingga ekor poin stack untuk kepala antrian.
Deque digunakan untuk mengimplementasikan dua arah kriteria ide dikaitkan dengan
D'Esopo dan Pape.Metode ini yang disebut L-Deque, menambahkan node di kepala Q jika
sudah muncul di daftar sebelum node atau ditambahkan pada ekornya begitu juga

sebaliknya.Node selalu dihapus dari kepala node yang layak pemindaian daftar. Ketika semua
node memiliki label yang terbatas, metode berperilaku seperti algoritma yang menggunakan
stack (Mondou et al, 1991).
Deque menggunakan dua pointer penunjuk yaitu left petunjuk untuk elemen pada posisi
kiri dan right petunjuk untuk elemen pada posisi kanan.
Ada dua jenis deque :
1. Input-Restricted-Deque
Adalah deque yang operasi pemasukan elemen datanya hanya dapat dilakukan di satu
ujung kanannya (right), tetapi dapat menghapus dari kedua ujungnya (leftdan right).

2. Output-Restricted-Deque
Adalahdeque yang operasi pemasukan elemen datanya dapat dilakukan melalui kedua
ujungnya (left danright), tetapi hanya dapat menghapus dari ujung kanannya(right).

Universitas Sumatera Utara

2.5.Algoritma Bellman-Ford
Algoritma bellman-ford merupakan salah satu algoritma yang menangani kasus pencarian
lintasan dengan bobot terkecil.Algoritma ini memungkinkan apabila di dalam system yang
dibangun terdapat pencilan.Seperti yang sudah dicobakan sebelumnya, apabila simpul yang

dituju ataupun simpul asal merupakan sebuah pencilan maka hasil yang didapatkan adalah
infinity.Tidak hanya itu bahkan apabila ternyata tidak ada lintasan yang menghubungkan
antara simpul awal dan simpul tujuan, maka bobot yang dihasilkan juga berupa infinity
(Utami, 2009).
Algoritma Bellman-Ford menghitung jarak terpendek (dari satu sumber) pada sebuah
diagraf berbobot.Maksudnya dari satu sumber ialah bahwa algoritma Bellman-Ford
menghitung semua jarak terpendek yang berawal dari satu titik node. Algoritma BellmanFord menggunakan waktu sebesar O(V.E), di mana V dan E adalah menyatakan banyaknya
vertex dan edge (Pradhana, 2006).

Gambar 2.3 Graf Berbobot untuk Algoritma Bellman-Ford
2.5.1. PSEUDOCODE
Pseudocode Algoritma Bellman-Ford
function Bellman Ford (list vertices, list edges, vertex
source)
: :distance [ ],predecessor [ ]

// Step 1: initialize graph
for each vertex v in vertices:
Distance[v] :=inf


Universitas Sumatera Utara

Predecessor[v] := null
distance[source] := 0

// Step 2: relax edges repeatedly
for i from 1 to size (vertices) -1 :
for each edge (u, v) with weight w in edges:
if distance [u] + w < distance[v]:
distance[v] := distance[u] +w
predecessor[v] := u

// Step 3: check for negative weight cycles
for each edge (u, v) with weight w in edges:
if distance[u] + w < distance [v] :
error “Graph contains a negative-weight cycle”
return distance[ ],
predecessor[ ]

2.6.Kompleksitas Algoritma

Algoritma tidak selalu memberikan hasil yang terbaik yang mungkin diperoleh maka
diharapkan adanya suatu evaluasi mutu hasil dari algoritma tersebut. Sekali sebuah algoritma
diberikan kepada sebuah permasalahan dan dijamin akan memberikan hasil yang diharapkan,
maka langkah penting selanjutnya adalah menentukan waktu tempuh yang diperlukan
algoritma tersebut untuk memperoleh hasil itu. Proses inilah yang disebut analisis algoritma.
Dua buah algoritma yang berberda dapat digunakan memecahkan masalah yang sama dan
mungkin saja mempunyai kompleksitas waktu (time complexity) yang sangat berbeda.
Kompleksitas waktu algoritma terbaik untuk memecahkan masalah tersebut dinamakan
sebagai kompleksitas waktu (time complexity of problem) (Putra, 2014).
Teori komputasi pada dasarnya dibagi menjadi tiga bagian karakter yang
berbeda.Pertama, pengertian yang tepat dari algoritma, waktu, kapasitas penyimpanan, dan-

Universitas Sumatera Utara

lain-lain harus diperkenalkan. Untuk ini, perbedaan model mesin matematika hatus
digambarkan,waktu dan penyimpanan kebutuhan perhitungan dilakukan pada kebutuhan ini
harus diperjelas (umumnya diukur sebagai fungsi dari ukuran input). Yang paling mendasar
pada kompleksitas adalah memberikan kalsifikasi penting dari masalah yang timbul dalam
praktek, bahkan timbul di daerah matematika klasik.Kedua, kita harus menentukan kebutuhan
sumber daya dari algoritma yang paling penting dalam berbagai bidang matematika, dan

memberikan algoritma yang efesien untuk membuktikan bahwa masalah tertentu memiliki
kompleksitas tertentu.Ketiga, harus menemukan metode yang membuktikan “hasil negatif”
yaitu untuk bukti beberapa masalah sebenarnya terpecahkan di bawah pembatasan sumber
daya tertentu (Gács & Lovász, 1999).
Terdapat beberapa jenis notasi asimtotik, tetapi peneliti hanya akan menggunakan dan
membahas satu notasi saja, yaitu notasi Big-Theta. Big Theta dipilih karena merupakan
notasi untuk menentukan kompleksitas suatu algoritma.

Universitas Sumatera Utara