• Tidak ada hasil yang ditemukan

KINERJA DYNAMIC PROGRAMMING, ALGORITMA A STAR DAN DIJKSTRA DALAM MENENTUKAN RUTE TERPENDEK TESIS HENNY YUSNITA

N/A
N/A
Protected

Academic year: 2022

Membagikan "KINERJA DYNAMIC PROGRAMMING, ALGORITMA A STAR DAN DIJKSTRA DALAM MENENTUKAN RUTE TERPENDEK TESIS HENNY YUSNITA"

Copied!
96
0
0

Teks penuh

(1)

RUTE TERPENDEK

TESIS

HENNY YUSNITA 187038001

PROGRAM STUDI S2 TEKNIK INFORMATIKA

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN

2020

(2)

KINERJA DYNAMIC PROGRAMMING, ALGORITMA A STAR DAN DIJKSTRA DALAM MENENTUKAN

RUTE TERPENDEK

TESIS

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Magister Teknik Informatika

HENNY YUSNITA 187038001

PROGRAM STUDI S2 TEKNIK INFORMATIKA

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN

2020

(3)
(4)

iii

PERNYATAAN

KINERJA DYNAMIC PROGRAMMING, ALGORITMA A STAR DAN DIJKSTRA DALAM MENENTUKAN

RUTE TERPENDEK

TESIS

Saya mengakui bahwa tesis ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan, 02 September 2020

Henny Yusnita NIM. 187038001

(5)

PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMAH UNTUK KEPENTINGAN

AKADEMIS

Sebagai sivitas akademika Universitas Sumatera Utara, saya yang bertanda tangan di bawah ini:

Nama : Henny Yusnita

NIM : 187038001

Program Studi : Magister (S2) Teknik Informatika Jenis Karya Ilmiah : Tesis

Demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan kepada Universitas Sumatera Utara Hak Bebas Royalti Non-Eksklusif (Non-Exclusive Royalty Free Right) atas tesis saya yang berjudul:

KINERJA DYNAMIC PROGRAMMING, ALGORITMA A STAR DAN DIJKSTRA DALAM MENENTUKAN RUTE TERPENDEK

Beserta perangkat yang ada (jika diperlukan). Dengan Hak Bebas Royalti Non- Eksklusif ini, Universitas Sumatera Utara berhak menyimpan, mengalih media, memformat, mengelola dalam bentuk database, merawat dan mempublikasikan tesis saya tanpa meminta izin dari saya selama tetap mencantumkan nama saya sebagai penulis dan sebagai pemegang dan/atau sebagai pemilik hak cipta.

Demikian pernyataan ini dibuat dengan sebenarnya.

Medan, 02 September 2020

Henny Yusnita 187038001

(6)

v

LEMBAR PANITIA PENGUJI TESIS

Telah diuji pada

Tanggal : 11 September 2020

PANITIA PENGUJI TESIS

Ketua : Prof. Dr. Muhammad Zarlis Anggota : 1. Dr. Sawaluddin, M.IT

2. Dr. Syahril Efendi, S.Si. M.IT 3. Dr. Sutarman, M.Sc

(7)

RIWAYAT HIDUP

DATA PRIBADI

Nama Lengkap berikut gelar : Henny Yusnita, S.Si.

Tempat dan Tanggal Lahir : Medan, 2 Pebruari 1982

Alamat Rumah : Jl. Agenda Gg. Famili No. 54–B Ayahanda Medan

Telp/HP : 0813 9718 9249

Email : hennyyusnita1982@gmail.com

Instansi Tempat Kerja : Poltekkes Kemenkes Medan Jurusan Farmasi Alamat Kantor : Jl. Airlangga No. 20 Medan

DATA PENDIDIKAN

SD : SD Negeri No. 064014 TAMAT : 1994

SMP : SMP Negeri 17 Medan TAMAT : 1997

SMU : SMU Swasta Amir Hamzah Medan TAMAT : 2000

D3 : Ilmu Komputer FMIPA USU TAMAT : 2003

S1 : Matematika Peminatan Komputer FMIPA USU TAMAT : 2007

S2 : Teknik Informatika USU TAMAT : 2020

(8)

vii

UCAPAN TERIMA KASIH

Puji dan syukur kehadirat Allah SWT karena atas rahmat dan karuniaNya penulis dapat menyelesaikan tesis yang berjudul “KINERJA DYNAMIC PROGRAMMING, ALGORITMA A STAR DAN DIJKSTRA DALAM MENENTUKAN RUTE TERPENDEK” untuk memenuhi salah satu syarat dalam mencapai gelar Magister pada Jurusan Teknik Informatika Universitas Sumatera Utara Medan. Dalam kesempatan ini penulis menyadari bahwa banyak pihak yang ikut berperan dalam menyelesaikan tesis ini baik moril maupun materil.

Oleh karena itu penulis mengucapkan rasa terima kasih kepada:

1. Bapak Prof. Dr. Runtung Sitepu, S.H., M.Hum., selaku Rektor Universitas Sumatera Utara Medan.

2. Bapak Prof. Dr. Opim Salim Sitompul, M.Sc, selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara Medan.

3. Bapak Prof. Dr. Muhammad Zarlis, M.Sc, selaku Ketua Program Studi S2 Teknik Informatika, Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara Medan.

4. Bapak Dr. Syahril Efendi, S.Si, M.IT, selaku Sekretaris Program Studi S2 Teknik Informatika, Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara Medan

5. Bapak Prof. Dr. Muhammad Zarlis, M.Sc. Selaku Dosen Pembimbing I yang telah memberikan bimbingan dan arahan dalam penyelesaian tesis ini.

6. Bapak Dr. Sawaluddin, M. IT, selaku Dosen Pembimbing II yang juga telah memberikan saran dan masukan untuk perbaikan dan penyelesaian tesis ini.

7. Ibu Dr. Ida Nurhayati, M.Kes. selaku Direktur Poltekkes Kemenkes Medan, Ibu Dra. Masniah, M.Kes. Apt. selaku Ketua Jurusan Farmasi Poltekkes Kemenkes Medan yang telah memberikan kesempatan kepada penulis untuk mengikuti dan menyelesaikan Program Tugas Belajar Studi Magister Teknik Informatika pada Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara, Medan.

(9)

8. Kedua orangtua penulis: Ayahanda dan Ibunda (almh) atas dukungan dan doanya untuk kelancaran dalam menyelesaikan tesis ini.

9. Bapak/Ibu staf, dosen dan karyawan/ti Universitas Sumatera Utara.

10. Teman-teman seangkatan di MTI-Kom-B-2018 yang telah bersama-sama menempuh pendidikan pada Program Studi S2 Teknik Informatika Fakultas Ilmu Komputer danTeknologi Informasi Universitas Sumatera Utara Medan.

Penulis menyadari bahwa penelitian ini masih jauh dari kata sempurna, ini dikarenakan oleh keterbatasan, kemampuan dan pengetahuan penulis. Harapan penulis, semoga penelitian ini bermanfaat bagi penulis khususnya dan pembaca pada umumnya. Sekali lagi penulis mengucapkan terimakasih, semoga Allah SWT membalas kebaikan yang telah diberikan. Amin.

Medan, September 2020 Penulis

Henny Yusnita 187038001

(10)

ix

ABSTRAK

Dalam penelitian ini dilakukan mengukur kinerja Dynamic Programming dengan algoritma A Star dan algoritma Dijkstra untuk penentuan rute yang terpendek berdasarkan jarak. Algoritma A Star mencapai penampilan yang lebih baik dengan menggunakan heuristik. Algoritma ini menggunakan Best First Search (BFS) dan menemukan jalur dengan biaya terkecil (least-cost path) dari node awal (initial node) yang diberikan ke node tujuan (goal node). Algoritma ini menggunakan fungsi heuristik jarak ditambah biaya (biasa dinotasikan dengan f(x)) untuk menentukan urutan di mana search-nya melalui node-node yang ada di pohon (tree). Algoritma Dijkstra merupakan salah satu algoritma yang digunakan untuk menyelesaikan jalur terpendek dan tidak memiliki cost yang negatif. Strategi greedy yang digunakan dalam algoritma ini adalah setiap simpul dalam graph akan mencari nilai yang minimum. Algoritma ini akan mencari jalur dengan cost yang paling minimum antara titik yang satu dengan titik yang lainnya. Algoritma Dynamic Programming mencari rute yang terpendek berdasarkan stage-stage yang saling berhubungan dimana setiap satu stage berisi rute-rute tertentu yang akan dicari sousinya. Adapun rute yang dibahas pada penelitian ini adalah rute antara Jurusan Farmasi Poltekkes Kemenkes jalan Airlangga nomor 20 Medan menuju Politeknik Kesehatan Medan jalan Jamin Ginting Medan. Hasil percobaan adalah bahwa algoritma A Star, Dynamic Programming, Dynamic Programming-A Star menghasilkan jarak yang terpendek pendek yaitu sebesar 14 Km.

Keywords— Rute terpendek, algoritma A Star, algoritma Dijkstra dan algoritma Dynamic Programming

(11)

DYNAMIC PROGRAMMING PERFORMANCE, A STAR AND DIJKSTRA ALGORITHM TO FINDING THE SHORTEST PATH

ABSTRACT

In this study, a comparative analysis of A Star algorithm with Dynamic Programming algorithm and Dijkstra algorithm with Dynamic Programming algorithm is used to determine the shortest route based on distance. A Star's algorithm achieves better performance by using heuristics. This algorithm uses the Best First Search (BFS) and finds the path with the least cost (least-cost path) of the initial node (initial node) given to the destination node (goal node). This algorithm uses the heuristic function of distance plus cost (usually denoted by f (x)) to determine the order in which it searches through nodes in the tree. Dijkstra's algorithm is one of the algorithms used to solve the shortest path and has no negative costs. The greedy strategy used in this algorithm is that each node in the graph will find the minimum value. This algorithm will find the path with the minimum cost between one point and another point. Dynamic Programming Algorithm looks for the shortest route based on interconnected stages where each stage contains specific routes to be searched for. The route discussed in this study is the route between the Department of Pharmacy Polytechnic Ministry of Health Airlangga number 20 Medan to Medan Health Polytechnic road Jamin Ginting Medan.

The experimental results are that the A Star algorithm, Dynamic Programming, and Dynamic Programming-A Star produce the shortest shortest distance of 14 Km.

Keywords - Shortest route, A Star algorithm, Dijkstra algorithm and Dynamic Programming algorithm

(12)

xi

DAFTAR ISI

Halaman

PERSETUJUAN ... ii

PERNYATAAN ... iii

PERNYATAAN PERSETUJUAN PUBLIKASI ... iv

RIWAYAT HIDUP ... vi

UCAPAN TERIMA KASIH ... vii

ABSTRAK ... ix

ABSTRACT ... x

DAFTAR ISI ... xi

DAFTAR TABEL ... xiv

DAFTAR GAMBAR ... xv

BAB 1 : PENDAHULUAN 1.1 Latar Belakang Masalah ... 1

1.2 Rumusan Masalah ... 3

1.3 Batasan Masalah ... 4

1.4 Tujuan Penelitian ... 4

1.5 Manfaat Penelitian ... 4

1.6 Penelitian Terkait ... 5

BAB 2 : TINJAUAN PUSTAKA 2.1 Graf ... 8

2.1.1 Graf Berbobot ... 9

2.1.2 Representasi Graf ... 9

2.1.3 Matriks Ketetanggan (Adjacency Matriks) ... 9

2.1.4 Matriks Bersisian (Incidency Matriks) ... 10

2.2 Rute Terpendek (Shortest Path) ... 10

2.3 Algoritma BFS dan DFS ... 12

2.4 Dynamic Programming ... 14

2.5 Heuristik ... 18

(13)

2.6 Algoritma A Star ... 20

2.6 Algoritma Dijkstra ... 22

2.8 Algoritma ACO ... 24

2.9 Sistem Informasi Geografis ... 27

2.9.1 Komponen GIS ... 28

2.9.2 Google Maps ... 28

BAB 3 : METODOLOGI PENELITIAN 3.1 Pendahuluan ... 30

3.2 Rancangan Penelitian ... 31

3.3 Data dan bahan ... 32

3.4 Penentuan Rute Terpendek ... 32

3.5 Prosedur Penelitian ... 32

3.5.1 Pencarian Rute dengan Algoritma A Star ... 32

3.5.2 Pencarian Rute Terpendek dengan Algoritma Dijkstra ... 36

3.5.3 Pencarian Rute Terpendek dengan Dynamic Programming ... 41

3.5.4 Pencarian Rute dengan Algoritma Dynamic Programming-A Star ... 43

3.5.5 Pencarian Rute dengan Algoritma Dynamic Programming-Dijkstra ... 49

3.5.6 Pencarian Rute dengan Algoritma ACO ... 54

BAB 4 : HASIL DAN PEMBAHASAN 4.1 Hasil ... 63

4.1.1 Data yang digunakan ... 63

4.1.2 Hasil Pengujian ... 67

4.2 Pembahasan ... 73

BAB 5 : KESIMPULAN DAN SARAN 5.1 Kesimpulan ... 74

5.2 Saran ... 74

(14)

xiii

DAFTAR PUSTAKA ...

(15)

DAFTAR TABEL

Halaman

Tabel 3.1 Stage-1 Dynamic Programming Maju untuk Solusi Optimum ... 42

Tabel 3.2 Stage-2 Dynamic Programming Maju untuk Solusi Optimum ... 42

Tabel 3.3 Stage-3 Dynamic Programming Maju untuk Solusi Optimum ... 42

Tabel 3.4 Stage-4 Dynamic Programming Maju untuk Solusi Optimum ... 42

Tabel 3.5 Matriks Jarak Antar Node ... 55

Tabel 3.6 Matriks Visibilitas Antar Node ACO ... 55

Tabel 3.7 Matriks Nilai Pheromone Antar Node – ACO ... 56

Tabel 3.8 Probabilitas Node 1 ... 57

Tabel 3.9 Probabilitas Node 4 ... 58

Tabel 3.10 Probabilitas Node 2 ... 58

Tabel 3.11 Probabilitas Node 5 ... 59

Tabel 3.12 Tabu List Siklus-1 ACO ... 60

Tabel 3.13 Perubahan Pheromone Lokal Antar Node ACO ... 61

Tabel 3.14 Perubahan Pheromone Global Antar Node ACO ... 61

Tabel 3.15 Hasil Siklus 1 Algoritma Semut ACO ... 62

Tabel 3.16 Total Jarak Semua Siklus ACO ... 62

Tabel 4.1 Hasil Pengujian Algoritma A Star ... 68

Tabel 4.2 Hasil Pengujian Algoritma Dijkstra ... 69

Tabel 4.3 Hasil Pengujian Algoritma Dynamic Programming ... 70

Tabel 4.4 Hasil Pengujian Algoritma Dynamic Programming-A Star ... 71

Tabel 4.5 Hasil Pengujian Algoritma Dynamic Programming-Dijkstra ... 72

Tabel 4.6 Jarak Optimum Rute-4 ... 73

(16)

xv

DAFTAR GAMBAR

Gambar 2.1. Graf G ... 8

Gambar 2.2. Matriks Ketetanggaan ... 10

Gambar 2.3. Matriks Bersisian (Incidency Matriks) ... 10

Gambar 2.4. Graf S yang Merupakan Graf Berbobot ... 11

Gambar 2.5. Algoritma BFS ... 13

Gambar 2.6. Contoh Metode Pencarian DFS ... 13

Gambar 2.7. Prinsip Optimalitas ... 16

Gambar 2.8. Graf Multitahap ... 17

Gambar 2.9. Algoritma A Star ... 21

Gambar 2.10 Lintasan Semut Untuk Pencarian Makanan ... 24

Gambar 2.11 Komponen GIS ... 28

Gambar 3.1 Rancangan Penelitian ... 31

Gambar 3.2 Graf Rute Antar Node ... 32

Gambar 3.3 Langkah Pertama ... 34

Gambar 3.4 Perhitungan Jarak ... 34

Gambar 3.5 Langkah Kedua ... 35

Gambar 3.6 Langkah Ketiga ... 35

Gambar 3.7 Langkah Keempat ... 36

Gambar 3.8 Rute-Rute Algoritma Dijkstra ... 38

Gambar 3.9 Langkah Pertama Algoritma Dijkstra ... 38

Gambar 3.10 Langkah Kedua Algoritma Dijkstra ... 39

Gambar 3.11 Langkah Ketiga Algoritma Dijkstra ... 39

Gambar 3.12 Langkah Keempat Algoritma Dijkstra ... 40

Gambar 3.13 Langkah Kelima Algoritma Dijkstra ... 40

Gambar 3.14 Rute-rute dengan 3 Stage pada Algoritma Dynamic Programming ... 41

Gambar 3.15 Langkah Pertama Stage-1 ... 44

Gambar 3.16 Perhitungan Jarak Rute-1 Stage-1 ... 44

Gambar 3.17 Perhitungan Jarak Rute-2 Stage-1 ... 45

Gambar 3.18 Perhitungan Jarak Rute-3 Stage-1 ... 45

(17)

Gambar 3.19 Langkah Kedua Stage-1 ... 45

Gambar 3.20 Langkah Ketiga Stage-1 ... 46

Gambar 3.21 Langkah Ketiga Stage-1 ... 46

Gambar 3.22 Langkah Pertama Stage-2 ... 47

Gambar 3.23 Perhitungan Jarak Rute-1 Stage-2 ... 47

Gambar 3.24 Perhitungan Jarak Rute-2 Stage-2 ... 47

Gambar 3.25 Perhitungan Jarak Rute-3 Stage-2 ... 48

Gambar 3.26 Langkah Pertama Perhitungan Jarak Rute-3 Stage-2 ... 48

Gambar 3.27 Langkah Kedua Perhitungan Jarak Rute-3 Stage-2 ... 48

Gambar 3.28 Langkah Ketiga Perhitungan Jarak Rute-3 Stage-2 ... 49

Gambar 3.29 Stage-stage Graf Pencarian Rute Algoritma Dynamic Programming-Dijkstra ... 49

Gambar 3.30 Langkah Pertama Stage-1 Algoritma Dynamic Programming- Dijkstra ... 50

Gambar 3.31 Langkah Kedua Stage-1 Algoritma Dynamic Programming- Dijkstra ... 50

Gambar 3.32 Langkah Ketiga Stage-1 Algoritma Dynamic Programming- Dijkstra ... 51

Gambar 3.33 Langkah Keempat Stage-1 Algoritma Dynamic Programming- Dijkstra ... 51

Gambar 3.34 Langkah Kelima Stage-1 Algoritma Dynamic Programming- Dijkstra ... 52

Gambar 3.35 Langkah Pertama Stage-2 Algoritma Dynamic Programming- Dijkstra ... 52

Gambar 3.36 Langkah KeduaStage 2 Algoritma Dynamic Programming- Dijkstra ... 53

Gambar 3.37 Langkah KetigaStage 2 Algoritma Dynamic Programming- Dijkstra ... 53

Gambar 3.38 Langkah Keempat Stage 2 Algoritma Dynamic Programming- Dijkstra ... 54

Gambar 3.39 Langkah Kelima Stage 2 Algoritma Dynamic Programming- Dijkstra ... 54

Gambar 4.1 Graf Rute Jurusan Farmasi-Poltekes Medan ... 64

(18)

xvii

Gambar 4.2 Rute-1 ... 65

Gambar 4.3 Rute-2 ... 65

Gambar 4.4 Rute-3 ... 66

Gambar 4.5 Rute-4 ... 66

Gambar 4.6 Hasil Pencarian Rute Terdekat Algoritma A Star ... 67

Gambar 4.7 Grafik Rute Terpendek Algoritma A Star ... 68

Gambar 4.8 Grafik Rute Terpendek Algoritma Dijkstra ... 69

Gambar 4.9 Grafik Rute Terpendek Algoritma Dynamic Programming.... 70

Gambar 4.10 Grafik Rute Terpendek Algoritma Dynamic Programming A Star ... 71

Gambar 4.11 Grafik Rute Terpendek Algoritma Dynamic Programming Dijkstra ... 72

Gambar 4.12 Jarak Optimum Rute-4 Masing-Masing Algoritma ... 73

(19)

BAB 1

PENDAHULUAN

1.1. Latar Belakang

Algoritma Dijkstra adalah sebuah algoritma greedy yang umum digunakan pencarian rute terpendek dimana masukan dari algoritma ini adalah berupa sebuah graf berarah yang berbobot dengan sebuah titik asal dalam himpunan garis. Cara kerja algoritma ini adalah dengan mengunjungi semua node dan membuat rutenya. Jika ada dua rute menuju satu node yang sama, maka rute yang memiliki bobot terendah yang terpilih, sehingga semua node mempunyai rute yang optimal dan penelusuran ini dilakukan sampai node tujuan ditemukan. Adapun kelemahan dari algoritma Dijkstra adalah dimana tidak terpusatnya pencarian rute optimal, sehingga untuk graf yang kompleks proses pencarian membutuhkan waktu yang kurang efisien serta memiliki jumlah langkah yang banyak dan kesimpulan dari algoritma Dijkstra adalah beroperasi secara menyeluruh terhadap semua rute alternatif yang ada sampai diperoleh lintasan terpendek. Untuk mendapatkan lintasan terpendek, maka semua rute yang memungkinkan kembali dihitung, dimana untuk data yang besar atau graf yang kompleks algoritma ini akan membutuhkan waktu serta memori yang besar. (Makariye, 2017).

Algoritma A Star (A*) merupakan pengembangan dari algoritma Dijkstra dimana algoritma ini melakukan pencarian rute dengan menganalisis input, mengevaluasi rute- rute yang mungkinkan untuk mendapatkan suatu solusi. Secara umum, algoritma ini dipakai dalam graph traversal dalam menemukan rute-rute dan proses perencanaan rute yang dapat dilalui disekitar node-node (vertex). Ciri-ciri yang utama dari algoritmanya berupa penerapan Open List. Open List adalah merupakan node-node yang diperbolehkan untuk dilalui, node yang belum pernah dilewati atau node yang bukan rute buntu. Close list adalah node yang tidak bisa dilewati misalnya node tersebut adalah jalan buntu atau node yang sudah pernah dilewati, maka sebenarnya fungsi Close list agar algoritma tidak melakukan pengecekan kembali node yang sudah dilewati.

Sehingga algoritma pencarian rute-rute menjadi lebih cepat dan tidak terjadi lagi perulangan tak terbatas. Pada umumnya algoritma pencarian rute terdekat akan berhenti

(20)

2

jika node tujuan sudah ditemukan atau node-node pada Open list tidak ada lagi.

Implementasi Close list maupun Open list pada algoritma ini untuk pencarian rute terpendek dengan jumlah node yang sedikit menjadi kurang efisien yang berakibat akan membuat penggunaan algoritma ini menjadi lebih kompleks (Taufiq et al. 2015).

Dynamic programming adalah metode pencarian rute terpendek dengan cara membagi-bagi area pencarian menjadi beberapa area dan tahap sedemikian rupa sehingga rute yang diperoleh dari masing-masing area dianggap sebagai serangkaian rute terpendek yang saling mendukung. Adapun beberapa permasalahan yang dapat diselesaikan menggunakan Dynamic Programming antara lain penjadwalan kerja, pembagian operasi yang optimal, rute terpendek serta ukuran angkatan kerja. Adapun pendekatan yang dibuat pada algoritma Dynamic Programming dalam membuat keputusan yang optimal adalah dengan menggunakan prinsip optimalitas dengan membagi masalah menjadi beberapa bagian yang disebut stage. Kemudian memecahkan masalah disetiap stage dengan cara mengoptimalkan keputusan atas stage tersebut sampai seluruh persoalan terselesaikan. Keputusan yang terbaik dari seluruh stage ialah kumpulan dari sejumlah keputusan dari seluruh stage yang kemudian disebut keputusan yang optimal (Fawwaz et al. 2019).

Pada penelitian Jufri et al (2016) dilakukan modifikasi algoritma ant colony optimization untuk menentukan rute tersingkat pada kasus Traveling Salesman Problem kota-kota di pulau Jawa. Modifikasi dilakukan pada algoritma ini dengan memberikan nilai secara otomatis terhadap parameter jumlah semut sebesar 35% dari ukuran masalah dan berhasil meningkatkan kecepatan pencarian sebesar 3 kali lebih cepat dari algoritma ACO konvensional. Dari sudut pemakaian memori komputer, modifikasi algoritma ACO ini lebih efisien dengan rata-rata pemakaian memori sebesar 93% dari algoritma ACO konvensional.

Penelitian Prasetyo et al (2019) dilakukan pencarian rute terpendek dengan menggunakan objek yang nyata yaitu gambaran dari Google Maps dengan lokasi yang sebenarnya. Pada penelitian digunakan perangkat lunak sebagai alat bantu yaitu PathFinding.js dan parameter yang digunakan juga berbeda. Selanjutnya dilakukan perbandingan kinerja dari algoritma A* dan Dijkstra dalam penggunaan waktu proses pencarian rute terdekat dengan object pada Google Maps. Dari percobaan ini, dengan objek dari node awal dan node tujuan yang sama dapat disimpulkan bahwa algoritma A* menggunakan waktu yang lebih cepat dengan rata-rata waktu 0.37 ms dan langkah

(21)

sebanyak 200 sedangkan algoritma Dijkstra waktu rata-ratanya sebesar 0.41 ms dan jumlah langkah sebanyak 497. Kesimpulannya yaitu kinerja algoritma A* lebih baik dan lebih efisien daripada algoritma Dijkstra. Selain itu bahwa waktu yang dibutuhkan algoritma A* lebih stabil dari pada algoritma Dijkstra. Dengan menggunakan kombinasi nilai g dan h maka strategi yang digunakan algoritma A* cukup handal pada proses pencarian rute.

Pada penelitian Fawwaz et al (2019) dimana Artificial Intelligence dari algoritma Dynamic Programming digunakan untuk melakukan pencarian jalur guna untuk menyerang pemain pada permainan game. Hasil pengujian adalah polisi dalam game ini dari 10 percobaan yang dilakukan mencapai 90% keberhasilan berhasil mencari jalur terpendek dan optimal yang ditentukan oleh algoritma Dynamic Programming untuk menyerang pemain.

Pada penelitian Syukriyah et al (2016) yang berjudul Penerapan Algoritma A*

(Star) Untuk Mencari Rute Tercepat Dengan Hambatan, dimana penelitian ini berujuan untuk memahami cara kerja algoritma A* dalam mencari rute terpendek yang disimulasikan pada kondisi ketika seseorang mencari rute dalam keadaan jalanan macet.

Hasil percobaan memberikan gambaran yang lebih real proses algoritma A* pada pencarian rute terdekat.

Dalam penelitian ini metode Dynamic Programming akan digunakan pada beberapa algoritma konvensional untuk penentuan rute yang optimal pada lintasan terpendek berdasarkan jarak. Dari latar belakang penelitian di atas, maka penulis mengangkat judul dari tesis ini adalah “Kinerja Dynamic Programming, algoritma A*

dan Dijkstra Dalam Menentukan Rute Terpendek”.

1.2. Rumusan Masalah

Dengan melihat latar belakang diatas maka permasalahannya adalah pada algoritma Dijkstra, pencarian solusi berupa rute terpendek dilakukan dengan aturan yang baku tanpa memandang persoalan secara keseluruhan dimana algoritma ini beroperasi secara menyeluruh terhadap semua rute alternatif yang ada. Pada algoritma ini adalah tidak terpusatnya pencarian, sehingga proses pencarian akan mempunyai jumlah langkah yang besar (Prasetyo et al, 2019). Pada pencarian rute terpendek pada graf berbobot menggunakan algoritma Dijkstra dan A Star dengan persoalan dan kerumitan graf yang relatif kecil, maka akan cenderung menghasilkan running time yang kurang optimal.

(22)

4

Algoritma A* dalam mencari solusi untuk setiap iterasi terlebih dahulu membentuk dua buah array Open dan Close List sebagai tempat penyimpanan data yang membutuhkan resource memori. Algoritma Dijkstra untuk mendapatkan solusi maka pada setiap iterasi akan melakukan penelusuran terhadap semua rute yang memungkinkan sehingga menggunakan waktu yang kurang efisien.

1.3. Batasan Masalah

Adapun batasan permasalahan dari penelitian tesis ini adalah:

1. Algoritma yang dipakai pada Dynamic Programming adalah Dijkstra dan A*.

2. Memecahkan persoalan rute terpendek menggunakan Dynamic Programming rekursif maju.

3. Data rute yang dibahas pada penelitian ini rute antara Jurusan Farmasi Poltekkes Kemenkes Medan jalan Airlangga nomor 20 ke Direktorat Politeknik Kesehatan Medan jalan Jamin Ginting Medan.

4. Tidak membahas kemacetan, ruas jalan, kondisi jalan serta prioritas jalan.

5. Rute lintasan yang dilalui diasumsikan tidak mengalami kerusakan atau gangguan lainnya.

6. Rute lintasan yang dilalui menggunakan jalur darat yang dapat dilalui kendaraan bermotor.

1.4. Tujuan Penelitian

Penelitian ini bertujuan untuk mengkaji dan memahami implementasi Dynamic Programming pada algoritma Dijkstra dan A* untuk mendapatkan rute terpendek yang paling optimal dari masing-masing algoritma diatas.

1.5. Manfaat Penelitian

Dalam penelitian tesis ini, manfaat yang diharapkan adalah:

1. Diperolehnya informasi kinerja Dynamic Programming pada algoritma Dijkstra dan A* untuk pencarian rute terpendek.

2. Dapat memberikan informasi bagaimana Dynamic Programming dapat menyempurnakan algoritma pencarian rute yang konvensional.

(23)

1.6. Penelitian Terkait

Adapun penelitian yang sudah dilakukan peneliti lainnya adalah sebagai berikut:

No Judul Penulis Hasil

1. Penerapan Algoritma Dynamic Programming Pada Pergerakan Lawan Dalam Permainan Police dan Thief.

Fawwaz, E., Winarta, A., Selvianna, Ramli, J. J & Waruwu, L. M. (2019)

Algoritma Dynamic Programming

digunakan pada game untuk melakukan pencarian jalur guna untuk menyerang pemain. Hasil pengujian dari 10 percobaan yang dilakukan dapat mencapai 90 % keberhasilan dalam mencari jalur terpendek dan optimal 2. Penerapan Algoritma A*

(Star) Untuk Mencari Rute Tercepat Dengan Hambatan

Syukriyah Y., Falahah &

Solihin, H.

(2016)

Tujuan penelitian ini untuk memahami cara kerja algoritma A*

dalam mencari rute terpendek yang disimulasikan pada kondisi ketika seseorang mencari rute dalam keadaan jalanan macet. Hasil percobaan memberikan gambaran yang lebih jelas cara kerja algoritma A* pada pencarian rute terdekat.

3. Constrained Unscented Dynamic Programming (UDP)

Plancher, B., Manchester, Z. &

Kuindersma, S (2017)

Algoritma UDP

terbatas, Varian yang mampu memenuhi kondisi dan input nonlinier kendala dengan akurasi tinggi.

Menggabungkan

beberapa pendekatan penanganan kendala mungkin terbukti bermanfaat. Itu akan

lebih mudah

menggunakan teknik

(24)

6

QP yang ada di backward pass untuk menghitung batasan input.

4. Dynamic Programming Based Content Placement Strategy for 5G and Beyond Cellular Networks

Ayenew, T. M., Xenakis, D., Passas, N. &

Merakos, L.

(2018)

Strategi yang diusulkan memberikan kombinasi file populer untuk di-

cache yang

memaksimalkan

probabilitas hit cache optimal dengan kompleksitas waktu semu-polinomial.

Penelitian ini digunakan algoritma 0/1-Knapsack dengan asumsi itu file di-cache tanpa mempartisi.

5. A Star and Dijkstra Algorithm Comparison for Determining the Shortest Route

Prasetyo, A. C., Arnandi, M. P., Hudnanto, H. S.

& Setiaji, B.

(2019)

Hasil penelitian diperoleh bahwa kinerja algoritma A* lebih baik dari Dijkstra dengan rata-rata waktu 0.37 ms dan 200 langkah

program. Pada

algoritma Dijkstra diperoleh waktu rata- rata sebesar 0.41 ms dengan jumlah langkah sebanyak 497 langkah.

6. Modifikasi ACO untuk Penentuan Rute

Terpendek ke

Kabupaten/Kota di Jawa (Studi kasus TSP kota- kota di Jawa)/2016

Jufri, A., Sunaryo

& Santoso, P. B.

2016

Pada penelitian ini dilakukan perubahan algoritma ACO yaitu dengan cara pemberian nilai parameter secara otomatis berupa jumlah semut sebesar 35% dari ukuran masalah. Proses

ini mampu

meningkatkan

kecepatan pencarian rute sebesar 3 kali lebih cepat dari cepat dari

algoritma ACO

konvensional dengan pemakaian memori yang lebih efisien yaitu

(25)

rata-rata memori 93%

dari algoritma ACO konvensional.

(26)

BAB 2

TINJAUAN PUSTAKA

2.1. Graf

Sebuah Graf (G) yang ditulis dengan notasi G = (V, E) adalah merupakan pasangan himpunan (V, E) yang mana V adalah himpunan not null dari semua simpul atau node sedangkan E adalah merupakan himpunan sisi yang menghubungkan dengan sepasang simpul (Munir, 2016). Simpul-simpul pada graf biasanya diberi nomor dengan huruf, a, b, c,..., v, w, ..., atau bisa juga dengan bilangan bukan pecahan atau bilangan bulat seperti 1, 2, 3, ..., atau penggabungannya. Sisi yang terkoneksi dengan simpul a dengan simpul b dapat dinyatakan sebagai pasangan (a, b) atau dengan lambang x1, x2, ... dan jika x adalah sisi yang menghubungkan simpul a dengan simpul b maka x dapat ditulis sebagai x = (a, b).

Sebuah graf dapat digambarkan melalui diagram pada bidang dalam cara yang wajar. Tepatnya, setiap vertex v dalam V direpresentasikan oleh suatu titik (atau lingkaran kecil), dan setiap sisie = {a1, b2} direpresentasikan oleh suatu kurva yang menghubungkan titik-titik akhirnya a1 dan b2. Dibawah ini Gambar 2.1 sebagai ilustrasi dapat dilihat sebuah graf yang memiliki lima vertex dan enam edge

Gambar 2.1. Graf G (Munir, 2016)

a e4 c

b d e

e1

e2

e5

e3

e6

(27)

Pada Gambar 2.1. diatas dimana pada Graf G terdapat 5 vertex dan 6 edge. Graf G (V, E) dimana:

(i) V terdiri dari vertex a, b, c, d, e

(ii) E terdiri dari sisi (edge) : e1= {a, b}, e2= {b, d}, e3= {c, d}, e4= {a, c}, e5= {b, c}, e6= {d, e}

2.1.1. Graf Berbobot

Graf berbobot atau berlabel adalah merupakan pada tiap-tiap sisinya memiliki nilai atau bobot dimana untuk tiap sisinya merepresentasikan masalah yang sedang dibahas.

Bobot sisi-sisi pada graf bisa berupa jarak, lama, biaya, tingkat kemacetan, tingkat kesulitan, panjang rute jalan yang menghubungkan antar kota, waktu pengantaran, banyaknya persimpangan pada jalur, banyaknya tikungan, banyaknya tempat pengisian bahan bakar, harga pokok produksi dan lainnya. (Munir, 2005).

2.1.2. Representasi Graf

Sebuah graf dapat dinyatakan oleh sebuah matriks oleh sebab itu proses kalkulasi yang dibutuhkan dapat dengan gampang serta cepat. Kesulitan yang utama untuk merepresentasikan sebuah graf dalam bentuk matriks karena keterbatasan matriks dalam merangkum semua data yang kebutuhan pada sebuah graf, akibatnya akan ada banyak jenis matriks yang digunakan untuk merepresentasikan graf karena setiap matriks mempunyai kelebihan yang berbeda dalam merangkum data yang dibutuhkan pada pembentukan sebuah graf (Chartrand & Gary. 1993).

2.1.3. Matriks Ketetanggaan (Adjacency Matriks)

Matriks ketetanggaan adalah matriks yang memiliki ukuran ordo, dimana jika sebuah matriks disebut G = [gij], maka gij= 1 jika simpul i dan j bertetangga dan sebaliknya gij

= 0 jika simpul i dan j tidak bertetangga (Chartrand & Gary. 1993). Contoh matriks ketetanggaan seperti pada Gambar 2.2.

(28)

10

𝐴(𝐺) = [

0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 0 ]

Gambar 2.2. Matriks Ketetanggaan (Adjacency Matriks)

2.1.4. Matriks Bersisian (Incidency Matriks)

Misalkan graf G adalah sebuah graf dengan sejumlah simpul dan sisinya dimana matriks G tersebut adalah matriks berukuran x * y. Baris x menunjukkan simpul sedangkan kolom y menunjukkan label sisinya. Bila matriks tersebut dinamakan G = [gij], maka gij = 1 jika simpul i bersisian dengan sisi j, i dan sebaliknya gij= 0 jika simpul i tidak bersisian dengan sisi j. (Chartrand & Gary. 1993) dan sebagai contoh matriks bersisian adalah seperti pada Gambar 2.3.

𝐴(𝐺) = [

1 1 0 1 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 ]

Gambar 2.3. Matriks Bersisian (Incidency Matriks)

2.2. Rute Terpendek (Shortest Path)

Salah satu permasalahan optimasi adalah penentuan rute-rute terpendek pada sebuah graf adalah banyak dipakai dalam penentuan rute terpendek berupa graf yang berbobot atau berlabel. Rute terpendek dengan titik awal v0 dan titik akhir vk didefinisikan sebagai rute yang memiliki panjang lintasan yang minimum dari v0 ke vk. Misalkan v0 dinyatakan sebagai titik asal dan vk sebagai titik akhir. Jika terdapat m lintasan yang berbeda, maka lintasan terpendek antara v0 dan vk dinyatakan oleh Pt, dimana Pt adalah lintasan ke-t dari v0 ke vk, dengan persamaan 2.1.

lt (v0,vk) = 𝑀𝑖𝑛

𝑖=1,…,𝑚 li (v0,vk) ... (2.1) Pada Gambar 2.4 dapat dilihat bahwa terdapat enam buah lintasan dari vpd ke vpy dengan panjang lintasan yang berbeda. Lintasan terpendek dari titik vpd ke vpy adalah vpdvppvbtvpy dengan jarak d(vpd; vpy) = 114. Pada kasus ini dimungkinkan terdapat dua

(29)

atau lebih lintasan terpendek dengan panjang lintasan yang sama tetapi jalurnya berbeda. Dengan memperhatikan lintasan terpendek dari vpp ke vsw, maka dapat dilihat bahwa lintasan vppvbtvpyvsw mempunyai jarak 100 dan lintasan vppvslvsw juga mempunyai jarak 100. Jarak dari kedua lintasan tersebut sama, tetapi lintasan yang dilalui berbeda.

Pemilihan lintasan terpendek dari vpp ke vsw dilakukan dengan memilih salah satu. Jarak (distance) pada sebuah graf yang berbobot merupakan penjumlahan bobot minimum pada suatu lintasan (u; v) yang dinotasikan dengan d (u; v). Berdasarkan definisi panjang rute dan jarak pada suatu graf berbobot dapat dikatakan sebagai panjang lintasan dari lintasan terpendek. Sebuah Graf yang berbobot seperti pada Gambar 2.4.

Gambar 2.4. Graf S yang Merupakan Graf Berbobot

Dalam permasalahan lintasan terpendek (shortest path) adalah mencari atau menghitung rute terpendek pada graf dari sebuah grafik berbobot dan berarah. Kriteria yang harus terpenuhi dalam pencarian jarak terpendek adalah hampir sama dengan kriteria permasalahan pada minimum spanning tree. Perbedaan mendasar adalah pada shortest path berupa grafik berarah, adapun kriterianya adalah:

1. Semua sisi harus berbobot atau berlabel.

2. Tidak semua sisi harus terhubung.

3. Semua sisi harus berarah.

Perhitungan untuk mencari rute terpendek merupakan perhitung jarak satu per satu sesuai arah setiap sisinya dimana perhitungan dilakukan terhadap ruas grafik yang memiliki jalur awal dan jalur akhir.

(30)

12

2.3. Algoritma Breadth-First Search dan Depth First Search

Algoritma Breadth-First Search adalah melakukan pencarian dengan cara melebar serta mengunjungi node-node secara preorder yang berarti mengunjungi sebuah node lalu semua simpul yang bertetanggaan dengan node tersebut. Metode Traversal dalam sebuah graf yaitu melakukan kunjungan pada node-node secara sistematika yang terbagi dua yaitu pencarian melebar (breadth first search atau BFS) serta mendalam (depth first search atau DFS). Pada algoritma ini, semua node yang belum dikunjungi dan bertetangga dengan node-node yang tadi dikunjungi dan seterusnya.

Pada graf pohon berakar, semua node pada aras d dikunjungi terlebih dahulu sebelum node-node pada aras d+1, dimana algoritma ini memerlukan sebuah antrian q untuk menyimpan node-node yang telah dikunjungi. Node-node ini digunakan sebagai patokan dalam mengunjungi node-node yang bertetanggaan. Tiap node yang telah dikunjungi dimasukan ke dalam antrian hanya satu kali saja. Algoritma ini menggunakan table tipe boolean (true/false) untuk menyimpan node yang telah dikunjungi sehingga tidak ada node yang dikunjungi lebih dari satu kali.

Pada algoritma BFS, dimana node anak yang telah dikunjungi akan disimpan dalam suatu daftar antrian dimana daftar ini akan digunakan sebagai acuan node-node yang bertetangga dengannya yang akan dikunjungi dan disesuai urutan antriannya.

Adapun langkah-langkah algoritma BFS adalah:

1. Entry node ujung (akar) pada daftar antrian.

2. Baca node di awal antrian, lalu periksa apakah node merupakan node tujuan.

3. Jika node merupakan node tujuan, pencarian selesai dan hasilnya.

4. Jika node bukan tujuan, masukkan semua node yang bertetangga dengan node tersebut pada daftar antrian.

5. Jika daftar antrian sudah kosong dan setiap node sudah dicek, maka pencarian selesai dan mengembalikan hasil solusi tidak ditemukan.

6. Ulangi pencarian dari langkah kedua.

(31)

Sebagai contoh algoritma Breadth First Search adalah sebagai berikut:

Gambar 2.5. Algoritma Breadth First Search

Penyelesaian pencarian BFS diatas adalah:

Gambar (a) BFS (a): 1, 2, 3, 4, 5, 6, 7, 1.

Gambar (b) BFS (b): 1, 2, 3, 4, 5, 6, 7, 1 Gambar (c) BFS (c): 1, 2, 3, 4, 5, 6, 7, 8, 9

Algoritma Depth First Search (DFS) adalah melakukan kunjungan pada graf dengan prinsip kedalamannya. Node dikunjungi mulai dari root kemudian ke salah satu node anaknya yaitu pada node sebelah kiri, maka penelusuran dilakukan terus melalui node anak pertama dari node anak pertama tingkat sebelumnya hingga mencapai tingkat yang paling dalam. Setelah sampai pada tingkat yang paling dalam, maka kunjungan akan dikembalikan ke satu tingkat diatasnya untuk mengunjungi node anak kedua pada pohon biner yaitu node sebelah kanan lalu mengunjungi node anak pertama kembali sampai ke tingkat yang paling dalam. Sebagai contoh penelusuran pada pohon biner dengan algoritma Depth First Search dapat dilihat seperti pada Gambar 2.6.

Gambar 2.6. Contoh Metode Pencarian DFS

(32)

14

Penyelesaian penelusuran diatas: A – B – D – H – E – I – C – F – G – J – K – L

Dalam penggunaannya pada pencarian algoritma DFS hanya dapat diselesaikan dengan cara rekursif atau dengan bantuan struktur data stack dimana stack yang dipakai adalah isi elemennya berupa node pohon dengan langkah sebagai berikut:

1. Entry sebuah node root ke dalam stack.

2. Ambilah lalu simpan node dari tumpukan paling atas.

3. Buang node stack teratas dengan prosedur pop.

4. Cek node yang disimpan tadi mempunyai anak node.

5. Jika ya, push semua anak node yang dibangkitkan ke dalam stack.

6. Jika tumpukan kosong maka berhenti, selain itu kembali ke langkah dua.

Pada kasus pohon biner di atas, maka urutan langkah dan kondisi stack-nya pada setiap iterasi adalah:

Pada contoh diatas penggunaan prioritas dalam pemasukan anak node dari kanan terlebih dahulu ke dalam stack, sehingga pada iterasi ke-2 elemen A dibuang dari stack dan dimasukkan anak nodenya dahulu yaitu C, lalu B ke dalam stack. Selain itu dapat dilihat stack paling atas (biru) yang pada tiap iterasinya mempunyai urutan A – B – D – H – E – I – C – F – G – J – K – L. Pada iterasi ke 13 kondisi stack sudah kosong disebabkan pada saat node J dibangkitkan, maka tidak ada anak node yang dimasukkan ke dalam stack.

2.4. Dynamic Programming

Dynamic programming adalah sebuah proses yang dipakai untuk menggambarkan langkah-langkah penyelesaian masalah dalam hal ini pencarian rute-rute dimana penyelesaian yang diinginkan adalah yang paling optimum atau disebut sebagai optimum global, algoritma ini pertama kali digunakan pada tahun 1940-an oleh Richard Bellman (Ayenew et al, 2018).

(33)

Solusi yang optimal untuk submasalah-submasalah (subproblem) dapat digunakan untuk menemukan solusi optimal yang utuh untuk masalah yang dihadapi disebut Optimal Substructure. Sebagai contoh dalam suatu graph jalur terpendek (shortest path) dari node asal sampai tujuan dapat dicari dengan menghitung sub jalur terpendek dari semua node tetangga asal menuju node tujuan dan selanjutnya menggunakan sub jalur terpendek tersebut untuk sebagai rute-rute yang terpendek.

Adapun langkah-langkah dengan menggunakan optimal substructure yaitu:

1. Pemecahan masalah menjadi masalah yang lebih kecil.

2. Mencari solusi masalah yang kecil tersebut dengan menggunakan tiga langkah secara rekursif.

3. Gunakan solusi-solusi optimal untuk masalah yang kecil tersebut untuk membangun solusi optimal yang utuh pada masalah yang sedang diselesaikan.

Pada algoritma Dynamic Programming dimana untuk setiap masalah diselesaikan dengan cara membaginya kedalam submasalah yang lebih kecil lagi dan seterusnya sampai diperoleh suatu masalah yang sederhana yang dapat diselesaikan dengan cepat.

Metode Dynamic Programming adalah dimana dilakukan pemecahan masalah dengan cara menguraikan solusi menjadi sekumpulan (stage). Solusi dari setiap stage sedemikian akan membentuk sebuah solusi yang optimal dari persoalan dapat dipandang dari serangkaian keputusan yang berkaitan.

Dynamic programming merupakan sebuah istilah yang muncul disebabkan kecederungan metode ini untuk menganalisis serta mendokumentasikan hasil kalkulasi pada setiap stage dengan menggunakan beberapa tabel sehingga perhitungan solusi dapat dengan mudah diketahui secara detail. Ciri-ciri penyelesaian sebuah masalah dengan menggunakan metode Dynamic programming adalah sebagai berikut:

1. Tersedia banyak pilihan yang memungkinkan dalam penyelesaian problem.

2. Penyelesaian pada setiap stage adalah merupakan hasil solusi stage sebelumnya.

3. Membatasi sejumlah pilihan yang harus dipertimbangkan pada suatu stage dengan menggunakan persyaratan optimasi dan kendala.

Dalam metode Dynamic Programming merupakan rangkaian keputusan yang optimal dibuat dengan menggunakan prinsip optimasi dimana jika solusi optimal global terpenuhi, maka bagian solusi sampai tahap ke-k juga harus optimal (Plancher et al.

2017). Pada metode ini, prinsip optimalitas berarti jika proses dimulai dari tahap k ke tahap k + 1, maka digunakan hasil optimal dari tahap k tanpa harus kembali ke tahap

(34)

16

awal lagi dan biaya atau jarak pada tahap k+1 adalah biaya atau jarak yang dihasilkan pada tahap k ditambah biaya atau jarak dari tahap k ke tahap k + 1 seperti pada Gambar 2.7.

Gambar 2.7. Prinsip Optimalitas (Munir, 2013)

Dynamic Programming memiliki karakteristik tersendiri sebagai berikut:

1. Membagi masalah menjadi stage-stage dimana hanya diambil satu keputusan setiap satu stage.

2. Masing-masing stage terdiri dari status yang saling berkorespondensi dengan stage tersebut dan status adalah merupakan sejumlah kemungkinan masukan pada tahap tersebut.

3. Solusi setiap stage dinyatakan dengan status yang bersangkutan ke status berikutnya pada stage berikutnya.

4. Biaya pada setiap stage akan meningkat secara teratur seiring dengan bertambahnya jumlah stage.

5. Biaya pada setiap stage tergantung pada biaya pada stage yang sudah berjalan.

6. Solusi pada masing-masing stage bersifat independen terhadap solusi yang dilakukan pada stage sebelumnya.

7. Terdapat relasi rekursif yang menandai solusi untuk setiap status pada stage k yang memberikan solusi yang terbaik setiap status pada stage k + 1.

8. Prinsip-prinsip optimalitas berlaku pada persoalan tersebut.

Pendekatan-pendekatan pada Dynamic Programming:

1. Pendekatan maju atau forward ataupun up-down.

2. Pendekatan mundur atau backward ataupun bottom-up.

Pada metode ini, diberikan notasi x1, x2, …, xn yang menyatakan peubah (variable) keputusan yang harus dibuat masing-masing stage 1, 2, …, n, maka:

1. Dynamic Programming maju adalah proses pencarian solusi bergerak dari tahap 1, sampai tahap ke-n dimana runtunan peubah keputusan adalah x1, x2, …, xn.

(35)

2. Dynamic Programming mundur adalah proses pencarian solusi bergerak dari tahap n, terus mundur ke tahap n – 1, n – 2 dan seterusnya sampai tahap 1 dimana runtunan peubah keputusan adalah xn, xn-1, …, x1. tahap k +1 yaitu ongkos yang dihasilkan pada tahap k ditambah dengan ongkos dari tahap k ke tahap k + 1.

Sedangkan prinsip optimalitas pada Dynamic Programming mundur adalah biaya pada tahap k = (biaya pada tahap k + 1) + (biaya dari tahap k + 1 ke tahap k ), k = n, n – 1,

…, 1

Adapun langkah pengembangan algoritma Dynamic Programming adalah:

a) Melakukan karakteristik struktur solusi optimal.

b) Mendefinisikan secara rekursif nilai solusi optimal diatas.

c) Menghitung nilai solusi optimal secara maju atau mundur.

d) Melakukan konstruksi solusi optimal.

Pada prinsipnya algoritma Dynamic Programming adalah berdasarkan pada Graf multitahap dimana setiap node didalam graf tersebut menyatakan status dan V1, V2, … menyatakan stage. Gambar 2.8 menunjukkan sebuah graf multitahap.

Gambar 2.8. Graf Multitahap (Munir, 2013)

Pada persoalan graf Multitahap dikaitkan dengan Dynamic Programming, dikenal beberapa istilah yaitu:

1. Tahap (k) adalah proses memilih node tujuan berikutnya yang pada Gambar 2.6, ada sebanyak 5 tahap.

2. Status (s) adalah kondisi proses yang berhubungan dengan masing-masing tahap seperti node-node pada graf.

(36)

18

Relasi rekurens berikut menyatakan lintasan terpendek dari status s ke xk pada tahap k:

fk (s) = csxk (basis) fk (s) = minxk {csxk + f k+1(xk)}, (rekurens) k = 1, 2, 3

Keterangan:

a. xk : peubah keputusan pada tahap k (k = 1, 2, 3).

b. csxk : bobot (cost) sisi dari s ke xk

c. fk (s, xk) : total bobot lintasan dari s ke xk d. fk (s) : nilai minimum dari fk (s, xk)

Tujuan Dynamic Programming maju ialah mendapatkan fn(s) dengan cara mencari f1(s), f2(s), f3(s) terlebih dahulu.

2.5. Heuristik

Pengertian heuristik berasal dari bahasa Yunani “Εὑρίσκω” dengan makna menemukan dimana ini adalah verbal yang dipakai dalam teknik analisa dengan basis pengalaman (experience) yang dapat membantu dalam menyelesaian suatu masalah. Pada dasarnya makna heuristik adalah sebuah metode analisis untuk meningkatkan kinerja algoritma pada proses komputasinya. Heuristik bidang komputer adalah sebuah metode agar mampu menyelesaikan masalah tanpa perlu pembuktian kebenaran solusinya, tetapi solusi yang dihasilkan umumnya adalah solusi yang akurat (Taufiq et al, 2015).

Pada bidang komputer, fungsi heuristik adalah sebuah sistem yang secara sederhana dapat mampu menghasilkan solusi atau penyelesaian masalah berkaitan dengan heuristik umum, tetapi untuk permasalahan yang komplek belum ada pengujian secara formal terhadap tingkat akurasinya. Bidang ilmu heuristik adalah mempelajari tentang bagaimana sebuah informasi dapat dicari dan dipelajari yang menjelaskan tentang cara pandang sebuah masalah serta menemukan solusi atas masalah tersebut secara induksi dimana sering sekali fungsi heuristik dianggap sebagai “rule of thumb”

yang harus dipelajari.

Heuristik juga adalah merupakan algoritma yang mampu bekerja secara cepat dengan hasil yang baik. Pada perangkat lunak anti virus, fungsi heuristik mempunyai makna yang lebih spesifik sebagai suatu serangkaian kriteria sebab pada fungsi ini bukan instruksi yang digunakan untuk mendeteksi perilaku malicious (penyusup) tanpa harus mengenali dampak program tersebut. Hal diatas ini merupakan cara kerja scan

(37)

atas virus lama berbasis signature, dan sebagai contoh pada proses identifikasi terhadap program dan virus komputer yang spesifik.

Pada basis pemrograman, fungsi heuristik ini memiliki peran ganda dalam mendukung kinerja anti virus dimana kecepatan dan hasil deteksinya harus diutamakan.

Dengan kata lain, istilah heuristik diterapkan pada bidang sains untuk konteks yang sama yaitu dengan tujuan utamanya adalah peningkatan kinerja khususnya yang terkait dengan kecepatan dan kinerja secara keseluruhannya. Pada waktu jumlah virus yang berhasil dikenali mengalami kenaikan jumlah, maka muncul kebutuhan untuk menaikkan kecepatan deteksinya.

Metode lainnya dari teknik analisa heuristik adalah berupa program anti virus akan melakukan de-kompilasi program yang mencurigakan. Selanjutnya dilakukan analisis perangkat lunaknya. Perangkat lunak dari file yang dicurigai tersebut selanjutnya dibandingkan dengan perangkat lunak dari virus-virus yang sudah ada atau dikenal sebelumnya. Jika diperoleh kesesuaian pada tingkat persentase tertentu dimana source code dari file tertentu dengan code dari virus yang sudah ada atau dikenal, juga dari aktifitas viralnya, maka file yang mencurigakan tersebut akan ditandai dan pengguna komputer akan diberi peringatan. Proses heuristik yang dipakai pada program anti malware adalah proses pendeteksian serta pengenalan virus, dengan aturan sebuah program virus adalah sebagai berikut:

1. Mampu meng-copy dirinya dan masuk ke dalam program lain (cara kerja virus klasik).

2. Mampu merekam secara langsung ke dalam disk.

3. Mampu tetap berada pada memori (RAM) komputer maupun komputer sudah mati.

4. Mampu melakukan decrypts saat dijalankan (sebuah metode untuk menghindar dari scanner signature).

5. Mampu menempel di port TCP/IP dan menyadap instruksi-instruksi dari koneksi didalam jaringan.

6. Mampu memanipulasi file antara lain meng-copy, menghapus, memodifikasi, merubah nama, memindahkan atau mengganti file-file yang dibutuhkan oleh sistem operasi.

(38)

20

Beberapa kriteria pada mesin heuristik dalam proses mengenali, bisa lebih berat, oleh sebab itu score-nya lebih tinggi dari pada yang lain, artinya bahwa jika ditemukan ada kesesuaian dengan kriteria tertentu, akan diindikasikan sebagai kehadiran perangkat lunak jahat atau malicious software (malware), demikian pula bisa terjadi jika sebuah program memenuhi beberapa kriteria yang berbeda dalam rules tersebut.

2.6. Algoritma A Star (A*)

Adapun algoritma A* merupakan algoritma ditemukan oleh bapak Nils Nilsson di 1964 dengan pengembangannya diambil dari algoritma Dijkstra yang lebih dulu ada dengan diberi nama algoritma A1. Bertram Raphael, pada 1967 melanjutkan pengembangan A1 menjadi lebih sempurna menjadi algoritma A2 dimana algoritma ini gagal membuktikan keunggulannya. Pada tahun 1968 bapak Peter E. dapat membuktikan keunggulan algoritma A2 dibandingkan dengan algoritma A1. Untuk selanjutnya, algoritma A2 dinyatakan sebagai algoritma paling optimal untuk kasus optimasi namanya diganti menjadi A*. Berdasarkan waktu pencarian maka algoritma A* lebih baik daripada algoritma Dijkstra dengan penggunaan pencarian heuristik.

Dengan berjalannya waktu, maka algoritma A* menjadi terkenal sebagai salah satu algoritma yang paling banyak dipakai pada pencarian rute dan penelusuran grafis yaitu proses plotting. Algoritma ini mencari jalur atau rute dengan sangat efisien dimana algoritma ini juga dikembangkan dari metode dasar Best First Search (Syukriyah et al.

2016).

Algoritma A* akan melakukan pemeriksaan jarak disetiap node dengan menggabungkan dengan fungsi heuristik g(n), nilai untuk mencapai ke titik tujuan dari titik awal dan h(n) serta jarak ke node tujuan. Algoritma ini juga memakai fungsi jarak ditambah biaya dengan notasi f(x) yang berfungsi untuk penentuan urutan kunjungan dalam proses pencarian node pada graf. Gabungan fungsi distance – plus – cost adalah jumlah dua fungsi jarak ditambah biaya dengan fungsi heuristik g(x) dan fungsi path- cost dengan notasi g(x) merupakan total jarak dari node asal ke node tujuan.

Algoritma A Star melakukan pencarian rute-rute dengan cara pencarian rute yang mempunyai kemungkinan besar dapat menuju ke tujuan, dimana dengan mengambil jarak perjalanan ke arah tujuan dengan fungsi g(x) yang merupakan fungsi heuristiknya adalah total jarak dari node asal. Beberapa terminologi dasar pada algoritma ini antara lain titik asal, A, node, unwalkable, daftar open, daftar closed, cost atau jarak.

(39)

Prinsip utama algoritma ini adalah mencari rute-rute terpendek dari node asal ke node tujuan berdasarkan jarak terpendek. Proses awal dilakukan dengan menempatkan A pada node asal, lalu mencari jarak keseluruh node tetangga dengan A ke dalam daftar open. Selanjutnya algoritma ini mencari nilai H yang paling kecil dari node-node pada daftar open tersebut. Selanjutnya dilakukan pemindahan A ke node yang memiliki nilai H terkecil. Node sebelum A akan disimpan sebagai daftar parent dari A dan dimasukkan pada daftar closed. Jika node tetangga lainnya dengan A sudah dipindah, namun belum masuk pada daftar open, maka node tersebut harus dimasukkan ke daftar open.

Selanjutnya bandingkan nilai G yang ada dengan nilai G sebelumnya, jikalau nilai G-1 lebih pendek, maka point A dikembali ke posisi awalnya. Semua node-node yang sudah dikunjungi dimasukkan ke dalam daftar closed. Proses tersebut dilakukan berulang sampai diperoleh rute terdekat atau tidak ada lagi ada node pada daftar open. Secara konseptual cara kerja algoritma A* ada pada Gambar 2.9 berikut.

Gambar 2.9. Algoritma A Star

Pada algoritma A Star ini memiliki dua fungsi utama dalam pencarian solusi yang optimum yaitu fungsi utamanya adalah sebagai g(x) yang menghitung jarak total atau waktu atau biaya yang diperoleh dari node asal menuju node tujuan. Fungsi yang kedua adalah fungsi heuristik yaitu perkiraan total jarak atau waktu atau biaya dari node asal menuju node tujuan akhirnya.

(40)

22

g(.n.) =√𝑋𝑛2+ 𝑌𝑛2... (2.2) h(.n.) = |X(target) – X(n)| + |Y(target) – Y(n)| ... (2.3) f(.n.) = g(n)+f(n) ... (2.4) Adapun prinsip yang utama dari algoritma ini adalah proses pencari rute-rute terdekat dari sebuah node asal ke node tujuan dengan membandingkannya dengan harga (f) yang terkecil dengan proses diawali dengan meletakkan point A pada titik awal atau node awal. Selanjutnya dilakukan pemasukkan seluruh node-node yang bertetangga ke dalam daftar open. Daftar Open adalah yaitu memori penyimpanan node-node yang mungkin diakses dari node asal ke node akhir atau tujuan. Selajutnya dilakukan pencarian nilai f yang paling kecil dari daftar open, lalu pindahkan point A kenode yang memiliki nilai f yang paling minim dimana node A-1 akan disimpan sebagai parent dari A dan masukkan ke daftar closed yaitu sebagai tempat menyimpan data node sebelum A yang juga merupakan rute terpendek yang telah diperoleh sebelumnya.

Pada penelusuran untuk mengunjungi node-node prosesnya terdapat aturan baku dimana jika terdapat node lain yang bertetangga dengan A ataupun node tersebut sudah pindah ke node lainnya tidak masuk pada daftar Open, maka node tersebut dimasukkan ke daftar Open dan bandingkanlah nilai G-nya dengan nilai G sebelumnya. Jika nilai G sebelumnya lebih kecil maka nilai G yang pada langkah awal tidak perlu dibandingkan dengan nilai G sekarang dan pindahkan point A ke posisi asal. Node-node yang sudah pernah dikunjungi masukkan semua kedalam daftar Close. Lakukan proses tersebut sampai atau tidak ada lagi node pada daftar Open yang berarti rute terdekat sudah diperoleh.

2.7. Algoritma Dijkstra

Algoritma Dijkstra banyak dipakai dalam penentuan rute-rute terdekat dari node awal ke node tujuan pada graf berarah dan berbobot. Algoritma ini diciptakan oleh bapak Edsger Wybe Dijkstra di tahun 1959. Pada algoritma ini dimana lintasan terpendek untuk suatu node tertentu dengan node lainnya diperoleh dari pohon keputusan yang memiliki nilai minimum.

Strategi yang dipakai pada algoritma Dijkstra yaitu dengan membentuk suatu pohon Dijkstra yang diawali pada titik v0 dengan menambahkan sisi terkait dan terdekat dengan titik v0. Dimana pada penambahan sisi tersebut dilakukan pada setiap pengulangan atau ephoch dan dilakukan dengan menggunakan fungsi Dijkstra-

(41)

nextEdge. Algoritma Dijkstra memiliki sifat seperti algoritma greedy yang rakus memori. Algoritma ini banyak digunakan untuk mencari jalur terpendek pada graf yang tidak memiliki biaya yang negatif. Sifat greedy pada algoritma ini adalah dimana akan dicari nilai yang minimum setiap node pada graf tanpa melihat kemungkinan. Algoritma ini melakukan pencarian rute terpendek atau minim antara satu node dengan node lainnya dan juga algoritma ini berfungsi untuk menghitung total jarak pada rute terpendek yang sudah diperoleh (Fakhri, 2008).

Sifat algoritma ini adalah dengan memilih node asal serta menentukan letak kemungkinan jarak terpendek yaitu tak terhingga ke setiap node lainnya. Langkah berikutnya adalah pemilihan jarak yang paling kecil untuk setiap node dimana biayanya berupa jarak, ongkos atau waktu dari node asal ke node tujuan (Wenzheng et al. 2019).

Langkah atau cara kerja algoritma Dijkstra secara umum adalah:

1. Melakukan penilaian bobot atau jarak dari satu node ke node lainnya. Selanjutnya tentukan nilai n sampai kenilai tak berhingga (∞) pada node yang lainnya atau node yang masih kosong.

2. Semua node dicari untuk yang belum dilewati dengan node awal sebagai acuan.

3. Pertimbangkan node lainnya yang belum dikunjungi dan hitung jaraknya dari node asal, misalnya node A ke node B memiliki jarak 5 dan dari node B ke node C bernilai 2. Maka jarak ke node C yang melewati node B adalah 5 + 2 = 7. Jika angka 7 sebagai jarak ini lebih kecil dari sebelumnya yang telah dicatat, maka hapus data lama dan simpan ulang nilai (jarak) yang baru tersebut.

4. Jika jarak terhadap node lain sudah dibandingkan, maka tandai node ini yang sebagai node yang sudah dikunjungi lalu disimpan jarak terakhir dari node keberangkatan dan yang paling pendek jaraknya.

Tentukan node yang belum dikunjungi dengan jarak terkecil dari node asal sebagai node awal selanjutnya dan ulangi proses pada langkah ke-3.

2.8. Ant Colony Optimization (ACO)

Algoritma ACO diperkenalkan oleh Marco Dorigo (Ping Duan, 2016) yang merupaakan sebuah metode metaheuristik yang terinspirasi dari kecerdasan semut dalam pencarian jalur terpendek menuju sumber makanan. Algoritma ini melakukan penerapan masalah

(42)

24

optimasi dengan berprinsip komunikasi antar semut dimana seekor semut akan meninggalkan jejak berupa zat feromon dimana zat ini yang akan menjadi pedoman bagi semut yang lain untuk melakukan pencarian. Semakin pendek rute yang akan dikunjungi, maka umumnya akan semakin sedikit penguapan dan membuat semakin tinggi kadar zat feromon pada jalur lintasan semut tersebut dimana para semut cenderung akan bergerak mengikuti lintasan yang mempunyai zat feromon yang tinggi (Sitanggang, 2018).

Gambar 2.10. Lintasan Semut Untuk Pencarian Makanan

Adapun langkah-langkah algoritma ACO dalam pencarian rute terpendek adalah sebagai berikut (Wang et al, 2015):

1. Inisialisasi parameter yang digunakan dalam algoritma ACO:

a. Penetapan intensitas jejak semut antar node dan perubahannya (τij)

b. Penetapan jumlah node (n) termasuk x dan y (koordinat) atau dij yaitu jarak antar node.

c. Penentuan node keberangkatan dan node akhir d. Penetapan siklus semut (Q)

e. Penetapan nilai pengendali intensitas jejak semut (α) f. Penetapan nilai pengendali visibilitas (β)

g. Tetapan nilia visibilitas antar node =1/dij (ηij) h. Penetapan banyaknya semut (m)

i. Penetapan nilai penguapan jejak semut (ρ) j. Peneapan jumlah siklus maksimum (NCmax)

(43)

Nilai NCmax bersifat tetap selama algoritma dijalankan, sedangkan τij akan selalu diperbaharui harganya pada setiap siklus algoritma mulai dari siklus pertama (NC=1) sampai tercapai jumlah siklus maksimum (NC=NCmax) atau sampai terjadi konvergensi.

2. Inisialisasi node awal pada setiap semut dan setelah itu dilakukan inisialisasi τij kemudian sejumlah m semut ditempatkan pada node awal yang telah ditentukan.

3. Masukkan node pertama ke dalam tabu list. Hasil inisialisasi node awal semut pada langkah diatas, harus diisikan sebagai elemen pertama pada tabu list dan hasilnya adalah terisinya elemen pertama tabu list setiap semut dengan indeks node awal.

4. Susun rute kunjungan setiap semut untuk setiap node. Kumpulan semut-semut yang sudah terdistribusi ke node awal akan mulai melakukan kunjungan dari node awal dan salah satu node lainnya sebagai node tujuan lalu dari node kedua, masing – masing semut akan melanjutkan kunjungannya dengan memilih salah satu dari node yang tidak terdapat pada tabuk sebagai node tujuan selanjutnya.

Perjalanan semut-semut akan berlangsung secara terus menerus hingga mencapai node tujuan. Jika s menyatakan indeks urutan kunjungan, maka node asal dinyatakan sebagai tabuk(s) dan node-node lainnya akan dinyatakan dalam {N-tabuk}, maka untuk menentukan node tujuan akan digunakan persamaan probabilitas node untuk dikunjungi sebagai berikut:

𝑝𝑖𝑗𝑘 = {

[𝜏𝑖𝑗 (𝑡)]𝛼[𝜂𝑖𝑗]𝛽

∑[𝜏𝑖𝑗 (𝑡)]𝛼[𝜂𝑖𝑗]𝛽 𝑗𝑖𝑘𝑎 𝜖 𝑑𝑖𝑝𝑒𝑟𝑏𝑜𝑙𝑒ℎ𝑘𝑎𝑛 𝑘 0 𝑢𝑛𝑡𝑢𝑘 𝑦𝑎𝑛𝑔 𝑙𝑎𝑖𝑛𝑛𝑦𝑎

} ... (2.5)

Dengan i sebagai indeks node asal dan j sebagai indeks node tujuan.

5. Hitunglah panjang jalur atau rute yang telah dilalui setiap semut. Menghitung panjang jalur tertutup (length closed tour) atau Lk setiap semut dilakukan setelah satu siklus diselesaikan oleh semua semut. Perhitungan dilakukan berdasarkan tabuk masing – masing dengan persamaan berikut:

𝐿𝑘 = 𝑑𝑡𝑎𝑏𝑢𝑘(𝑛),𝑡𝑎𝑏𝑢𝑘(1)+ ∑𝑛−1𝑠=1𝑑𝑡𝑎𝑏𝑢𝑘(𝑠),𝑡𝑎𝑏𝑢𝑘(𝑠+1) ...(2.6) Dengan dij adalah jarak antar node i ke node j yang dihitung berdasarkan persamaan:

(44)

26

𝑑𝑖,𝑗 = √(𝑥𝑖 − 𝑥𝑗)2+ (𝑦𝑖− 𝑦𝑗)2 ... (2.7) 6. Pencarian jalur terpendek. Setelah Lk setiap semut dihitung, akan diperoleh nilai

minimal panjang jalur tertutup setiap siklus atau LminNC dan nilai minimal panjang jalur tertutup secara keseluruhan adalah Lmin.

7. Perhitungan perubahan harga intensitas jejak kaki semut antar kota. Koloni semut akan meninggalkan jejak – jejak kaki pada lintasan antar kota yang dilaluinya. Adanya penguapan dan perbedaan jumlah semut yang lewat, menyebabkan kemungkinan terjadinya perubahan harga intensitas jejak kaki semut antar kota. Setelah semua semut menyelesaikan perjalanannya masing- masing maka pheromone diperbaharui. Dalam Ant System, jumlah pheromone ij) akan berubah sesuai dengan persamaan dibawah ini:

𝜏𝑖𝑗 (𝑡 + 𝑛) = 𝜌𝜏𝑖𝑗 (𝑡) + ∑𝑚𝑘=1Δ𝜏𝑖𝑗𝑘 ... (2.8) Perhitungan harga intensitas jejak kaki semut antar kota untuk siklus selanjutnya. Harga intensitas jejak kaki semut antar kota pada semua lintasan antar kota ada kemungkinan berubah karena adanya penguapan dan perbedaan jumlah semut yang melewati. Untuk siklus selanjutnya, semut yang akan melewati lintasan tersebut harga intensitasnya telah berubah. Harga intensitas jejak kaki semut antar kota untuk siklus selanjutnya dihitung dengan persamaan:

Dimana Δ𝜏𝑖𝑗𝑘 = {

𝑄

𝐿𝑘 𝐽𝑖𝑘𝑎 𝑠𝑒𝑚𝑢 𝑘𝑒 − 𝑘 𝑚𝑒𝑛𝑔𝑔𝑢𝑛𝑎𝑘𝑎𝑛 𝑏𝑢𝑠𝑢𝑟 (𝑖, 𝑗)

0 𝑢𝑛𝑡𝑢𝑘 𝑦𝑎𝑛𝑔 𝑙𝑎𝑖𝑛𝑛𝑦𝑎 } ... (2.9) Dimana Q adalah suatu konstanta dan 𝐿𝑘 panjang tour yang dihasilkan oleh semut ke-k serta 𝜌 suatu koefisian yang bernilai kurang dari 1 untuk mencegah akumulasi jejak pheromone yang tak terbatas. Agar memenuhi batasan bahwa seekor semut harus mengunjungi seluruh n titik, diperlukan struktur data yang disebut tabu list untuk setiap semut. Tabu list digunakan untuk menyimpan titik- titik yang telah dikunjungi pada waktu t dan untuk melarang semut mengunjungi kembali ke titik-titik tersebut. Ketika sebuah perjalanan selesai, tabulist digunakan untuk menghitung solusi yang ditemukan semut pada tour tersebut.

Tabulist kemudian dikosongkan dan semut kembali bebas memilih titik tujuannya pada tour berikutnya. Tabu (𝑘) adalah tabulist untuk semut ke - k.

Referensi

Garis besar

Dokumen terkait

Langkah awal untuk mengimplementsaikan metode transformasi Hough adalah dengan proses deteksi tepi menggunakan operator canny, dilanjutkan dengan proses transformasi

Peraturan perundang- undang yang merupakan bagian dari politik hukum yang dibuat oleh pemerintah, menjadi meaning less, apabila tidak dibarengi dengan kesungguhan

Berhasilnya pedagang berpartisipasi dalam menjaga ketertiban diperlukan adanya kepemimpinan yang dapat menyatu dengan sikap dan karakter pedagang pasar kaget minggu,

Peran yang dilakukan oleh pasukan SWK 101 tidak hanya di dalam kota Yogyakarta saja, namun setelah berakhirnya Serangan Umum 1 Maret 1949 mereka membantu pasukan SWK 102

Dari hasil analisis dan pengamatan pada penelitian ini serta mengacu pada hipotesis dapat disimpulkan bahwa: ada peningkatan kemampuan memahami teks dengan

Penelitian menunjukkan bahwa bertambahnya anak bisa menambah stress pasangan, dan mengurangi waktu bersama pasangan (Hendrick & Hendrick, 1992). Kehadiran anak dapat

Benih jarak pagar memiliki periode viabilitas yang pendek yaitu kurang dari 6 bulan, selama penyimpanan benih jarak pagar tetap aktif bermetabolisme meskipun

Tidak ada hubungan antara pekerjaan calon suami dengan pernikahan dini di Kecamatan Godean Kabupaten Sleman Tahun 2014-2015, dengan nilai uji statistik p-value =