Anda di halaman 1dari 73

Problem

Solving Agent

darmatasia
Outline
§ Problem Solving Agent
§ Tree Search
§ Uninformed Search
Breadth First Search
Uniform Cost Search
Depth First Search
Iterative Deepening Search
Problem Solving
Agent
Well-Define Problem & Solution

4 Komponen Problem:
1. Initial State: keadaan awal di mana si agent mulai
2. Possible actions/Successor Function: tindakan yang dapat
dilakukan si agent pada state s
3. Goal test: penentuan apakah suatu state adalah tujuan
yang ingin dicapai.
4. Path cost function (additive): sebuah fungsi yang
memberikan nilai numerik terhadap setiap path. Fungsi ini
merefleksikan performance measure si agent.
Contoh
§ Agent tourist di Rumania. Saat ini berada di kota Arad
§ Besok Dia harus Berada Bucharest

§ Initial State?
§ Possible Action?
§ Goal State?
§ Path Cost?
Well-Define Problem & Solution

§ Dunia nyata bersifat kompleks dan rumit!


§ State space merupakan abstraksi masalah supaya bisa
dipecahkan
§ State: himpunan “keadaan nyata”. Misalnya BeradaDi
(Arad)
§ Action: kombinasi berbagai “tindakan nyata” Misalnya
Berangkat(Arad, Sibiu)
§ Solution: representasi berbagai “path nyata” untuk
mencapai tujuan
Contoh: Agent Vacuum Cleaner
1. State: lokasi agent,
status debu
(state = 2 * 2^2)
2. Possible actions:
DoKeKiri (L),
DoKeKanan (R),
DoSedot (S)
3. Goal test: semua lokasi
bersih
4. Path cost function:
Setiap aksi = 1 point
Mencari solusi melalui
Tree Search
Tree Search

§ Setelah merumuskan masalah, cari solusinya menggunakan


sebuah search algorithm
§ Search tree terdiri dari kumpulan node
§ Node merepresentasikan suatu state pada suatu state space.
§ Root node merepresentasikan initial state.
§ Cek node apakah ini goalnya?
§ Jika tidak, Expanding à menghasilkan state baru
§ State mana yang akan di expand? à search strategy
§ Kumpulan semua node yang belum di-expand disebut
fringe/frontier sebuah search tree.
Contoh

§ Mulai dari Root node (Arad) sebagai current node:


Contoh

§ Lakukan node expansion terhadapnya


Contoh

§ Pilih salah satu node yang di-expand sebagai salah satu


current node yang baru. Ulangi langkah sebelumnya
Tree Search Algorithms
Masalah

§ Kegagalan menangani state yang mengulang dapat


membuat masalah linier menjadi eksponensial!
Solusi

§ Algorithms that forget their history are doomed to


repeat it...
§ Solusinya adalah untuk mencatat state mana yang
sudah pernah dicoba. Catatan ini disebut explored
set
§ Modifikasi algoritma TreeSearch dengan explored
set menjadi GraphSearch.
Graph Search Algorithms
Tree vs Graph
Strategi Pencarian
§ Terdapat berbagai jenis strategi untuk melakukan search.
§ Semua strategi ini berbeda dalam satu hal: urutan dari node
expansion.
§ Search strategy di-evaluasi berdasarkan:
completeness: apakah solusi (jika ada) pasti ditemukan?
time complexity: jumlah node yang di-expand.
space complexity: jumlah maksimum node di dalam
memory.
optimality: apakah solusi optimal/minimum cost pasti
ditemukan?
Strategi Pencarian
§ Time & space complexity diukur berdasarkan
b - branching factor (maks banyaknya successor)
dari suatu node
d - kedalaman minimal dari suatu node goal
m - kedalaman maksimum dari search tree (bisa
infinite!)
Strategi Pencarian
Uninformed
Strategi Pencarian Uninformed
§ Uninformed search hanya menggunakan informasi dari definisi
masalah.
§ Bisa diterapkan secara generik terhadap semua jenis masalah
yang bisa direpresentasikan dalam sebuah state space.
§ Ada beberapa jenis:
Breadth-first search
Uniform-cost search
Depth-first search
Depth-limited search
Iterative-deepening search
Breadth-First Search
§ Lakukan node expansion terhadap node di fringe yang paling dekat ke root
§ Implementasi: fringe adalah sebuah queue, data struktur FIFO (First In First
Out)
§ Hasil node expansion (successor function) ditaruh di belakang
Breadth-First Search
§ Lakukan node expansion terhadap node di fringe yang paling dekat ke root
§ Implementasi: fringe adalah sebuah queue, data struktur FIFO (First In First
Out)
§ Hasil node expansion (successor function) ditaruh di belakang
Breadth-First Search
§ Lakukan node expansion terhadap node di fringe yang paling dekat ke root
§ Implementasi: fringe adalah sebuah queue, data struktur FIFO (First In First
Out)
§ Hasil node expansion (successor function) ditaruh di belakang
Breadth-First Search
§ Lakukan node expansion terhadap node di fringe yang paling dekat ke root
§ Implementasi: fringe adalah sebuah queue, data struktur FIFO (First In First
Out)
§ Hasil node expansion (successor function) ditaruh di belakang
Breadth-First Search – Detail
1. Masukkan simpul ujung (Akar) ke dalam antrian
2. Ambil simpul dari awal antrian, cek apakah simpul
merupakan solusi
3. Jika simpul merupakan solusi, pencarian selesai dan
kembalikan hasilnya
4. Jika simpul bukan solusi, masukkan seluruh simpul yang
bertetangga dengan simpul tersebut ke dalam antrian
5. Jika antrian kosong dan tiap simpul sudah dicek pencarian
selesai dan mengembalikan hasil tidak ditemukan
6. Ulangi pencarian dari langkah 2
Contoh (2)
Tentukan jalur dari A ke E dengan BFS
B D
Queue
A C E
S F H
G

Output:
Contoh (2)
Tentukan jalur dari A ke E dengan BFS
B D
Queue
A C E A
S F H
G

Output:
Contoh (2)
Tentukan jalur dari A ke E dengan BFS
B D
Queue
A C E A
S F H
G

Output: A
Contoh (2)
Tentukan jalur dari A ke E dengan BFS
B D
Queue
A C E B
S F
S
H
G

Output: A
Contoh (2)
Tentukan jalur dari A ke E dengan BFS
B D
Queue
A C E B
S F
S
H
G

Output: A B
Contoh (2)
Tentukan jalur dari A ke E dengan BFS
B D
Queue
A C E S
S F H
G

Output: A B S
Contoh (2)
Tentukan jalur dari A ke E dengan BFS
B D
Queue
A C E C
S F
G
H
G

Output: A B S
Contoh (2)
Tentukan jalur dari A ke E dengan BFS
B D
Queue
A C E C
S F
G
H D
G E
F
Output: A B S
Contoh (2)
Tentukan jalur dari A ke E dengan BFS
B D
Queue
A C E G
S F
D
H E
G F

Output: A B S C
Contoh (2)
Tentukan jalur dari A ke E dengan BFS
B D
Queue
A C E D
S F
E
H F
G

Output: A B S C G
Contoh (2)
Tentukan jalur dari A ke E dengan BFS
B D
Queue
A C E D
S F
E
H F
G

Output: A B S C G D
Contoh (2)
Tentukan jalur dari A ke E dengan BFS
B D
Queue
A C E E
S F
F
H
G

Output: A B S C G D
Contoh (2)
Tentukan jalur dari A ke E dengan BFS
B D
Queue
A C E F
S F H
G

Output: A B S C G D E
Breadth-First Search Properties
§ Complete? Ya, jika b terbatas
§ Time complexity? b + 𝑏 ! +𝑏 " + . . . +𝑏 # +𝑏(𝑏 # −1) = 𝑂(𝑏 #$% ) →
eksponensial dalam d.
§ Space complexity? O( 𝑏 #$% ), karena semua node yang di-
generate harus disimpan.
§ Optimal? Ya, jika semua step cost sama, tapi pada umumnya
tidak optimal.
§ Masalah utama breadth-first search adalah space :
Mis: 1 node memakan 1000 byte, dan b = 10
Jika d = 6, ada 10& node ≈ 10 gigabyte.
Jika d = 12, ada 10%" node ≈ 10 petabyte!
Latihan
§ Coba cari solution dari Arad ke Bucharest dengan BFS!
Uniform-cost search
§ Lakukan node expansion terhadap node di fringe
yang path cost-nya paling kecil.
§ Implementasi: fringe adalah sebuah priority queue di
mana node disortir berdasarkan path cost function
g(n).
§ Jika semua step cost sama, uniform-cost sama
dengan breadth-first.
Uniform-cost search - Properties
§ C* = Cost of the optimal solution
§ ε = each step to get closer to the goal node.
§ C*/ε+1 = the number of steps
§ Complete? Ya, jika step cost ³ ε untuk ε ³ 0
§ Time complexity? 𝑂(𝑏 ("#$∗/') )
§ Space complexity? 𝑂(𝑏 ("#$∗/') )
§ Optimal? Ya, karena urutan node expansion dilakukan urut
g(n).
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Depth First Search
§ Lakukan node expansion terhadap node di fringe yang paling jauh dari root.
§ Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)
§ Hasil node expansion ditaruh di depan
§ Depth-first search sangat cocok diimplementasikan secara rekursif.
A

B C

D E F G

H I J K L M N O
Tugas
§ Coba cari solution dari Arad ke Bucharest dengan DFS!
§ Tentukan Urutan Ekspansi Node, Path Solusi dan Path Cost!
§ Bandingkan dengan Tugas sebelumnya (BFS), manakah yang lebih optimal/jaraknya lebih
pendek
Depth First Search - Properties

§ Complete? Tidak, bisa gagal jika m tak terbatas, atau


(untuk TreeSearch) state space dengan loop.
§ Time complexity? O(𝑏 ! ), jika m > d?
§ Space complexity? O(bm) à linear space
§ Optimal? Tidak.
§ Depth First Search mengatasi masalah space:
Misal 1 node memakan 1000 byte, dan b = 10
Jika d = 12, space yang dibutuhkan hanya 118 kilobyte
Bandingkan dengan 10 petabyte
Variasi Depth First Search

§ Backtracking search: lakukan node expansion satu


successor setiap waktu. Jika gagal, backtrack dan coba
successor yang lain.
§ Depth-limited search: Batasi kedalaman maksimal yang
dilihat adalah k
- Mengatasi masalah untuk state space tak terbatas.
- Sayangnya, ada unsur incompleteness baru, jika k < d.
- Biasanya d tidak diketahui (tapi bisa ada estimasi, mis.
diameter state space).
Depth-limited search
Iterative-Deepening Search (IDS)

§ Lakukan depth-limited search secara bertahap dengan nilai


k yang incremental.
§ Strategi ini menggabungkan manfaat depth dan breadth
first: space complexity linier dan completeness terjamin!
§ Lakukan depth-limited search dengan k = 0, 1, 2, sampai
tidak cutoff.
Contoh
Contoh
Contoh
Contoh
IDS - Properties

§ Complete? Ya.
§ Time complexity? 𝑑𝑏" + (d – 1)𝑏 # + . . . + 𝑏 $ = O(𝑏 $ )
§ Space complexity? O(bd )
§ Optimal? Ya, jika semua step cost sama.
IDS - Properties

§ Secara sekilas, strategi ini kelihatan tidak efisien, atau boros:


banyak usaha terulang.
§ IDS malah lebih cepat dari BFS
N(IDS) = 𝑑𝑏 + (d – 1)𝑏 ! + . . . + (1)𝑏 "
N(BFS) = 𝑏 + 𝑏 ! + . . . 𝑏 " + (𝑏 "#$ − 𝑏)
Jika b = 10 dan d = 5:
N(IDS) = 50+400+3000+20000+100000 = 123.450
N(BFS) = 10+100+1000+10000+100000+999990 = 1.111.100
§ Pada umumnya, iterative deepening search adalah uninformed
search strategy yang terbaik jika state space besar dan kedalaman
solusi (d) tidak diketahui.
Perbandingan Strategi Pencarian
References

§ CSCM603130: Sistem Cerdas: State Space & Uninformed Search,


Fariz Darari, Nilam Fitriah, Fakultas Ilmu Komputer, Universitas
Indonesia
§ Artificial Intelligence: Penyelesaian Problem Dengan Pencarian (Blind
/ Un-Informed Searching), Imam Cholissodin, S.Si., M.Kom.

Anda mungkin juga menyukai