Dengan fungsi heuristik Algoritma ini membangkitkan verteks yang paling mendekati solusi. Verteks ini kemudian disimpan suksesornya ke dalam list sesuai
dengan urutan yang paling mendekati solusi terbaik. Kemudian, verteks pertama pada list diambil, dibangkitkan suksesornya dan kemudian suksesor ini disimpan ke dalam
list sesuai dengan urutan yang terbaik untuk solusi. List verteks ini disebut dengan verteks terbuka open node.
Verteks pada list bisa berasal dari kedalaman berapapun dari graf. Algoritma ini akan mengunjungi secara mendalam mirip Depth First Search DFS selama
verteks tersebut merupakan verteks yang terbaik. Jika verteks yang sedang dikunjungi ternyata tidak mengarah kepada solusi yang diinginkan, maka akan melakukan runut
balik ke arah verteks awal untuk mencari verteks lainnya yang lebih menjanjikan dari pada verteks yang terakhir dikunjungi. Bila tidak ditemuka n juga, maka akan terus
mengulang mencari ke arah verteks awal sampai ditemukan verteks yang lebih baik untuk dibangkitkan suksesornya. Strategi ini berkebalikan dengan algoritma DFS yang
mencari sampai kedalaman yang terdalam sampai tidak ada lagi suksesor yang bisa dibangkitkan sebelum melakukan runut balik, dan BFS yang tidak akan melakukan
pencarian secara mendalam sebelum pencarian secara melebar selesai. A baru berhenti ketika mendapatkan solusi yang dianggap solusi terbaik.
2.4 Fungsi Heuristik
Dalam metode pencarian heuristik, digunakan suatu fungsi heuristik yang digunakan untuk mengevaluasi keadaan-keadaan masalah individual dan menentukan seberapa
jauh hal tersebut dapat digunakan untuk mendapatkan solusi yang diinginkan. Suatu fungsi dapat diterima sebagai fungsi heuristik jika biaya perkiraan yang dihasilkan
tidak melebihi dari biaya sebenarnya. Suatu fungsi heuristik dapat dikatakan sebagai fungsi heuristik yang baik, apabila dapat memberikan biaya perkiraan yang
mendekati biaya sebenarnya. Semakin mendekati biaya sebenarnya, fungsi heuristik tersebut semakin baik.
Dalam masalah pencarian rute terpendek dengan graf planar, fungsi heuristik yang dapat digunakan adalah Jarak Euclidian. Fungsi heuristik ini akan menghitung
Universitas Sumatera Utara
jarak berdasarkan panjang garis yang dapat ditarik dari dua buah titik, yang bisa dihitung menggunakan rumus :
Rumus diatas adalah rumus untuk mencari garis lurus antara dua verteks, yaitu verteks a dan verteks b.
2.5 MATLAB Matrix Laboratory
MATLAB merupakan sebuah bahasa pemrograman tingkat tinggi yang ditujukan untuk komputasi teknis. MATLAB mengintegrasikan kemampuan komputasi,
visualisasi dan pemrograman dalam sebuah lingkungan yang tunggal dan mudah digunakan. Matlab membertikan sistem interaktif yang menggunakan konsep
arraymatrik sebagai standar variabel elemennya tanpa membutuhkan pendeklarasian array seperti pada bahasa lainnya.
Dengan MATLAB kita dapat menemukan solusi dari berbagai masalah numerik secara cepat, misalnya sistem 2 persamaan dengan 2 variabel :
2x-3y=24 x+5y=15
Hingga perhitungan yang kompleks , seperti mencari akar-akar polinomial. Interpolasi dari sejumlah data, perhitungan dengan matriks, pengolahan sinyal, dan
metoda numerik.
Universitas Sumatera Utara
Gambar 2.20 Tampilan awal Matlab
Gambar 2.21 Tampilan GUI Matlab
Universitas Sumatera Utara
BAB 3
ANALISIS ALGORITMA
3.1 Analisis Algoritma A
Algoritma A digunakan dalam menemukan lintasan terpendek pada suatu graf dan merupakan pengembangan dari algoritma best first search. Sama seperti BFS,
algoritma A juga menggunakan fungsi heuristik. Biaya yang diperhitungkan didapat dari biaya sebenarnya ditambah dengan biaya perkiraan. Dalam notasi matematika
dituliskan sebagai berikut : fn = gn + hn
Keterangan : •
gn adalah total jarak yang didapat dari verteks awal ke verteks sekaranghalangan
• hn adalah perkiraan jarak dari verteks sekarang yang sedang dikunjungi ke
verteks tujuan. Sebuah fungsi heuristik digunakan untuk membuat perkiraan seberapa jauh lintasan yang akan diambil ke verteks tujuan.
• fn adalah jumlah dari gn dan hn. ini adalah perkiraan jalur terpendek
sementara. fn adalah jalur terpendek yang sebenarnya yang tidak ditelusuri sampai Algoritma A diselesaikan.
Untuk memperjelas pemahaman fungsi diatas, dapa kita lihat pada contoh berikut :
Sebuah keluarga akan bergi berlibur suatu tempat liburan, setelah 100 km berkendara, mereka berhenti di suatu restaurant, dan seseorang bertanya kepada pengemudi
berapa jauh lagi jarak ke tempat liburan tersebut, dan pengemudi menjawab “kira-kira 130 km lagi”.
Universitas Sumatera Utara
Dari ilustrasi diatas, jarak 100 km yang telah ditempuh oleh keluarga tersebut direpresentasikan dengan gn, Perkiraan pengemudi, yaitu 130 km adalah hn Jadi
fn pasti 100 + 130 = 230 km.
Dengan perhitungan biaya seperti ini, algoritma A adalah complete dan optimal Suyanto:2007. Hal ini berbeda dengan Greedy best-first search yang hanya
memperhitungkan biaya perkiraan saja, yaitu fn = hn, biaya sebenarnya actual cost tidah diperhitungkan. Dengan hanya menggunakan biaya perkiraan yang belum
tentu kebenaranya, maka algoritma ini tidak optimal.
Sama halnya seperti algoritma best first search, algoritma A juga menggunakan dua antrian, yaitu 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.
Verteks yang berada di OPEN merupakan verteks yang pernah dibangkitkan, dan nilai heuristiknya telah dihitung, tapi belum terpilih sebagai verteks terbaik
bestnode. Verteks yang berada di open memiliki peluang untuk terpilih sebagai verteks terbaik peluang masih terbuka. Sebuah verteks akan disimpan di CLOSED
jika verteks tersebut pernah terpilih sebagai bestnode. Dengan kata lain CLOSED berisi verteks yang tidak mungkin terpilih sebagai simpul terbaik peluang untuk
terpilih sudah tertutup.
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 pula perbaruan update nilai g dan f pada suksesor tersebut. Dengan pembaruan ini, suksesor tersebut memiliki kesempatan yang lebih besar untuk terpilih
sebagai verteks terbaik bestnode.
Universitas Sumatera Utara
Jika suksesor sudah pernah berada di CLOSED, maka dilakukan pengecekan apakah perlu pengubahan parent atau tidak. Jika ya, maka pebaruan nilai g dan f pada
suksesor tersebut serta pada semua “anak cucunya” yang sudah pernah berada di OPEN. Dengan perbaruan ini, maka semua anak cucunya tersebut memiliki
kesempatan lebih besar untuk terpilih sebagai verteks terbaik bestnode.
Jika suksesor tidak berada di OPEN maupun CLOSED, maka suksesor tersebut dimasukkan ke dalam OPEN. Tambahkan suksesor tersebut sebagai
suksesornya bestnode. Hitung biaya suksesor tersebut dengan rumus fn=gn+hn.
Untuk memperjelas pemahaman tentang algoritma A , maka akan diberikan contoh masalah pada gambar dibawah ini.
Gambar 3.1 Graf 1
Masalah pencarian rute dalam suatu daerah yang direpresentasikan dalam suatu graf dua arah. Setiap verteks menyatakan suatu kota. Busur menyatakan jarak
sebenarnya antara satu kota dengan kota lainnya dan hn menyatakan biaya perkiraan jarak garis lurus Euclidian distance dari verteks n menuju verteks G. maka akan
dicari rute terpendek dari S menuju ke G.
Universitas Sumatera Utara
Dengan menggunakan fungsi heuristik jarak Euclidian jarak garis lurus dari verteks n menuju verteks G, maka didapat hn masing-m asing verteks sebagai
berikut :
Tabel 3.1 Jarak Euclidian masing-masing verteks pada Graf 1
S A
B C
D E
F G
H I
J K
L M
120 100 95 100 100 110 87 0 50 50 80 30 30 45
Berikut adalah langkah-langkah unutk menyelesaikan permasalan lintasan terpendek dari verteks S ke verteks G dengan menggunakan Algoritma A:
Gambar 3.2 Graf 1
Fungsi evaluasi: fA = gS + gS ke A + hA = 0 + 22 + 105 = 127
fB = gS + gS ke B + hB = 0 + 38 + 95 = 133 fC = gS + gS ke C + hC = 0 + 35 + 100 = 135
fD = gS + gS ke D + hD = 0 + 40 + 100 =140 fE = gS + gS ke E + hE = 0 + 15 + 110 = 125
Pertama, karena di OPEN hanya terdapat satu verteks, yaitu S. Maka S terpilih sebagai bestnode dan dipindahkan ke CLOSED. Kemudian dibangkitkan semua
suksesor S, yaitu : A, B, C, D dan E. Karena kelima suksesor tidak ada di OPEN maupun CLOSED, maka kelimanya dimasukkan ke OPEN. Langkah pertama ini
menghasilkan OPEN=[A,B,C,D,E] dan CLOSED=[S].
Universitas Sumatera Utara
Gambar 3.3 Graf 1
Fungsi evaluasi fA = 127
fB = 133 fC = 135
fD = gE + gE ke D + hD = 15 + 15 + 100 =130 fE = gE + gE ke J + hJ = 15 + 40 + 80 = 135
Selanjutnya, E dengan biaya terkeci, yaitu 125, terpilih sebagai bestnode dan dipindahkan ke CLOSED. Lalu , semua suksesor E dibangkitkan, yaitu: D dan J.
karena belum pernah ada di OPEN maupun CLOSED, maka J dimasukkan ke OPEN. Sedangkan verteks D sudah ada di OPEN, maka harus di cek apakah parent dari D
perlu diganti atau tidak. Ternyata, biaya dari S ke D melalui E yaitu 15+15=30 lebih kecil daripada biaya dari S ke D, yaitu 40. Oleh karena itu, parent dari D harus di
ubah, yang semula S menjadi E. Dengan perubahan parent ini, maka nilai g dan f pada D juga harus diperbarui nilai g yang semula 40 menjadi 30, dan nilai f dari 140
menjadi 135. Langkah ke dua ini menghasilkan OPEN=[A,B,C,D,J] dan CLOSED=[S,E].
Universitas Sumatera Utara
Gambar 3.4 Graf 1
Fungsi evaluasi fG = gA + gA ke G + hG = 22 + 130 + 0 = 152
fB = gA + gA ke B + hB = 22 + 10 + 95 = 127 fC = 135
fD = 130 fE = 125
Lalu, A dengan biaya terkecil, yaitu 127, terpilih sebagai bestnode dan dipindahkan ke CLOSED. Selanjutnya, semua suksesor A dibangkitkan, yaitu : B dan
G. Karena belum pernah ada di OPEN maupun di CLOSED, maka G dimasukkan ke OPEN. Sedangkan verteks B sudah ada di CLOSED, maka harus di cek apakah parent
dari B perlu diganti atau tidak. Ternyata biaya dari S ke B yang melalui A, yaitu 22+10=32, lebih kecil daripada biaya dari S ke B langsung, yaitu 35. Oleh karena
itu, parent dari B harus diubah, agar didapat biaya terendah, yang semula S menjadi A. Nilai g dan f pada B juga harus diperbarui, nilai g yang semula 35 menjadi 32, nilai
f dari 133 menjadi 137. Akhir dari langkah ini menghasikan OPEN=[B,C,D,J,G] dan CLOSED=[S,E,A].
Universitas Sumatera Utara
Gambar 3.5 Graf 1
Fungsi Evaluasi : fG = 152
fF = gB + gB ke F + hF = 32 + 10 + 87 = 129 fK = gB + gB ke K + hK = 32 + 80 + 30 = 142
fC = 135 fD = 130
fE = 135
Karena fB memiliki biaya terkecil, yaitu 127, maka B terpilih sebagai bestnode, dan dipindahkan ke CLOSED. Lalu semua suksesor B dibangkitkan, yaitu F
dan K. Karena F dan K belum pernah berada di OPEN maupun di CLOSED, maka F dan K dimasukkan ke OPEN. Akhir dari langkah ini menghasilkan
OPEN=[C,D,F,J,G,K] dan CLOSED=[S,E,A,B].
Gambar 3.6 Graf 1
Universitas Sumatera Utara
Fungsi Evaluasi : fG = 152
fK = gF + gF ke K + hK = 42 + 60 + 30 = 122 fC = 135
fD = 130 fE = 135
Langkah selanjutnya, F dengan biaya terkecil, yaitu 129, terpilih sebagai bestnode dan dipindahkan ke CLOSED. Selanjutnya, semua suksesor F dibangkitkan,
yaitu K. karena K sudah ada di OPEN, maka harus di cek apakah parent dari K perlu diganti atau tidak. Biaya dari S ke K melalui F ternyata lebih kecil daripada biaya dari
S ke K dengan B sebagai parent-nya. Oleh karena itu, parent dari k harus diubah, yang semula B menjadi F. selanjutnya nilai gK yang semula 92 berubah menjadi 65,
dan nilai fK yang semula 142 berubah menjadi 122. Akhirnya OPEN=[C,D, J,G,K] dan CLOSED=[S,E,A,B, F].
Berikutnya, K dengan biaya terkecil, yaitu 122 terpilih sebagai bestnode dan dipindahkan ke CLOSED. Selanjutnya, semua suksesor K dibangkitkan, yaitu verteks
G. karena G sebelumnya telah berada di OPEN, maka terlebih dahulu harus diperiksa apakah parent dari G harus diganti atau tidak. Biaya dari S ke G melalui K ternyata
lebih kecil daripadda biaya dari S ke G melalui parent lama A. oleh karena itu, parent dari G harus diubah yang semula A menjadi K. lalu nilai gG yang semula 152
diubah menjadi 122, dan nilai fG yang semula 152 menjadi 122. Dari langkah diatas didapat OPEN=[C,D,G,J] dan CLOSED=[S,E,B,A,F,K].
Gambar 3.7 Graf 1
Universitas Sumatera Utara
Fungsi Evaluasi : fG = gK + gK ke G + hG = 102 + 30 + 0 = 122
fC = 135 fD = 130
fE = 135
G dengan biaya terkecil, yaitu 122 terpilih sebagai bestnode. Karena bestnode- nya sama dengan goal, berarti solusi telah ditemukan. Rute dan total biaya bias
ditelusuri balik dari G menuju S, karena setiap verteks hanya memiliki satu parent dan setiap verteks memiliki informasi biaya yang sebenarnya g. Penelusuran balik
menghasilkan rute S-A-B-F-K-G dengan total jarak sama dengan 122, dan rute ini merupakan rute terpendek dari verteks S ke verteks G.
Pada kasus diatas A membangkitkan dan menyimpan 10 sepuluh verteks dari 14 empat belas verteks yang ada pada graf.
3.2 Flowchart