Perbandingan Algoritma L-Deque Danalgoritma Greedy Dalam Menentukan Rute Terpendek Antar Tempat Wisata Di Kabupaten Tapanuli Tengah

BAB 2
LANDASAN TEORI

2.1 Algoritma
Algoritma adalah ilmu yang mempelajari cara penyelesaian suatu masalah berdasarkan
urutan langkah-langkah terbatas yang disusun secara sistematis dan menggunakan bahasa
yang logis dengan tujuan tertentu (Barakbah, dkk, 2013).
Kata algoritma mempunyai asal kata dari nama penulis buku Arab yang terkenal
yaitu Abu Ja‟far Muhammad ibnu Musa al-Khuwarizmi (al-Khuwarizmi dibaca oleh
orang Barat menjadi algorism). Al-Khuwarizmi menulis buku yang berjudul Kitab al
jabar wal-muqabala, yang artinya “Buku pemugaran dan pengurangan”. Dari judul buku
itu juga diperoleh akar kata “aljabar” (algebra). Perubahan kata algorism menjadi
algorithm muncul karena kata algorism sering dikelirukan dengan arithmetic, sehingga
akhiran -sm berubah menjadi thm. Karena perhitungan dengan angka Arab sudah menjadi
hal yang biasa, maka lambat laun kata algorithm berangsur-angsur dipakai sebagai
metode perhitungan (komputasi) secara umum, sehingga kehilangan makna aslinya.
Dalam bahasa Indonesia, kata algorithm diserap menjadi algoritma (Munir, 2014).

2.1.1

Karakteristik Algoritma


Menurut Bapak “Analisa Algoritma” (Knuth, 1973) algoritma yang baik dan benar harus
memiliki karakteristik sebagai berikut :
1.

Input : Sebuah algoritma harus memiliki nol input atau lebih dari pengguna sebagai
data masukan untuk diolah.

2.

Output : Sebuah algoritma harus memiliki minimal sebuah ouput yang merupakan
hasil dari olahan data.

Universitas Sumatera Utara

7

3.

Finiteness : Sebuah algoritma harus terbatas dan berhenti dari proses yang telah

dieksekusi.

4.

Defineteness : Sebuah Algoritma harus jelas dan tidak menimbulkan makna ganda
(ambigious).

5.

Effectiveness : Langkah-langkah algoritma dikerjakan dalam waktu yang wajar.

2.2 Konsep Dasar Graph
Teori graph merupakan salah satu cabang ilmu matematika yang banyak diterapkan
dalam bidang ilmu. Penerapannya diberbagai bidang seperti di bidang teknologi
komputer, listrik, fisika, kimia, arsitektur, teknik sipil dan dibidang lainnya. Teori graph
ini juga banyak digunakan dalam kehidupan sehari-hari seperti pengaturan lampu lalu
lintas, travelling salesmen problem, jaringan jalan raya dan jalan yang menghubungkan
setiap kotanya, penjadwalan matakuliah di kampus dan lain-lain.

2.2.1 Definisi Graph

Graph G didefenisikan sebagai pasangan himpunan yang terdiri dari vertex ( V ) dan
edge ( E ) yang ditulis dengan notasi G = ( V, E ), di mana dalam hal ini V adalah suatu
himpunan tidak kosong dari vertex- vertex ( simpul atau node ) pada graph G dan E
adalah suatu himpunan edge (sisi atau arcs) yang menghubungkan sepasang vertex pada
graph. V tidak boleh kosong, sedangkan E boleh kosong (Ristono & Puryani, 2011).
Contoh graph dapat dilihat pada gambar 2.1.
e1
B

A

e5
e4

e2

D

C


e3
Gambar 2.1 Graph dengan 4 vertex dan 5 edge (Chairani, 2015)
Pada gambar 2.1 diatas Graph G = ( V, E ), di mana :
1. V adalah himpunan titik, vertex atau node dari G yaitu

Universitas Sumatera Utara

8

V = { A, B, C, D }
2. E adalah himpunan rusuk, garis atau edge dari G, yaitu
E = { e1, e2, e3, e4, e5 }
2.2.2 Jenis- Jenis Graph
Graph dikelompokkan menurut ada tidaknya edge yang loop atau ganda, berdasarkan
jumlah vertex, atau berdasarkan orientasi arah pada pada edge (arcs) ( Munir, 2014).
Dilihat dari ada tidaknya edge yang loop atau ganda pada suatu graph, maka secara
umum graph dikelompokkan menjadi dua jenis :
1.

Graph Sederhana (simple graph) adalah graph yang tidak memiliki edge yang

paralel atau loop. Vertex-vertex pada graph sederhana dihubungkan dengan
satu edge ke setiap vertex yang lain dan tidak ada edge yang vertex awal dan
akhirnya sama. Contoh graph sederhana dapat dilihat pada gambar 2.2.

Gambar 2.2 Graph Sederhana ( Hayati & Yohanes, 2014 )
2.

Graph Tidak Sederhana ( Unsimple Graph ) adalah graph yang memiliki edge
ganda atau loop. Graph tidak sederhana terbagi lagi menjadi dua yaitu graph
semu (pseudograph) dan Multigraph. Graph semu (pseudograph) adalah graph
yang memiliki gelang (loop) sehingga graph semu dapat terhubung dengan
dirinya sendiri, sedangkan Multigraph

adalah graph yang memiliki edge

ganda. Contoh graph tidak sederhana dapat dilihat pada gambar 2.3.

Universitas Sumatera Utara

9


(a)

(b)

Gambar 2.3 (a) Multigraph, (b) Graph Semu ( Hayati & Yohanes, 2014 )
Dilihat dari orientasi arah pada sisinya (edge), maka secara umum graph
dikelompokkan menjadi dua yaitu :
1.

Graph tidak berarah (undirected graph) adalah graph yang sisinya (edge) tidak
mempunyai orientasi arah. Pada graph ini, urutan pasangan vertex yang
dihubungkan oleh vertex tidak diperhatikan (Munir, 2014). Contoh graph tidak
berarah dapat dilihat pada gambar 2.4.

Gambar 2.4 Graph Tidak Berarah (Chairani, 2015)
2. Graph berarah (directed graph atau digraph) adalah graph yang setiap sisinya
(edge) diberikan orientasi arah. Pada graph berarah (u,v) dan (v,u) menyatakan
dua buah edge berarah (arc) yang berbeda, dengan kata lain (u,v) ≠ (v,u). Untuk
edge berarah (u,v), vertex u dinamakan vertex asal (initial vertex) dan vertex v

dinamakan vertex akhir (terminal vertex) (Munir, 2014). Contoh graph berarah
dapat dilihat pada gambar 2.5.

Universitas Sumatera Utara

10

Gambar 2.5 Graph Berarah (Chairani, 2015)
2.2.3 Graph Berbobot (Weighted Graph)
Graph berbobot adalah graph yang setiap sisinya (edge) diberi sebuah harga (bobot).
Bobot pada tiap edge dapat berbeda-beda bergantung pada masalah yang dimodelkan
dengan graph. Bobot dapat menyatakan jarak antara dua buah kota, waktu tempuh pesan
(message) dari sebuah simpul (vertex) komunikasi ke simpul (vertex) komunikasi lain
(dalam jaringan komputer), ongkos produksi dan sebagainya (Munir, 2014). Contoh
graph berbobot dapat dilihat ada Gambar 2.6.

Gambar 2.6 Graph Berbobot (Chairani, 2015)
2.3 Shortest Path
Masalah lintasan terpendek merupakan salah satu masalah yang paling mendasar dalam
persoalan optimasi. Bahkan dalam rangka memecahkan masalah yang paling

kombinatorial, baik perhitungan jalur terpendek atau konsep yang dibuat untuk digunakan
pertama kali dikembangkan dalam kerangka lintasan terpendek. Graph yang digunakan
dalam pencarian lintasan terpendek adalah graph berbobot (weighted graph), yaitu graph
yang setiap sisinya (edge) diberikan suatu nilai atau bobot. Bobot pada edge graph dapat

Universitas Sumatera Utara

11

menyatakan jarak antar kota, waktu pengiriman pesan, ongkos pembangunan, dan
sebagainya.
Lintasan terpendek (shortest path) adalah jalur yang dilalui dari suatu vertex ke
vertex lain dengan besar atau nilai pada edge yang jumlah akhirnya dari vertex awal ke
vertex akhir paling kecil. Lintasan terpendek adalah lintasan minimum yang diperlukan
untuk mencapai suatu tempat dari tempat lain. Lintasan minimum yang dimaksud dapat
dicari dengan menggunakan graph (Hayati & Yohanes, 2014). Contoh shortest path
dapat dilihat pada gambar 2.6, di mana vertex A sebagai vertex sumber dan vertex D
sebagai vertex tujuan. Maka didapat lintasan terpendek dari A ke E => A – B – C – E
=> 10 + 50 + 10 = 70.


2.4 Algoritma L-Deque
Algoritma L-Deque adalah sebuah algoritma pencarian lintasan terpendek (shortest path)
yang menggunakan konsep Linear list atau daftar linear. Deque disebut queue ganda atau
double queue, di mana penambahan dan penghapusan elemennya dapat dilakukan pada
kedua ujung sisinya, tetapi tidak dapat dilakukan di tengah-tengah list.
Deque adalah sebuah daftar yang menggabungkan sifat-sifat dari antrian dan
tumpukan (stack). Deque adalah sebuah daftar yang dapat melakukan penambahan dan
penghapusan yang mungkin di kedua ujung. Sebuah deque sudah tekenal digunakan
dalam algoritma D'Esopo-Pape, algoritma ini disebut L-Deque. Dalam Q deque
digunakan penambahan L-Deque pada kedua ujungnya, sementara penghapusan
dilakukan di kepala. Deque ini dapat diartikan sebagai “Q antrian dan Q tumpukan" yang
dihubungkan secara seri. (Gallo & Pallotino, 1986).
Algoritma L-Deque untuk mencari lintasan terpendek dapat dirumuskan sebagai
berikut:
1. Masukkan semua vertex yang ada pada graph ke dalam daftar data deque.
2. Tentukan vertex yang akan menjadi vertex asal dan tandai dengan nilai 0 pada
vertex tersebut, kemudian berikan nilai inf (∞) kepada setiap vertex lainnya.

Universitas Sumatera Utara


12

3. Periksa semua vertex yang dapat dikunjungi dari vertex asal (keberangkatan) pada
data deque, dan periksa setiap edge (u,v) yang ada pada graph dan tentukan d[v]
untuk lintasan terpendek pertama dengan cara :
i.

Hitung : d[v] > d[u] + edge [u] [v]

ii.

Jika d[v] > d[u] + edge [u] [v], maka d[v] = d[u] + edge [u] [v].
Jika d[v] < d[u] + edge [u] [v], maka nilai d [v] pada vertex tersebut yang
dipilih.

4. Dengan cara yang sama, ulangi langkah 3 untuk menentukan lintasan terpendek
berikutnya sampai vertex yang ada dalam dalam data deque sama dengan null.
Pada poin no. 3 di atas menggunakan teknik relax, di mana d(v) disebut estimasi
shortest path atau bobot upper bound sebuah shortest path dari vertex asal ke vertex
tujuan serta pada setiap edge dilakukan relax sekali. Contoh sederhana penyelesaian

sebuah graph untuk menentukan rute terpendek menggunakan algoritma L-Deque dengan
vertex awal A dan vertex akhir F dapat dilihat pada gambar 2.7 dibawah ini.

Vertex asal pada graph diatas ialah vertex A, tandai vertex tersebut dengan nilai 0
dan beri nilai inf (∞) pada vertex lainnya. Dapat dilihat pada gambar 2.8.
10

0/A

∞/-

12

D

C

6

∞/-

8

16

9
F

7

∞/-

5
B

∞/-

E

17
∞/-

Gambar 2.8 Graph Penentuan Vertex Asal

Universitas Sumatera Utara

13

Vertex yang dapat dikunjungi dari vertex A ialah vertex B dengan bobot jarak 6 dan
juga vertex C dengan bobot jarak 10. Hitung d[v] untuk vertex B, d[v] > d[u] + edge
[u][v], d[“B”] > d[“A”] + edge [“A”][“B”], d[“B”] > 0 + 6, inf > 6 sehingga didapat
d[“B”] = 6 dan Tukar nilai inf (∞) pada vertex B dan hitung untuk vertex C, d[v] > d[u] +
edge [u][v], d[“C”] > d[“A”] + edge [“A”][“C”], d[v] > 0 + 10, inf > 10, sehingga
didapat d[“C”] = 6 dan tukar nilai inf (∞) pada vertex C. Dapat dilihat pada gambar 2.9.

Gambar 2.9 Graph Rute yang dipilih dari Vertex A ke Vertex B dan Vertex C
Selanjutnya memilih edge yang dapat dikunjungi dari vertex B, yaitu BE dengan
bobot jarak 17. Hitung d[v] untuk vertex E, d[v] > d[u] + edge [u][v], d[“E”] > d[“B”] +
edge [“B”][“E”], d[“E”] > 6 + 17, inf > 23 sehingga didapat d[“E”] = 23 dan Tukar nilai
inf (∞) pada vertex E. Edge BD juga dapat dikunjungi dari vertex B dengan bobot jarak
9, hitung d[v] untuk vertex D, d[v] > d[u] + edge [u][v], d[“D”] > d[“B”] + edge
[“B”][“D”], d[“D”] > 6 + 9, inf > 15 sehingga didapat d[“D”] = 15 dan tukar nilai inf
pada vertex D. Dapat dilihat pada gambar 2.10.

Gambar 2.10 Graph Rute yang dipilih dari Vertex B ke Vertex D dan Vertex E

Universitas Sumatera Utara

14

Selanjutnya memilih edge yang dapat dikunjungi dari vertex C yaitu CD dengan
bobot jarak 12. Hitung d[v] untuk vertex D, d[v] > d[u] + edge [u][v], d[“D”] > d[“C”] +
edge [“C”][“D”], 15 > 10 + 12, 15 > 22 “tidak” sehingga nilai d[“D”] sebelumnya yang
diambil untuk vertex D. Edge CB juga dapat dikunjungi dari vertex C dengan bobot jarak
8, hitung d[v] untuk vertex B, d[v] > d[u] + edge [u][v], d[“B”] > d[“C”] + edge
[“C”][“B”], 6 > 10 + 8, 6 > 18 “tidak” sehingga nilai d[“B”] sebelumnya yang diambil
untuk vertex B. Dapat dilihat pada gambar 2.11.

Gambar 2.11 Graph Rute yang dipilih dari Vertex C ke Vertex B dan Vertex D
Selanjutnya memilih edge yang dapat dikunjungi dari vertex D yaitu DE dengan
bobot jarak 7. Hitung d[v] untuk vertex E, d[v] > d[u] + edge [u][v], d[“E”] > d[“D”] +
edge [“D”][“E”], 23 > 15 + 7, 23 > 22 sehingga didapat d[“E”] = 22 untuk vertex E.
Edge DF juga dapat dikunjungi dari vertex D dengan bobot jarak 16, hitung d[v] untuk
vertex F, d[v] > d[u] + edge [u][v], d[“F”] > d[“D”] + edge [“D”][“F”], d[“F”] > 15 + 16,
inf > 31 sehingga didapat d[“F”] = 31 dan tukar nilai inf pada vertex F. Dapat dilihat pada
gambar 2.12.

Gambar 2.12 Graph Rute yang dipilih dari Vertex D ke Vertex E dan Vertex F

Universitas Sumatera Utara

15

Selanjutnya memilih edge yang dapat dikunjungi dari vertex E yaitu EF dengan
bobot jarak 5. Hitung d[v] untuk vertex F, d[v] > d[u] + edge [u][v], d[“F”] > d[“E”] +
edge [“E”][“F”], 31 > 22 + 5, 31 > 27 sehingga didapat d[“F”]= 27 untuk vertex F. Dapat
dilihat pada gambar 2.13.

Gambar 2.13 Graph Rute yang dipilih dari Vertex E ke Vertex F
Hasil yang didapat dari contoh sederhana menentukan rute terpendek dengan
algoritma L-Deque ialah :
AB = 6 (direct)

AE = 22 = AB + BD + DE

AC = 10 (direct)

AF = 27 = AB + BD + DE + EF

AD = 15 = AB + BD

2.5 Algoritma Greedy
Algoritma Greedy adalah sebuah algoritma untuk menemukan solusi optimum dalam
permasalahan optimasi dengan cara menyelesaikan masalah langkah demi langkah.
Solusi yang dibentuk pada algoritma Greedy pada setiap langkah sebagai berikut :
1. Pada setiap langkah yang diambil harus pilihan yang terbaik, di mana pilihan
yang telah diambil pada suatu langkah tidak dapat diubah pada langkah
selanjutnya.
2. Pendekatan yang digunakan dalam algoritma Greedy yaitu dengan memilih
optimum local pada setiap langkah.
Permasalahan optimasi dalam konteks algoritma Greedy disusun oleh elemenelemen sebagai berikut :
1. Himpunan Kandidat

Universitas Sumatera Utara

16

Himpunan ini berisi elemen–elemen pembentuk solusi. Pada permasalahan
lintasan terpendek dalam graph, himpunan kandidat ini adalah himpunan vertex
dari graph tersebut.
2. Himpunan Solusi
Himpunan ini berisi kandidat- kandidat yang terpilih sebagai solusi
permasalahan. Himpunan ini merupakan himpunan bagian dari himpunan
kandidat.
3. Fungsi Seleksi
Fungsi yang pada setiap langkah memilih kandidat yang paling mungkin untuk
mendapatkan solusi optimal. Kandidat yang dipilih pada suatu langkah tidak
pernah dipertimbangkan lagi pada langkah selanjutnya.
4. Fungsi Kelayakan
Fungsi yang memeriksa apakah suatu kandidat yang telah dipilih dapat
memberikan solusi yang layak.
5. Fungsi Objektif
Fungsi yang memaksimalkan dan meminumkan nilai solusi. Tujuannya untuk
memilih satu saja solusi terbaik dari masing-masing anggota himpunan solusi.
Dalam algoritma Greedy sebagian masalah tidak selalu berhasil memberikan solusi
yang benar-benar optimum. Tetapi, algoritma Greedy pasti memberikan solusi yang
mendekati (approximation) nilai optimum (Hayati & Yohanes, 2104).
Algoritma Greedy untuk mencari lintasan terpendek dapat dirumuskan sebagai
berikut:
1.

Periksa semua edge yang langsung bersisian dengan vertex a. Pilih edge yang
bobotnya terkecil. Edge ini menjadi lintasan terpendek pertama, sebut saja
L(1).

2. Tentukan lintasan terpendek kedua dengan cara sebagai berikut:
i.

Hitung: d(i) = panjang L(1) + bobot edge dari vertex akhir L(1) ke
vertex i yang lain.

ii.

Pilih d(i) yang terkecil.
Bandingkan d(i) dengan bobot edge (a, i).

Universitas Sumatera Utara

17

Jika bobot edge (a, i) lebih kecil daripada d(i), maka L(2) = L(1) U
(edge dari vertex akhir L(i) ke vertex i)
3. Dengan cara yang sama, ulangi langkah 2 untuk menentukan lintasan terpendek
berikutnya.
Contoh sederhana penyelesaian sebuah graph untuk menentukan rute terpendek
menggunakan algoritma Greedy dengan vertex awal A dan vertex akhir F dapat dilihat
pada gambar 2.7.
Lintasan terpendek pertama yang harus dipilih dari edge yang langsung bersisian
dengan vertex A ialah vertex B (AB) dengan bobot 6, ditunjukkan pada gambar 2.14.
A

10

C

12

D

16
6

8

9

7

E

B

F

5

17
Gambar 2.14 Graph Rute yang dipilih dari Vertex A ke Vertex B
Selanjutnya memilih edge yang berdekatan dengan edge AB, yaitu edge BD dengan
bobot 9 sehingga bobot totalnya 15, edge BE juga berdekatan dengan edge AB dengan
bobot 17 sehingga bobot totalnya 23. Jadi memilih edge BD karena mempunyai bobot
lebih kecil, ditunjukkan pada gambar 2.15.

Gambar 2.15 Graph Rute yang dipilih dari Vertex B ke Vertex D
Selanjutnya memilih edge yang berdekatan dengan edge BD, yaitu edge DF dengan
bobot 16 sehingga bobot totalnya 31, edge DE juga berdekatan dengan edge BD dengan

Universitas Sumatera Utara

18

bobot 7 sehingga bobot totalnya 22. Jadi memilih edge DE karena mempunyai bobot
lebih kecil, ditunjukkan pada gambar 2.16.

Gambar 2.16 Graph Rute yang dipilih dari Vertex D ke Vertex E
Selanjutnya memilih edge yang berdekatan dengan edge DE, yaitu edge EF dengan
bobot 5 sehingga bobot totalnya 27, ditunjukkan pada gambar 2.17.

Gambar 2.17 Graph Rute yang dipilih dari Vertex E ke Vertex F
Hasil yang didapat dari contoh sederhana diatas menentukan rute terpendek
menggunakan algoritma Greedy ialah A  B  D  E  F dengan total jarak 27.

Universitas Sumatera Utara

19

Universitas Sumatera Utara