Anda di halaman 1dari 8

Algoritma pencarian (searching algorithm) adalah algoritma yang menerima

sebuah argumen kunci dan dengan langkah - langkah tertentu akan mencari rekaman
dengan kunci tersebut. Setelah proses pencarian dilaksanakan, akan diperoleh salah
satu dari dua kemungkinan, yaitu data yang dicari ditemukan ( successful ) atau tidak
ditemukan (unsuccessful).

1. Breadth-First Search (BFS)


Pencarian dilakukan pada semua node 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 strategi ini, maka dapat
dijamin bahwa solusi yang ditemukan adalah yang paling baik
(Optimal). Tetapi BFS harus menyimpan semua node yang pernah
dibangkitkan. Hal ini harus dilakukan untuk penelusuran balik jika
solusi sudah ditemukan.

2. Depth-First Search (DFS)


Pencarian dilakukan pada satu node dalam setiap level dari yang paling
kiri. Jika pada level yang paling dalam, solusi belum ditemukan, maka
pencarian dilanjutkan pada node sebelah kanan. Node yang kiri dapat
dihapus dari memori. Jika pada level yang paling dalam tidak
ditemukan solusi, maka pencarian dilanjutkan pada level sebelumnya.
Demikian seterusnya sampai ditemukan solusi. Jika solusi ditemukan
maka tidak diperlukan proses backtracking (penelusuran balik untuk
mendapatkan jalur yang dinginkan).

Kelebihan DFS adalah:


 Pemakain memori hanya sedikit, berbeda jauh dengan BFS yang
harus menyimpan semua node yang pernah dibangkitkan.
 Jika solusi yang dicari berada pada level yang dalam dan paling
kiri, maka DFS akan menemukannya secara cepat.

Kelemahan DFS adalah:


 Jika pohon yang dibangkitkan mempunyai level yang dalam (tak
terhingga), maka tidak ada jaminan untuk menemukan solusi
(Tidak Complete).
 Jika terdapat lebih dari satu solusi yang sama tetapi berada pada
level yang berbeda, maka pada DFS tidak ada jaminan untuk
menemukan solusi yang paling baik (Tidak Optimal).

Depth Limited search


Algoritma ini merupakan salah satu dari jenis Uniformed search,
Depth Limited search ini merupakan pengembangan dari Depth First Search
namun dibatasi dengan batasan kedalaman yang dicari. Depth Limited Search
ini sama seperti DFS dimana kedua algoritma ini tidak akan menemukan solusi
ketika proses pencarian berlangsung menemui keadaan infinite, yaitu tidak
berujung atau tak terhingga. Maka dari itu pencarian dengan Depth Limited
Search ini akan menemukan solusi bila pencariannya berada dibawah batas
kedalaman yang ditentukan. Bila hasil pencarian berada dibawah batas maka disebut
incomplete, namun bila melebihi batas disebut nonoptimal.

3. Iterative-Deepening Depth-First Search (IDS)


Merupakan metode yang berusaha menggabungkan keuntungan BFS
(Complete dan Optimal) dengan keuntungan DFS (Space Complexity
yang rendah). Tetapi konsekuensinya adalah Time Complexity-nya
menjadi tinggi. Perhatikan gambar 2.6. Pencarian dilakukan secara
iteratif (menggunakan penelusuran DFS) dimulai dari
batasan level 1. Jika belum ditemukan solusi, maka dilakukan iterasi
ke-2 dengan batasan level 2. Demikian seterusnya sampai ditemukan
solusi. Jika solusi ditemukan maka tidak diperlukan proses
backtracking (penelusuran balik untuk mendapatkan jalur yang
dinginkan).

Prinsip dari algoritma IDS ini adalah melakukan depth-limited search secara bertahap dengan nilai ℓ yang
incremental sampai tidak cut off. Berikut ini bagaimana algoritma IDS ini bekerja.
Pada Proses pertama ini batas kedalamannya masih 0 atau kosong sehingga
akan dilihat
apakah solusi sudah ditemukan pada node root. Jika belum ditemukan maka
nilai ℓ akan dinaikkan menjadi 1.
Pada proses kedua batas kedalaman akan bertambah 1 sehingga pencarian
solusi secara DFS akan bertambah satu level.
Proses ketiga batas kedalaman sudah menjadi 2 sehingga pencarian akan
dilakukan
sampai level 2. Jika belum menemukan solusinya, ℓ akan kembali dinaiikan
menjadi 3.
Pada proses ketiga pencarian akan dihentikan pada node M karena itu
merupakan goal
state

4. Bi-Directional Search
Secara singkat, Algoritma ini adalah penggabungan dari 3 buah
algoritma yang sudah dijelaskan sebelumnya, yaitu Algoritma BFS
(Breadth First Search), Algoritma DFS (Depth First Search), dan
Algoritma DLS (Depth Limited Search). Pencarian solusi dilakukan
dari titik awal dan titik tujuan secara bersamaan, sampai akhirnya
bertemu di sebuah titik tengah. Setelah menemukan titik tengah dan
hasil jalur dari masing-masing perhitungan sudah tepat, maka jawaban
sudah ditemukan.
Pada setiap iterasi, pencarian dilakukan dari dua arah: dari node asal
(start) dan dari node tujuan (goal). Ketika dua arah pencarian
membangkitkan node yang sama, maka solusi telah ditemukan, dengan
cara menggabungkan kedua jalur yang bertemu. Ada beberapa masalah
sebelum memustuskan untuk menngunakan strategi Bi-directional
Search, yaitu:
 Bagaimana kalau terdapat beberapa node tujuan yang berbeda?
 Terdapat perhitungan yang tidak efisien untuk selalu mengecek
apakah node baru yang dibangkitkan sudah pernah dibangkitkan
oleh pencarian dari arah yang berlawanan.
 Bagaimana menentukan strategi pencarian untuk kedua arah
tersebut? Misalnya dari arah sumber dan dari arah tujuan
digunakan BFS.
Dalam bidirectional search terdapat tiga buah arah pencarian yaitu: (1)
forward (maju), (2) backward (mundur), dan (3) bidirectional (dua
arah). Bagi pencarian dua arah ini terdapat beberapa langkah dalam
penerapannya yaitu: (1) pada pencarian dua arah, node-node di perluas
dari status awal ke tujuan secara bersamaan (simultan), (2) pada setiap
tahap dicek apakah node-node yang dijumpai sudah dibangkitkan oleh
yang lain, (3) jika iya, maka gabungan jalur adalah solusinya, (4) dua
pencarian dapat bekerja paralel: satu dari asal ke tujuan, satu dari
tujuan ke awal, dan (5) saat keduanya bertemu, diperoleh jalur yang
baik.

Anda mungkin juga menyukai