Anda di halaman 1dari 36

KECERDASAN BUATAN

SEARCHING
SEBAGAI TEKNIK PEMECAHAN MASALAH
Pencarian Mendalam Pertama (Depth-First Search)
Searching Sebagai Teknik Pemecahan Masalah

 Teknik pencarian dapat dibagi menjadi 2(dua) kelompok besar:


1. Pencarian Buta (blind search) / Un-informed Search
2. Pencarian Terbimbing (heuristic search) / Informed Search

 Pencarian Buta (blind search) / Un-informed Search:


1. Pencarian Melebar Pertama (Breadth-First Search)
2. Pencarian Mendalam Pertama (Depth-First Search)

 Pencarian Terbimbing (heuristic search) / Informed Search


1. Generate and Test (Pembangkitan dan Pengujian)
2. Hill Climbing (Pendakian Bukit)
a. Simple Hill Climbing
b. Steepest-Ascent Hill Climbing
3. Best First Search
4. Algoritma A*
5. Simulated Annelaing
Pencarian Mendalam Pertama (Depth-First Search)

 Pada metode DFS, proses pencarian akan dilakukan pada


semua anaknya sebelum dilakukan pencarian ke node-node
yang selevel.
 Pencarian dimulai dari node akar (node S) ke level yang lebih
tinggi. Proses ini diulangi terus hingga ditemukannya goal
(node G)
 Dalam algoritma DFS, node yang telah dikunjungi disimpan
dalam suatu stack (tumpukan). Stack ini digunakan untuk
mengacu node-node yang akan dikunjungi sesuai aturan
tumpukan (masuk terakhir, keluar pertama) dan mempermudah
proses runut-balik, jika node sudah tidak mempunyai anak
(node pada kedalaman maksimal).
Pencarian Mendalam Pertama (Depth-First Search)
Pencarian Mendalam Pertama (Depth-First Search)

 Untuk memperjelas cara kerja algoritma DFS beserta stack


yang digunakannya, berikut langkah-langkah algoritma DFS:
1. Masukkan node akar ke dalam stack
2. Ambil node dari stack teratas, lalu cek apakah node
merupakan solusi
3. Jika node merupakan solusi, pencarian selesai dan hasil
dikembalikan
4. Jika node bukan solusi, masukkan seluruh node anak ke
dalam stack
5. Jika stack kosong dan setiap node sudah dicek, pencarian
selesai
6. Ulangi pencarian mulai dari point 2
Pencarian Mendalam Pertama (Depth-First Search)

 Keuntungan:
1. Membutuhkan memori yang relatif kecil karena hanya node-
node pada lintasan yang aktif saja yang disimpan
2. Secara kebetulan, metode DFS akan menemukan solusi
tanpa harus menguji lebih banyak lagi dalam ruang keadaan

 Kelemahan:
1. Memungkinkan tidak ditemukannya tujuan yang diharapkan
2. Hanya akan mendapatkan 1 (satu) solusi pada setiap
pencarian
Pencarian Mendalam Pertama (Depth-First Search)

 Contoh:
Misalkan diketahui pohon pelacakan seperti pada gambar
berikut. Implementasikan Algoritma DFS untuk mencari solusi
dari node awal (Start) S sampai node G (Goal)
Pencarian Mendalam Pertama (Depth-First Search)

 Iterasi ke-1:
Beri tanda batas pada stack dan masukkan node S ke stack
Masuk dari pintu kiri, keluar lewat pintu kiri

Representasi Ruang Keadaan:

Keluarkan S dari stack dan cek


Ternyata S ≠ Goal
S memiliki anak A dan B, beri tanda batas pada stack, dan
masukkan node A dan B ke dalam stack
Pencarian Mendalam Pertama (Depth-First Search)

Masuk dari pintu kiri, keluar lewat pintu kiri

Karena S memiliki anak, masukkan S ke dalam solusi sementara


Solusi sementara = [S]
Representasi Keadaan:
Pencarian Mendalam Pertama (Depth-First Search)

 Iterasi ke-2:
Keluarkan A dari stack dan cek
Ternyata A ≠ Goal
A memiliki anak C dan D, beri tanda batas pada stack, dan
masukkan node C dan D ke dalam stack

Karena A memiliki anak, masukkan A ke solusi sementara


Solusi sementara: [S A]
Pencarian Mendalam Pertama (Depth-First Search)

Representasi Keadaan:
Pencarian Mendalam Pertama (Depth-First Search)

 Iterasi ke-3:
Keluarkan C dari stack dan cek

Ternyata C ≠ Goal
C tidak memiliki anak, jadi tidak ada yang dimasukkan ke
dalam stack
Karena C tidak memiliki anak, maka C tidak dimasukkan ke
solusi sementara
Solusi sementara: [S A]
Pencarian Mendalam Pertama (Depth-First Search)

Representasi Keadaan:
Pencarian Mendalam Pertama (Depth-First Search)

 Iterasi ke-4:
Keluarkan D dari stack dan cek

Ternyata D ≠ Goal
D tidak memiliki anak, jadi tidak ada yang dimasukkan ke
dalam stack
Karena D tidak memiliki anak, maka D tidak dimasukkan ke
solusi sementara
Solusi sementara: [S A]
Pencarian Mendalam Pertama (Depth-First Search)

Representasi Keadaan:
Pencarian Mendalam Pertama (Depth-First Search)

 Iterasi ke-5:
Keluarkan tanda batas dari stack dan gunakan untuk
menghapus solusi sementara satu huruf

Solusi sementara: [ S A ] = [S]


Pencarian Mendalam Pertama (Depth-First Search)

 Iterasi ke-6:
Keluarkan B dari stack dan cek

Ternyata B ≠ Goal
B memiliki anak E dan F, beri tanda batas dan masukkan node
E dan F ke dalam stack

Karena B memiliki anak, maka B dimasukkan ke solusi


sementara
Solusi sementara: [S B]
Pencarian Mendalam Pertama (Depth-First Search)

Representasi Keadaan:
Pencarian Mendalam Pertama (Depth-First Search)

 Iterasi ke-7:
Keluarkan E dari stack dan cek

Ternyata E ≠ Goal
E memiliki anak H dan G, beri tanda batas dan masukkan node
H dan G ke dalam stack

Karena E memiliki anak, maka E dimasukkan ke solusi


sementara
Solusi sementara: [S B E]
Pencarian Mendalam Pertama (Depth-First Search)

Representasi Keadaan:
Pencarian Mendalam Pertama (Depth-First Search)

 Iterasi ke-8:
Keluarkan H dari stack dan cek

Ternyata H ≠ Goal
H tidak memiliki anak, jadi tidak ada yang dimasukkan ke
dalam stack
Karena H tidak memiliki anak, maka H tidak dimasukkan ke
solusi sementara
Solusi sementara: [S B E]
Pencarian Mendalam Pertama (Depth-First Search)

Representasi Keadaan:
Pencarian Mendalam Pertama (Depth-First Search)

 Iterasi ke-9:
Keluarkan G dari stack dan cek

Ternyata G = Goal, masukkan ke solusi sementara dan


hentikan pencarian
Solusi [S B E G]
Pencarian Mendalam Pertama (Depth-First Search)

Representasi Keadaan:
Pencarian Mendalam Pertama (Depth-First Search)

 Tugas:
Misalkan diketahui pohon pelacakan seperti pada gambar
berikut. Implementasikan Algoritma DFS untuk mencari solusi
dari node awal (Start) S sampai node F(Goal)
Contoh Implementasi DFS pada A water jug problem
Misalkan diketahui:
Keadaan awal : (0,0) [keadaan sekarang = (0,0)]
Tujuan (Goal) : (1,0) [keadaan akhir = (1,0)]

Penyelesaian:
 Iterasi I
Beri tanda batas dan masukkan node awal (0,0) ke stack.
Stack = [(0,0) ▐] Solusi = [ ]
Ambil keadaan sekarang = (0,0), maka:
Stack = [ ▐] Solusi = [ ]
Cek, ternyata (0,0) ≠ goal
Dari 8 aturan yang ada, hanya aturan ke-1 dan 2 yang memenuhi
syarat, sehingga:
Contoh Implementasi DFS pada A water jug problem
Keadaan sekarang = (0,0) dikenakan aturan ke-1 menjadi (4,0)
Keadaan sekarang = (0,0) dikenakan aturan ke-2 menjadi (0,3)

(0,0) memiliki anak (4,0) dan (0,3), beri tanda batas pada Stack,
dan masukkan node (4,0) dan (0,3) ke Stack. Karena (0,0) memiliki
anak, masukkan ke solusi.
Stack = [(4,0) (0,3) ▐ ▐] Solusi = [ (0,0)]
Representasi ruang keadaan dalam bentuk pohon pelacakan:
Contoh Implementasi DFS pada A water jug problem

 Iterasi ke-2:
Stack =[(4,0) (0,3) ▐ ▐] Solusi = [(0,0)]
Ambil keadaan sekarang (4,0) ≠ goal, maka:
Stack = [(0,3) ▐ ▐] Solusi = [(0,0)]
Cek, ternyata (4,0) ≠ goal
Contoh Implementasi DFS pada A water jug problem

 Aturan yang cocok adalah aturan 2,3 dan 6


Keadaan sekarang = (4,0) dikenakan Aturan ke-2 menjadi = (4,3).
Keadaan sekarang = (4,0) dikenakan Aturan ke-3 menjadi = (0,0).
Karena (0,0) sama dengan node sebelumnya, maka tidak
dimasukkan ke dalam Stack.
Keadaan sekarang = (4,0) dikenakan Aturan ke-6 menjadi = (1,3).

(4,0) mempunyai anak (4,3) dan (1,3), beri tanda dan masukkan
node (4,3) dan (1,3) ke Stack. Karena (4,0) memiliki anak,
masukkan ke solusi
Stack =[(4,3) (1,3) ▐(0,3) ▐ ▐] Solusi = [(0,0),(4,0)]
Contoh Implementasi DFS pada A water jug problem

 Representasi ruang keadaan dalam bentuk pohon pelacakan:


Contoh Implementasi DFS pada A water jug problem

 Iterasi ke-3:
Stack =[(4,3) (1,3) ▐(0,3) ▐ ▐] Solusi = [(0,0),(4,0)]
Ambil keadaan sekarang (4,3) ≠ goal, maka:
Stack = [(1,3) ▐(0,3) ▐ ▐] Solusi = [(0,0),(4,0)]
Cek, ternyata (4,3) ≠ goal
Contoh Implementasi DFS pada A water jug problem

Aturan yang memenuhi syarat adalah aturan ke-3, 4, 5 dan 6.


Keadaan sekarang = (4,3) kena aturan ke-3 menjadi = (0,3),
karena (0,3) = node sebelumnya, maka tidak dimasukkan ke
Stack
Keadaan sekarang = (4,3) kena aturan ke-4 menjadi = (4,0),
karena (4,0) = node sebelumnya, maka tidak dimasukkan ke
Stack
Keadaan sekarang = (4,3) kena aturan ke-5 menjadi = (4,3),
karena (4,3) = node sebelumnya, maka tidak dimasukkan ke
Stack
Keadaan sekarang (4,3) kena aturan ke-6 menjadi = (4,3), karena
(4,3) = node sebelumnya, maka tidak dimasukkan ke Stack
Karena (4,3) tidak punya anak, maka tidak dimasukkan ke Solusi
Stack = [(1,3) ▐(0,3) ▐ ▐] Solusi = [(0,0),(4,0)]
Contoh Implementasi DFS pada A water jug problem

 Representasi ruang keadaan dalam bentuk pohon pelacakan:

 Iterasi ke-4:
Stack = [(1,3) ▐(0,3) ▐ ▐] Solusi = [(0,0),(4,0)]
Ambil keadaan sekarang (1,3), maka:
Stack = [ ▐(0,3) ▐ ▐] Solusi = [(0,0),(4,0)]
Cek, ternyata (1,3) ≠ goal
Contoh Implementasi DFS pada A water jug problem

Aturan yang memenuhi syarat adalah aturan ke-1, 3, 4 dan 8.


Keadaan sekarang = (1,3) kena aturan ke-1 menjadi = (4,3),
karena (4,3) = node sebelumnya, maka tidak dimasukkan ke
Stack
Keadaan sekarang = (1,3) kena aturan ke-3 menjadi = (0,3),
karena (0,3) = node sebelumnya, maka tidak dimasukkan ke
Stack
Keadaan sekarang = (1,3) kena aturan ke-4 menjadi = (1,0)
Keadaan sekarang = (1,3) kena aturan ke-8 menjadi = (4,0),
karena (4,0) = node sebelumnya, maka tidak dimasukkan ke
Stack
Node (1,3) memiliki anak (1,0). Beri tanda batas dan masukkan
node (1,0) ke Stack. Karena node (1,3) memiliki anak, masukkan
ke solusi.

Stack = [ (1,0), ▐ ▐(0,3) ▐ ▐] Solusi = [(0,0),(4,0),(1,3)]


Contoh Implementasi DFS pada A water jug problem

 Representasi ruang keadaan dalam bentuk pohon pelacakan:


Contoh Implementasi DFS pada A water jug problem

 Iterasi ke-5:
Stack = [ (1,0) ▐ ▐(0,3) ▐ ▐] Solusi = [(0,0),(4,0),(1,3)]

Ambil keadaan sekarang (1,0) maka:


Stack = [ ▐ ▐(0,3) ▐ ▐] Solusi = [(0,0),(4,0),(1,3)]
Cek, ternyata (1,0) = goal
Karena keadaan sekarang = goal, masukkan (1,0) ke solusi:
Solusi = [(0,0),(4,0),(1,3),(1,0)] dan pencarian selesai
Untuk mencari solusinya,lihat daftar yang ada pada Array Solusi.
Solusi = [(0,0),(4,0),(1,3),(1,0)]

Anda mungkin juga menyukai