MODUL PERKULIAHAN
W152100012 -
Penghantar
Kecerdasan
Buatan
Heuristic Search
Abstrak Sub-CPMK 2
Heuristic Search
Kata heuristic berasal dari sebuah kata kerja bahasa Yunani, heuriskein,
yang berarti mencari atau menemukan (Kusumadewi, 2007). Pencarian heuristik
merupakan pencarian yang penelusurannya dimulai dengan adanya informasi
awal yang digunakan dalam proses pencarian. Pencarian terbimbing (heuristic
search) dibutuhkan karena pencarian buta (blind search) tidak selalu dapat
diterapkan dengan baik, hal ini dikarenakan waktu aksesnya yang cukup lama
serta besarnya memori yang diperlukan. Kelemahan ini dapat diatasi jika ada
informasi tambahan (fungsi heuristik) dari domain yang bersangkutan. Dalam
pencarian ruang keadaan, heuristik dinyatakan sebagai aturan untuk melakukan
pemilihan cabang- cabang dalam ruang keadaan yang paling tepat agar tercapai
solusi permasalahan yang bisa diterima. Untuk masalah dengan ruang masalah
yang besar, teknik pencarian buta bukan metode yang baik karena keterbatasan
kecepatan computer dan memori.
Pada pencarian heuristik, sebuah fungsi heuristik digunakan untuk mengevaluasi
keadaan permasalahan tersendiri dan menentukan bagaimana fungsi ini
diperlukan dalam memecahkan suatu permasalahan. Sebuah fungsi heuristik
adalah sebuah fungsi yang memetakan keadaan permasalahan, yang
Algoritma:
1. Bangkitkan suatu kemungkinan solusi (membangkitkan suatu titik tertentu atau
Penyelesaian :
Dengan fungsi heuristik yang digunakan maka panjang lintasan yang di peroleh
tertera dalam Gambar 1.
Keterangan Gambar :
Algoritma Greedy
Algoritma Greedy merupakan metode yang paling populer untuk memecahkan
persolan optimasi. Terdapat dua jenis perosalan optimasi, yaitu maksimasi dan
minimasi.
Algoritma greedy adalah algoritma yang memcahkan masalah langkah per
langkah dengan pada setiap langkah dilakuan hal berikut :
1) Mengambil pilihan yang terbaik yang dapatdiperoleh pada saat itu tanpa
memperhatikan konsekuiensi ke depan (prinsip “take what you can get now!”)
2) Berharap bahwa dengan memilih optimum lokal pada setiap langkah akan
berakhir dengan optimum global.
Algoritma:
S <-- { } { inisialisasi S dengan kosong }
while (not SOLUSI(S)) and (C ≠ {} ) do
x <-- SELEKSI(C) { pilih sebuah kandidat dari C}
C <-- C - {x} { elemen himpunan kandidat berkurang satu } if LAYAK(S <--
{x}) then
S <-- S<-- {x}
endif endwhile
{SOLUSI(S) or C = {} }
if SOLUSI(S) then
return S
else
write(’tidak ada solusi’)
endif
Namun solusi optimum global yang diperoleh pada algoritma Greedy ini belum
tentu merupakan solusi opetimum (terbaik), tetapi merupakan sub-optimum atau
pseudo - optimum.
Alasan :
1. Algoritma Greedy tidak beroperasi secara menyeluruh terhadap semua
alternatif solusi yang ada (sebagaimana pada metode exhaustive search).
2. Terdapat beberap fungsi seleksi yang berbeda sehingga kita harus memilih
fungsi yang tepat jika kita ingin algoritma menghasilkan solusi optimal.
Jadi, pada sebagian masalah algoritma greedy tidak selalu berhasil memberikan
solusi yang optima
DAG={'A':{'C':4,'G':9},
'G':{'E':6},
'C':{'D':6,'H':12},
'D':{'E':7},
'H':{'F':15},
'E':{'F':8},
'F':{'B':5}}
# Hasil Representasi:
{'A':{'C':4,'G':9},
'C':{'D':6,'H':12}, 'D':
{'E':7},
'E':{'F':8},
'F':{'B':5},
'G':{'E':6},
'H':{'F':15}}
Selanjutnya kita akan membuat fungsi yang mencari jarak terpendek dari graph
yang dibangun, dengan menggunakan algoritma greedy. Definisi dari fungsi
Def shortest_path(graph,source,dest):
result=[]
result.append(source)
Kesimpulan
Algoritma greedy merupakan algoritma yang besifat heuristik, mencari nilai
maksimal sementara dengan harapan akan mendapatkan solusi yang cukup
baik. Meskipun tidak selalu mendapatkan solusi terbaik (optimum), algoritma
greedy umumnya memiliki kompleksitas waktu yang cukup baik, sehingga
algoritma ini sering digunakan untuk kasus yang memerlukan solusi cepat
meskipun tidak optimal seperti sistem real-time atau game.
Dari impementasi yang kita lakukan, dapat dilihat bagaimana algoritma greedy
memiliki beberapa fungsionalitas dasar, yaitu:
- Fungsi untuk melakukan penelusuran masalah.
- Fungsi untuk memilih local maximum dari pilihan-pilihan yang ada tiap langkahnya.
- Fungsi untuk mengisikan nilai local maximum ke solusi keseluruhan.
- Fungsi yang menentukan apakah solusi telah didapatkan.