Perbandingan Algoritma Brute-Force dan Algoritma A Untuk Mencari Rute Terpendek Antar Klinik Kecantikan di Kota Medan

BAB 2
LANDASAN TEORI

2.1.

Pengertian Algoritma

Algoritma merupakan urutan langkah langkah untuk menyelesaikan masalah yang disusun
secara sistematis, algoritma dibuat dengan tanpa memperhatikan bentuk yang akan digunakan
sebagai implementasinya, sehingga suatu algoritma dapat menjelaskan “bagaimana” cara
melaksanakan fungsi dapat diekspresikan dengan suatu program atau suatu komponen fisik
(Hartono, 2007).
Menurut Donald E.Knuth, terdapat ciri-ciri algoritma yaitu:
1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas.
2. Setiap langkah harus didefinisikan dengan tepat dan tidak ambiguous (tidak
berarti dua).
3. Algoritma memiliki nol atau lebih masukkan (input). Masukkan ialah besaran
yang diberikan pada algoritma sebelum algoritma mulai bekerja.
4.
2.2.


Lintasan Terpendek (Shortest Path)

Masalah jalan terpendek adalah salah satu masalah yang paling mendasar dalam kombinasi
optimasi. Bahkan dalam rangka memecahkan masalah yang paling kombinatorial, baik
perhitungan jalur terpendek disebut untuk, atau konsep yang dibuat menggunakan yang
pertama kali dikembangkan dalam kerangka jalur terpendek. (Giorgio, 1998).
Lintasan minimum yang dimaksud dapat dicari dengan menggunakan graf. Graf yang
digunakan adalah graf yang berbobot, yaitu graf yang setiap sisinya diberikan suatu nilai atau
bobot. Dalam kasus ini, bobot yang dimaksud berupa jarak dan waktu kemacetan terjadi
(Prama, 2010).
2.3.

Teori Dasar Graf

Teori graf merupakan pokok bahasan yang sudah tua usianya namun memiliki banyak
terapan sampai saat ini. Graf digunakan untuk merepresentasikan objek-objek diskrit dan
hubungan antar objek-objek tersebut. Sesungguhnya peta adalah sebuah graf, yang dalam hal

Universitas Sumatera Utara


ini kota dinyatakan sebagai bulatan sedangkan jalan dinyatakan sebagai garis (Mediputra,
2010).
2.3.1 Jenis – Jenis Graf
Berdasarkan ada atau tidaknya gelang atau busur ganda pada suatu graph maka secara umum
graph dapat dikelompokkan menjadi dua jenis:
1. Graph sederhana (simple graph) yaitu graph yang tidak mengandung gelang maupun
sisi-ganda. Pada graph sederhana, sisi adalah pasangan tak-terurut (unordered pairs).
Jadi menuliskan sisi (u, v) sama saja dengan (v, u). Kita dapat juga mendefinisikan
graph sederhana G = (V, E) terdiri dari himpunan tidak kosong simpul-simpul dan E
adalah himpunan pasangan tak-terurut yang berbeda disebut sisi (Munir, 2007).
2. Graph tak-sederhana (unsimple graph) yaitu graph yang mengandung sisi ganda atau
gelang dinamakan graph tak-sederhana (unsimple graph). Ada dua macam graph taksederhana, yaitu graph ganda dan graph semu. Sisi pada graph dapat mempunyai
orientasi arah. Menurut orientasi arah pada sisinya, graph dibagi menjadi dua jenis,
yaitu:
8. Graph tidak berarah (undirected graph) adalah graph yang sisinya tidak
mempunyai orientasi arah, pada graph ini, urutan pasangan simpul yang
dihubungkan oleh sisi tidak diperhatikan. Sebagai contoh graph tidak berarah
dapat dilihat pada gambar 2.1 (Munir, 2007)

Gambar 2.1 Contoh Tidak Berarah

2.

Graph berarah (directed graph) adalah graph yang setiap sisinya diberikan
orientasi arah, graph berarah sering dipakai untuk menggambarkan aliran
proses, peta lintas suatu kota, dan sebagainya (Munir, 2007).
Sebagai contoh graph berarah dapat dilihat pada gambar 2.2

Universitas Sumatera Utara

Gambar 2.2 Contoh Graf Berarah
2.4.

Algoritma Brute-Force

Algoritma Brute-Force adalah algoritma yang memecahkan masalah dengan sangat
sederhana, langsung, dan dengan cara yang jelas/lempang. Algoritma Brute-Force adalah
algoritma yang lempang atau apa adanya. Biasanya didasarkan pada pernyataan masalah
(problem statement) dan definisi konsep yang dilibatkan. Algoritma Brute-Force seringkali
lebih mudah di implementasikan dari pada algoritma yang lebih canggih, dan karena
kesederhanaannya. (Pramudita, 2011)

Algoritma Brute Force, disebut juga “naif” yaitu algoritma yang paling sederhana
yang dapat digunakan dalam pola mencari. Hal ini tidak memerlukan preprocessing dari pola
atau teks. Maksudnya adalah bahwa pola dan teks dibandingkan karakter demi karakter
dalam kasus ketidakcocokan, pola digeser satu posisi ke kanan dan perbandingan diulang,
sampai kecocokan ditemukan atau akhir teks sudah tercapai. (Abdeen,A,R.2011)
2.5.

Algoritma A*

Algoritma A* (A Star) adalah algoritma pencarian yang merupakan pengembangan dari
algoritma Best First Search (BFS). Seperti halnya pada BFS, untuk menemukan solusi, A*
juga dituntun oleh fungsi heuristik, yang menentukan urutan titik mana yang akan dikunjungi
terlebih dahulu. Heuristik merupakan penilai yang memberi harga pada tiap vertex yang
memandu A* mendapatkan solusi yang diinginkan.
(Adipranata & Handojo 2007)
Persamaan yang digunakan dalam algoritma A* dapat dibagi menjadi dua bagian.
Satu dapat disebut sebagai jalur jarak terakhir dan setengah lainnya dapat disebut sebagai
jarak jalan yang selanjutnya. g (x) adalah jarak dari simpul dari mulai simpul sementara h (x)
adalah nilai heuristik dari node. Nilai heuristik dari node tidak lain adalah jarak Euclidean
dari node awal ke node tujuan atau node akhir. (Burad R dkk,2016)

2.5.1 Fungsi Heuristik A*

Universitas Sumatera Utara

Heuristik merupakan penilai yang memberi harga pada tiap vertex yang memandu A*
mendapatkan solusi yang diinginkan. Heuristik yang paling umum digunakan adalah
Manhattan Distance. Fungsi heuristik ini hanya akan menjumlahkan selisih nilai x dan nilai y
dari dua buah titik. Heuristik ini dinamakan Manhattan karena di kota Manhattan di Amerika,
jarak dari dua lokasi umumnya dihitung dari blok-blok yang harus dilalui saja dan tentunya
tidak bisa dilintasi secara diagonal. (Prayoga dkk, 2008).
Fungsi heuristik sangat berpengaruh terhadap kelakuan Algoritma A*:
1. Apabila h(x) selalu bernilai 0, maka hanya g(x) yang akan berperan, dan A* berubah
menjadi Algoritma Dijkstra, yang menjamin selalu akan menemukan jalur
terpendek.
2. Apabila h(x) selalu lebih rendah atau sama dengan ongkos perpindahan dari titik n ke
tujuan, maka A* dijamin akan selalu menemukan jalur terpendek. Semakin rendah
nilai h(x), semakin banyak titik-titik yang diperiksa A*, membuatnya semakin
lambat.
3. Apabila h(x) tepat sama dengan ongkos perpindahan dari n ke tujuan, maka A* hanya
akan mengikuti jalur terbaik dan tidak pernah memeriksa satupun titik lainnya,

membuatnya sangat cepat. Walaupun hal ini belum tentu bisa diaplikasikan ke
semua kasus, ada beberapa kasus khusus yang dapat menggunakannya.
4. Apabila h(x) kadangkala lebih besar dari ongkos perpindahan dari n ke tujuan, maka
A* tidak menjamin ditemukannya jalur terpendek, tapi prosesnya cepat.
5. Apabila h(x) secara relatif jauh lebih besar dari g(x), maka hanya h(x) yang
memainkan peran, dan A* berubah menjadi BFS.

Fungsi h(x) adalah hyphotesis cost atau heuristic cost atau estimasi cost terkecil dari
node x ke tujuan, yang disebut juga sebagai future path-cost. Fungsi g(x) adalah geographical
cost atau cost sebenarnya dari node x ke node tujuan, yang disebut juga sebagai past pathcost. Berdasarkan algoritma standar pencarian jalur terpendek sebelumnya, jika ditambahkan
dengan metode A*, algoritma tersebut mengalami perubahan, khususnya saat perluasan node
atau Node Expansion, yaitu saat memindai jalur atau link. (Mutiara,N,dkk.2013).

Universitas Sumatera Utara

2.5.2 Cara Kerja Algoritma A* Mencari Rute Terpendek
Algoritma A* menggunakan dua senarai : OPEN dan CLOSED. Terdapat tiga kondisi
bagi setiap suksesor yang dibangkitkan, yaitu: sudah berada di open, sudah berada di closed,
dan tidak berada di open maupun closed. Pada ketiga kondisi tersebut diberikan penanganan
yang berbeda-beda. Jika suksesor sudah pernah berada di open, maka dilakukan pengecekan

apakah perlu pengubahan parent atau tidak tergantung pada nilai g-nya melalui parent lama
atau parent baru. Jika melalui parent baru memberikan nilai g yang lebih kecil, maka
dilakukan pengubahan parent. Jika pengubahan parent dilakukan, maka dilakukan juga
perbaruan (update) nilai g dan f pada suksesor tersebut. Untuk terpilih sebagai simpul terbaik
(best node). Jika suksesor sudah pernah berada di closed, maka dilakukan pengecekan apakah
perlu pengubahan parent atau tidak. Jika ya, maka dilakukan perbaruan nilai g dan f pada
suksesor tersebut serta semua “ anak cucunya” yang sudah pernah berda di open.
Dengan perbaruan ini, maka semua anak cucunya tersebut memiliki kesempatan lebih
besar untuk terpilih sebagai simpul terbaik (best node). Jika suksesor tidak berada di open
maupun di closed, maka suksesor tersebut dimasukkan ke dalam open. Tambahkan suksesor
tersebut sebagai suksesornya best node. Hitung biaya suksesor Tersebut dangan rumus f’ = g
+ h’. (Harianja,F. 2013).

Universitas Sumatera Utara