Terdapat banyak metode pancarian yang telah diusulkan.
Semua metode yang ada dapat dibedakan ke dalam dua jenis: pencarian buta/tanpa
informasi (blind atau Un-informed search) dan pencarian
heuristik/dengan informasi (heuristic atau
informed search). Setiap metode mempunyai
karakteristik yang berbeda-beda dengan kelebihan dan kekurangannya
masing-masing.
Untuk mengukur performansi metode pencarian, terdapat
empat kriteria yang dapat digunakan, yaitu:
· Completeness: apakah metode tersebut menjamin penemuan solusi juka solusinya memang ada?
·
Time complexity : Berapa
banyakwaktu yang diperlukan?
·
Space complexity : Berapa
banyak memory yang diperlukan?
· Optimilaty : Apakah metode tersebut
menjamin menemukan solusi yang terbaik jika
terdapat beberapa solusi berbeda.
Blind/Un-informed Search
Disini digunakan istilah blind atau buta karena memang tidak ada
informasi awal yang digunakan dalam proses pencarian. Di sini hanya akan
dibahas enam metode yang tergolong blind
search, yaitu: Breadth First Search (BFS),
Uniform Cost Search (UCS), Septh First Search (DFS), Depth-Limited Search (DLS), Iterative-Deepening Search (IDS), dan Bi-directional search (DBS).
Breadth-First Search (BFS)
Pencarian dilakukan pada
semua simpul dalam setiap level secara berurutan dari kiri ke kanan. Jika pada
satu level belum ditemukan solusi, maka pencarian dilanjutkan pada level
berikutnya. Demikian seterusnya sampai ditemukan solusi. Dengan cara seperti
ini, BFS menjamin ditemukannya solusi (jika solusinya memang ada) dan solusi
yang ditemukan pasti yang paling baik. Dengan kata lain, BFS adalah complate dan optimal. Tetapi, BFS harus meyimpan semua simpul yang
pernah dibangkitkan. Hal ini harus dilakukan agar BFS dapat melakukan penelusuran simpul-simpul
samapai di level bawah. Jika b adalah
faktor percabangan (jumlah simpul anak yang dimiliki oleh suatu simpul) dan d adalah kedalaman solusi, maka jumlah simpul yang harus disimpan adalah
sebanyak O(bd). misalkan, untuk b = 10 dan d = 8, maka BFS harus
membangkitkan dan menyimpan sebanyak 100 + 101 + 102
+103 + 104 + 105 + 106 + 107+
108 = 111.111.111 ≈108 simpul. Jika diasumsikan bahwa
dalam satu detik kompuer bisa membangkitkan dan menguji 106 simpul,
maka waktu proses yang diperlukan untuk menemukan solusi di level 8 adalah 100
detik (1,67 menit). Jika satu simpul direpresentasikan dalam struktur data
sebesar 100 bytes, maka diperlukan
memori sebersar 1010 bytes (atau 10 gigabytes). Dari segi kecepatan, hal ini mungkin bisa diterima.
Tetapi dari sisi memori yang diperlukan, ini menjadi masalah yang serius.
Dengan permasalahan dan komputer yang sama, waktu proses yang diperlukan untuk
menemukan solusi di level 14 adalah 108 detik (lebih dari 3 tahun),
dan perlukan memori sebersar 1015 bytes (1.000 terabytes). Oleh karena itu, BFS sangat sulit diimplementasikan di
dunia nyata.
Gambar dibawah ini mengilustrasikan pembangkitan pohon BFS
untuk masalah jerigen air. Oleh karena BFS membangkitkan suksesor secara
sekuensial dimulai dari aturan produksi yang
pertama kali ditemukan, maka pembangkitan suksesor dari suatu simpul bergantung
pada urutan Aturan Produksi yang dibuat (lihat pada tabel). Jika urutan
produksi 4 ditukar dengan aturan produksi 5, maka pohon BFS yang dibangkitkan
akan berbeda.
0 comments:
Post a Comment