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