Penyelesaian Problem Dengan Pencarian (Blind / Un-Informed Searching)Imam Cholissodin, S.Si., M.Kom.
Kecerdasan Buatan/Artificial Intelligence
Pokok Bahasan
1. Agen penyelesaian problem
2. Jenis problem/masalah
3. Formulasi problem
4. Contoh problem
5. Strategi pencarian uninformed
6. Algoritma pencarian dasar (BFS & DFS)
7. Robot With AI
8. Latihan Individu + Tugas Kelompok
Agen Penyelesaian Problem
Agen pemecahan masalah adalah jenis agen berbasis tujuan.
Memutuskan apa yang harus dilakukan dengan mencari urutan tindakan yang mengarah pada keadaaan (states) yang diinginkan.
Formulasi Goal. Perumusan masalah. Search mengambil masalah sebagai masukan dan
solusi pengembalian dalam bentuk urutan tindakan. Implementasi / Eksekusi.
Agen Penyelesaian Problem
Penjelasan :o Percept : persepsi yang adao Seq : urutan tindakano State : deskripsi dari keadaan lingkungan sekitaro Goal : tujuan yang dicapaio Problem : perumusan masalah
Agen Penyelesaian Problem
Contoh : Romaniao Berlibur ke Rumania, saat ini berada di Arad.o Penerbangan (keberangkatan) dilakukan besok dari Bucharesto Merumuskan tujuan (Formulate goal) :
Berada di Bucharest
o Merumuskan masalah (Formulate problem) : States : berbagai kota sebagai alternatif tempat yang akan dilalui Actions : drive antara kota
o Cari solusi (Find solution) : Urutan kota yang dilalui untuk mencapai tujuan. Misalnya ; Arad, Sibiu, Fagaras, Bucharest
Jenis Problem/Masalah
Deterministic, fully observable Single-state problemo Agen tahu persis keadaan sesuatu yang akan diamati.
Non-observable Sensorless problem (conformant problem)o Agen mungkin tidak mengetahui dimana keberadaan sesuatu
yang dicari.
Nondeterministic and/or partially observable Contingency problem (keadaan yang tidak pasti)o Persepsi yang dapat memberikan informasi baru tentang
keadaan saat ini.
Unknown state space Exploration problem (Masalah eksplorasi)
Contoh Problem
Contoh : vacuum worldo Single-state, start in #5.
Solution?
Contoh Problem
Contoh : vacuum worldo Single-state, start in #5.
Solution? [Right, Suck]o Sensorless, start in
{1,2,3,4,5,6,7,8} e.g., Right goes to {2,4,6,8} Solution?
Contoh Problem
Contoh : vacuum worldo Sensorless, start in
{1,2,3,4,5,6,7,8} e.g., Right goes to {2,4,6,8} Solution? [Right,Suck,Left,Suck]
o Contingency • Nondeterministic: Suck may
dirty a clean carpet• Partially observable: location,
dirt at current location.
• Percept: [L, Clean], i.e.,
start in #5 or #7 Solution?
Contoh Problem
Contoh : vacuum worldo Sensorless, start in
{1,2,3,4,5,6,7,8} e.g., Right goes to {2,4,6,8} Solution? [Right,Suck,Left,Suck]
o Contingency • Nondeterministic: Suck may
dirty a clean carpet• Partially observable: location,
dirt at current location.• Percept: [L, Clean], i.e.,
start in #5 or #7Solution? [Right, if dirt then Suck]
Formulasi Problem
Single-state problem formulationo Suatu problem didefinisikan dalam 4 item :
1. initial state e.g., "at Arad"
2. actions or successor function S(x) = set of action–state pairs <action,successor(state)> e.g., S(Arad) = {<Berangkat(Arad Zerind), BeradaDi(Zerind)>, … }
3. goal test, can be explicit, e.g., x = "at Bucharest" implicit, e.g., Checkmate(x) / Skakmat(x)
4. path cost (additive) Menetapkan besarnya biaya untuk setiap jalur yang ada. Mis., jumlah jarak tempuh, jumlah tindakan lain yang dilakukan, dll. c(x, a, y) adalah cost action a dari state x ke state y, diasumsikan ≥ 0.
Solusinya adalah suatu urutan tindakan yang mengarah dari keadaan awal (initial state) ke keadaan tujuan (goal state).
Kualitas suatu solusi dapat diukur dari nilai fungsi biaya (cost function) yang paling minimal dari jalur (path) yang dilalui.
Formulasi Problem
Selecting a state spaceo Dunia nyata luar biasa kompleks dan rumit! State space harus
merupakan abstraksi masalah supaya bisa dipecahkan.o State = himpunan “keadaan nyata”. Mis : BeradaDi (Arad ) –
dengan siapa? kondisi cuaca?o Action = kombinasi berbagai “tindakan nyata”. Mis :
Berangkat(Arad , Sibiu) – jalan tikus, isi bensin, istirahat, dll.o Solution = representasi berbagai “path nyata” yang
mencapai tujuano Abstraksi ini membuat masalah yang nyata lebih mudah
dipecahkan.
Contoh Problem
Contoh : Vacuum Cleaner Worldo State: lokasi agent, status debu.o Possible action: DoKeKiri(L), DoKeKanan(R), DoSedot(S).o Goal test: semua ruangan sudah bebas debu.o Path cost: asumsi step cost sama untuk semua action,
mis: Path cost = 1 per action.o Successor function mendefinisikan state space sbb:
Contoh Problem
Contoh: 8-Puzzle
o State: lokasi 8 buah angka dalam matriks 3x3o Possible action (move, blank) : left, right, up, down o Goal test: apakah konfigurasi angka sudah seperti goal
state di atas.o Path cost: asumsi, 1 step cost = 1 per move.
Path cost = jumlah langkah dalam path.
Contoh Problem
Contoh: 8-Queens Problem
Letakkan 8 bidak menteri (queen!)
sedemikian sehingga tidak ada yang saling
“makan” (menteri bisa makan dalam satu
baris, kolom, diagonal).oState: Papan catur dengan n bidak menteri, 0 ≤ n ≤ 8.oInitial state: Papan catur yang kosong.oPossible action: Letakkan sebuah bidak menteri di posisi kosong.oGoal test: 8 bidak menteri di papan, tidak ada yang saling makan.Note : Formulasi yang lebih baik akan melarang menempatkan queen dalam setiap persegi yang sudah diserang.
Contoh Problem
Contoh: Robotic assembly (Perakitan Robot)
o States: koordinat real-valued bagian sudut sendi robot dari obyek yang akan dirakit.
o Actions: gerakan terus menerus dari sendi robot.o Goal test: perakitan telah lengkap (complete
assembly).o Path cost: waktu untuk eksekusi (time to execute).
Algoritma Pencarian Dasar
Tree search algorithms :o Setelah merumuskan masalah → cari solusinya menggunakan
sebuah search algorithmo Search tree merepresentasikan state space.o Search tree terdiri dari kumpulan node: struktur data yang
merepresentasikan suatu state pada suatu path, dan memiliki parent, children, depth, dan path cost.
o Root node merepresentasikan initial state.o Penerapan successor function terhadap (state yang diwakili)
node menghasilkan children baru → ini disebut node expansion.
o Kumpulan semua node yang belum di-expand disebut fringe (pinggir) sebuah search tree.
Algoritma Pencarian Dasar
Tree search algorithms (Basic idea) :o Mulai dari root node (Arad) sebagai current node.o Lakukan node expansion terhadapnya.o Pilih salah satu node yang di-expand sebagai current node
yang baru. Ulangi langkah sebelumnya.
Algoritma Pencarian Dasar
Tree search algorithms (Basic idea) :o Mulai dari root node (Arad) sebagai current node.o Lakukan node expansion terhadapnya.o Pilih salah satu node yang di-expand sebagai current node
yang baru. Ulangi langkah sebelumnya.
Algoritma Pencarian Dasar
Tree search algorithms (Basic idea) :o Mulai dari root node (Arad) sebagai current node.o Lakukan node expansion terhadapnya.o Pilih salah satu node yang di-expand sebagai current node
yang baru. Ulangi langkah sebelumnya.
Algoritma Pencarian Dasar
Tree search algorithms (Basic idea) :1. Pada awalnya, fringe = himpunan node yang mewakili initial state.
2. Pilih satu node dari fringe sebagai current node (Kalau fringe kosong, selesai dengan gagal).
3. Jika node tsb. lolos goal test, selesai dengan sukses!
4. Jika tidak, lakukan node expansion terhadap current node tsb. Tambahkan semua node yang dihasilkan ke fringe.
5. Ulangi langkah 2.
Algoritma Pencarian Dasar
Tree search algorithms (Basic idea) :1. Pada awalnya, fringe = himpunan node yang mewakili initial state.
2. Pilih satu node dari fringe sebagai current node (Kalau fringe kosong, selesai dengan gagal).
3. Jika node tsb. lolos goal test, selesai dengan sukses!
4. Jika tidak, lakukan node expansion terhadap current node tsb. Tambahkan semua node yang dihasilkan ke fringe.
5. Ulangi langkah 2.
Algoritma Pencarian Dasar
Tree search algorithms (Basic idea) :1. Pada awalnya, fringe = himpunan node yang mewakili initial state.
2. Pilih satu node dari fringe sebagai current node (Kalau fringe kosong, selesai dengan gagal).
3. Jika node tsb. lolos goal test, selesai dengan sukses!
4. Jika tidak, lakukan node expansion terhadap current node tsb. Tambahkan semua node yang dihasilkan ke fringe.
5. Ulangi langkah 2.
Algoritma Pencarian Dasar
Tree search algorithms (Basic idea) :1. Pada awalnya, fringe = himpunan node yang mewakili initial state.
2. Pilih satu node dari fringe sebagai current node (Kalau fringe kosong, selesai dengan gagal).
3. Jika node tsb. lolos goal test, selesai dengan sukses!
4. Jika tidak, lakukan node expansion terhadap current node tsb. Tambahkan semua node yang dihasilkan ke fringe.
5. Ulangi langkah 2.
Algoritma Pencarian Dasar
Implementation: states vs. nodeso Sebuah state merepresentasikan abstraksi keadaan nyata dari
masalah.o Sebuah node adalah struktur data yang menjadi bagian dari search
tree.o State tidak memiliki parent, children, depth, path cost!o Node = state pada path tertentu. Dua node berbeda bisa mewakili
state yang sama!
Strategi Pencarian Uninformed
Strategi pencarian :o Terdapat berbagai jenis strategi untuk melakukan search.o Semua strategi ini berbeda dalam satu hal: urutan dari node
expansion.o 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 dengan minimum cost pasti
ditemukan?o Time & space complexity diukur berdasarkan
b - branching factor dari search tree d - depth (kedalaman) dari solusi optimal m - kedalaman maksimum dari search tree (bisa infinite!)
Strategi Pencarian Uninformed
Strategi Pencarian Uninformed :o Uninformed strategy hanya menggunakan informasi dari definisi
masalah.o Bisa diterapkan secara generik terhadap semua jenis masalah
yang bisa direpresentasikan dalam sebuah state space.o 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 o Implementasi: fringe adalah sebuah queue, data struktur FIFO
(First In First Out)o Hasil node expansion (successor function) ditaruh di belakang
BFS traversal queue:
abccdedefgefgfgg
Breadth-First Search
Lakukan node expansion terhadap node di fringe yang paling dekat ke root o Implementasi: fringe adalah sebuah queue, data struktur FIFO
(First In First Out)o Hasil node expansion (successor function) ditaruh di belakang
BFS traversal queue:
abccdedefgefgfgg
Breadth-First Search
Lakukan node expansion terhadap node di fringe yang paling dekat ke root o Implementasi: fringe adalah sebuah queue, data struktur FIFO
(First In First Out)o Hasil node expansion (successor function) ditaruh di belakang
BFS traversal queue:
abccdedefgefgfgg
Breadth-First Search
Lakukan node expansion terhadap node di fringe yang paling dekat ke root o Implementasi: fringe adalah sebuah queue, data struktur FIFO
(First In First Out)o Hasil node expansion (successor function) ditaruh di belakang
BFS traversal queue:
abccdedefgefgfgg
Breadth-First Search
BFS menggunakan prisip queue (Contoh lain)
BFS traversal queue:
a b
e f
c d
g h
BFS tree:
a b
e f
c d
g h
abefefgfggchhdd
1
3
2 6
4 75
8
Breadth-First Search
Properties of breadth-first search :o Complete? Ya, jika b terbataso Time complexity? b + b2+ b3+ . . . + bd+ b(bd− 1) = O(bd +1) →
eksponensial dalam d.o Space complexity? O(bd +1), karena semua node yang di-generate harus
disimpan.o Optimal? Ya, jika semua step cost sama, tapi pada umumnya tidak
optimal.o Masalah utama breadth-first search adalah space :
Mis: 1 node memakan 1000 byte, dan b = 10 Jika d = 6, ada 107 node ≈ 10 gigabyte. Jika d = 12, ada 1013 node ≈ 10 petabyte!
Depth-First Search
Lakukan node expansion terhadap node di fringe yang paling jauh dari root.o Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)o Hasil node expansion ditaruh di depano Depth-first search sangat cocok diimplementasikan secara rekursif.
DFS traversal stack:DFS traversal stack:
aababdabdhabdiabdababeabejabeabek…
abeabaacacfacflacfacfmacfacacg…
acgnacgacgoacgacanull
Depth-First Search
Lakukan node expansion terhadap node di fringe yang paling jauh dari root.o Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)o Hasil node expansion ditaruh di depano Depth-first search sangat cocok diimplementasikan secara rekursif.
DFS traversal stack:DFS traversal stack:
aababdabdhabdiabdababeabejabeabek…
abeabaacacfacflacfacfmacfacacg…
acgnacgacgoacgacanull
Depth-First Search
Lakukan node expansion terhadap node di fringe yang paling jauh dari root.o Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)o Hasil node expansion ditaruh di depano Depth-first search sangat cocok diimplementasikan secara rekursif.
DFS traversal stack:DFS traversal stack:
aababdabdhabdiabdababeabejabeabek…
abeabaacacfacflacfacfmacfacacg…
acgnacgacgoacgacanull
Depth-First Search
Lakukan node expansion terhadap node di fringe yang paling jauh dari root.o Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)o Hasil node expansion ditaruh di depano Depth-first search sangat cocok diimplementasikan secara rekursif.
DFS traversal stack:DFS traversal stack:
aababdabdhabdiabdababeabejabeabek…
abeabaacacfacflacfacfmacfacacg…
acgnacgacgoacgacanull
Depth-First Search
Lakukan node expansion terhadap node di fringe yang paling jauh dari root.o Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)o Hasil node expansion ditaruh di depano Depth-first search sangat cocok diimplementasikan secara rekursif.
DFS traversal stack:DFS traversal stack:
aababdabdhabdiabdababeabejabeabek…
abeabaacacfacflacfacfmacfacacg…
acgnacgacgoacgacanull
Depth-First Search
Lakukan node expansion terhadap node di fringe yang paling jauh dari root.o Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)o Hasil node expansion ditaruh di depano Depth-first search sangat cocok diimplementasikan secara rekursif.
DFS traversal stack:DFS traversal stack:
aababdabdhabdiabdababeabejabeabek…
abeabaacacfacflacfacfmacfacacg…
acgnacgacgoacgacanull
Depth-First Search
Lakukan node expansion terhadap node di fringe yang paling jauh dari root.o Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)o Hasil node expansion ditaruh di depano Depth-first search sangat cocok diimplementasikan secara rekursif.
DFS traversal stack:DFS traversal stack:
aababdabdhabdiabdababeabejabeabek…
abeabaacacfacflacfacfmacfacacg…
acgnacgacgoacgacanull
Depth-First Search
Lakukan node expansion terhadap node di fringe yang paling jauh dari root.o Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)o Hasil node expansion ditaruh di depano Depth-first search sangat cocok diimplementasikan secara rekursif.
DFS traversal stack:DFS traversal stack:
aababdabdhabdiabdababeabejabeabek…
abeabaacacfacflacfacfmacfacacg…
acgnacgacgoacgacanull
Depth-First Search
Lakukan node expansion terhadap node di fringe yang paling jauh dari root.o Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)o Hasil node expansion ditaruh di depano Depth-first search sangat cocok diimplementasikan secara rekursif.
DFS traversal stack:DFS traversal stack:
aababdabdhabdiabdababeabejabeabek…
abeabaacacfacflacfacfmacfacacg…
acgnacgacgoacgacanull
Depth-First Search
Lakukan node expansion terhadap node di fringe yang paling jauh dari root.o Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)o Hasil node expansion ditaruh di depano Depth-first search sangat cocok diimplementasikan secara rekursif.
DFS traversal stack:DFS traversal stack:
aababdabdhabdiabdababeabejabeabek…
abeabaacacfacflacfacfmacfacacg…
acgnacgacgoacgacanull
Depth-First Search
Lakukan node expansion terhadap node di fringe yang paling jauh dari root.o Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)o Hasil node expansion ditaruh di depano Depth-first search sangat cocok diimplementasikan secara rekursif.
DFS traversal stack:DFS traversal stack:
aababdabdhabdiabdababeabejabeabek…
abeabaacacfacflacfacfmacfacacg…
acgnacgacgoacgacanull
Depth-First Search
Lakukan node expansion terhadap node di fringe yang paling jauh dari root.o Implementasi: fringe adalah sebuah stack, data struktur LIFO (Last In First Out)o Hasil node expansion ditaruh di depano Depth-first search sangat cocok diimplementasikan secara rekursif.
DFS traversal stack:DFS traversal stack:
aababdabdhabdiabdababeabejabeabek…
abeabaacacfacflacfacfmacfacacg…
acgnacgacgoacgacanull
Depth-First Search
DFS menggunakan prisip stack (Contoh lain)
a b
e f
c d
g h
DFS traversal stack:DFS traversal stack: DFS tree:DFS tree:
a b
e f
c d
g h
aababfabfeabfababgabgcabgcdabgcdhabgcd…
1 2
54
6
3
7
8
Depth-First Search
Properties of depth-first searcho Complete? Tidak, bisa gagal jika m tak terbatas, atau state space
dengan loop .o Time complexity? O(bm) → jika m »d , parah!o Space complexity? O(bm) → linear space!o Optimal? Tidak.o Depth-first search mengatasi masalah space :
Mis: 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-per-satu. Jika gagal backtrack dan coba nilai successor function yang lain.
Depth-limited search : Batasi kedalaman maksimal yang dilihat adalah k.o Mengatasi masalah untuk state space tak terbatas.o Sayangnya, ada unsur incompleteness baru, jika k < d .o Biasanya d tidak diketahui (tapi bisa ada estimasi, mis. diameter
suatu graph).
Iterative-Deepening Search
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.
Iterative-Deepening Search
Iterative deepening search k =0
Iterative-Deepening Search
Iterative deepening search k =1
Iterative-Deepening Search
Iterative deepening search k =2
Iterative-Deepening Search
Iterative deepening search k =3
Iterative-Deepening Search
Properties of Iterative-Deepening Searcho Complete? Ya.o Time complexity? db1+ (d − 1)b2+ . . . + bd= O(bd)o Space complexity? O(bd )o Optimal? Ya, jika semua step cost sama.
Secara sekilas, strategi ini kelihatan tidak efisien, atau boros: banyak usaha terulang!
Iterative-deepening search malah lebih cepat dari breadth-first search!o N(IDS ) = db + (d − 1)b2+ . . . + (1)bd
o N(BFS) = b + b2+ . . . + bd+ (bd+1− b) o Untuk b = 10 dan d = 5:
N(IDS ) = 50 + 400 + 3,000 + 20,000 + 100,000 = 123,450N(BFS) = 10+100+1,000+10,000+100,000+999,990 = 1,111,100.
o Pada umumnya, IDS adalah uninformed search strategy yang terbaik jika state space besar dan kedalaman solusi (d ) tidak diketahui.
Perbandingan Algoritma
Perbandingan strategi pencarian
Kegagalan menangani state yang mengulang dapat membuat masalah linier menjadi eksponensial!
Graph Search
Solusinya adalah untuk mencatat state mana yang sudah pernah dicoba. Catatan ini disebut closed list (fringe = open list).
Modifikasi algoritma TreeSearch dengan closed list menjadi GraphSearch.
Graph Search
Time complexity: sama, jika kita asumsi operasi STATE[node] closed = O(1) (implementasi dengan ∈hashtable?)
Space complexity: DFS dan IDS tidak lagi linier! GraphSearch tidak mencatat path menuju suatu state.
Ini mempengaruhi sifat optimality suatu strategi:o Uniform-cost dan breadth-first search dengan step
cost konstanta masih optimal.o Untuk variasi Depth-first dan iterative-deepening
search, jika state mengulang ditemukan, periksa apakah path cost-nya lebih kecil → update info node dan anak-anaknya!
/
Ringkasan
Breadth-first search: completeness terjamin, tapi rakus memory. Uniform-cost search: mirip BFS, optimality terjamin jika cost path ≥
ε untuk ε > 0. Depth-first search: Space complexity linier, tetapi tidak complete
(maupun optimal). Depth-limited search: mirip DFS, tetapi kedalaman search dibatasi
sampai k. Iterative-deepening search: lakukan DLS secara bertahap dengan
k = 0, 1, 2, . . .. Pengulangan state bisa dihindari dengan mencatat state yang
sudah pernah dicoba. TreeSearch → GraphSearch.
Latihan Individu
Selesaikan graf di bawah ini menggunakan algoritma DFS dan BFS berikut dengan hasil setiap langkah (Traversal dan Tree) dimulai dari node 1 untuk (a1) node K untuk (a2) !
(a1) (a2)
A B C L
GFED
HI
M K
J
Tugas Kelompok
Buatlah video untuk pemecahan/ solusi kasus :a) 8-Puzzles
b) 8-Queens (Optional)
Lalu tuliskan langkah-langkah penyelesaiannya ! (Initial State-nya bebas)
Selesaikan graf di bawah ini menggunakan algoritma IDS berikut dengan hasil setiap langkah (Traversal dan Tree) dimulai dari node A (k=2) !
A B C L
GFED
HI
M K
J
Selesai
Robot With AI