650 likes | 1.28k Views
Kecerdasan Buatan / Artificial Intelligence. Penyelesaian Problem Dengan Pencarian (Blind / Un-Informed Searching). Imam Cholissodin, S.Si., M.Kom. Pokok Bahasan. Agen penyelesaian problem Jenis problem/masalah Formulasi problem Contoh problem Strategi pencarian uninformed
E N D
KecerdasanBuatan/ Artificial Intelligence Penyelesaian Problem Dengan Pencarian (Blind / Un-Informed Searching) Imam Cholissodin, S.Si., M.Kom.
Pokok Bahasan • Agen penyelesaian problem • Jenis problem/masalah • Formulasi problem • Contoh problem • Strategi pencarian uninformed • Algoritma pencarian dasar (BFS & DFS) • Robot With AI • 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 : • Percept : persepsi yang ada • Seq : urutan tindakan • State : deskripsi dari keadaan lingkungan sekitar • Goal : tujuan yang dicapai • Problem : perumusan masalah
Agen Penyelesaian Problem • Contoh : Romania • Berlibur ke Rumania, saat ini berada di Arad. • Penerbangan (keberangkatan) dilakukan besok dari Bucharest • Merumuskan tujuan (Formulate goal) : • Berada di Bucharest • Merumuskan masalah (Formulate problem) : • States : berbagai kota sebagai alternatif tempat yang akan dilalui • Actions : drive antara kota • Cari solusi (Find solution) : • Urutan kota yang dilalui untuk mencapai tujuan. Misalnya ; Arad, Sibiu, Fagaras, Bucharest
Jenis Problem/Masalah • Deterministic, fully observable Single-state problem • Agentahupersiskeadaansesuatu yang akandiamati. • Non-observable Sensorless problem (conformant problem) • Agenmungkintidakmengetahuidimanakeberadaansesuatu yang dicari. • Nondeterministic and/or partially observable Contingency problem (keadaan yang tidakpasti) • Persepsi yang dapatmemberikaninformasibarutentangkeadaansaatini. • Unknown state space Exploration problem (Masalaheksplorasi)
Contoh Problem • Contoh : vacuum world • Single-state, start in #5. Solution?
Contoh Problem • Contoh : vacuum world • Single-state, start in #5. Solution?[Right, Suck] • 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 world • 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] • 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 world • 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] • 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 formulation • Suatu problemdidefinisikan dalam 4 item : • initial state e.g., "at Arad" • actions or successor function S(x) = set of action–state pairs • <action,successor(state)> • e.g., S(Arad) = {<Berangkat(Arad Zerind), BeradaDi(Zerind)>, … } • goal test, can be • explicit, e.g., x = "at Bucharest" • implicit, e.g., Checkmate(x) / Skakmat(x) • 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 space • Dunianyataluarbiasakompleksdanrumit! State space harusmerupakanabstraksimasalahsupayabisadipecahkan. • State = himpunan “keadaannyata”. Mis : BeradaDi(Arad ) – dengansiapa? kondisicuaca? • Action= kombinasiberbagai “tindakannyata”. Mis : Berangkat(Arad , Sibiu) – jalantikus, isibensin, istirahat, dll. • Solution= representasiberbagai “path nyata” yang mencapaitujuan • Abstraksiinimembuatmasalah yang nyatalebihmudahdipecahkan.
Contoh Problem • Contoh : Vacuum Cleaner World • State: lokasi agent, status debu. • Possible action: DoKeKiri(L), DoKeKanan(R), DoSedot(S). • Goal test: semuaruangansudahbebasdebu. • Path cost: asumsi step cost samauntuksemuaaction, mis: Path cost = 1 per action. • Successor function mendefinisikan state space sbb:
Contoh Problem • Contoh: 8-Puzzle • State: lokasi 8 buahangkadalammatriks3x3 • Possible action(move, blank) : left, right, up, down • Goal test: apakahkonfigurasiangkasudahsepertigoal state di atas. • Path cost: asumsi, 1 step cost = 1 per move. Path cost = jumlahlangkahdalam path.
Contoh Problem • Contoh: 8-Queens Problem Letakkan 8 bidak menteri (queen!) sedemikian sehinggatidak ada yang saling “makan”(menteri bisa makan dalamsatu baris, kolom, diagonal). • State: Papan catur dengan n bidak menteri, 0 ≤ n ≤ 8. • Initial state: Papan catur yang kosong. • Possible action: Letakkan sebuah bidak menteri diposisi kosong. • Goal test: 8 bidak menteri di papan, tidak ada yangsaling makan. Note : Formulasi yang lebih baik akan melarang menempatkan queen dalam setiap persegi yang sudah diserang.
Contoh Problem • Contoh: Robotic assembly (Perakitan Robot) • States: koordinat real-valued bagian sudut sendi robot dari obyek yang akan dirakit. • Actions: gerakan terus menerus dari sendi robot. • Goal test: perakitan telah lengkap (complete assembly). • Path cost: waktu untukeksekusi (time to execute).
Algoritma Pencarian Dasar • Tree search algorithms : • Setelahmerumuskanmasalah → carisolusinyamenggunakansebuahsearch algorithm • Search tree merepresentasikan state space. • Search tree terdiridarikumpulannode: strukturdata yang merepresentasikansuatu state padasuatupath, danmemilikiparent, children, depth, danpath cost. • Root nodemerepresentasikan initial state. • Penerapan successor function terhadap (state yang diwakili) node menghasilkan children baru → inidisebutnode expansion. • Kumpulan semua node yang belum di-expand disebutfringe(pinggir) sebuah search tree.
Algoritma Pencarian Dasar • Tree search algorithms (Basic idea) : • Mulaidari root node (Arad) sebagaicurrent node. • Lakukan node expansion terhadapnya. • Pilihsalahsatu node yang di-expand sebagaicurrent node yang baru. Ulangilangkahsebelumnya.
Algoritma Pencarian Dasar • Tree search algorithms (Basic idea) : • Mulaidari root node (Arad) sebagaicurrent node. • Lakukannode expansion terhadapnya. • Pilihsalahsatu node yang di-expand sebagaicurrent node yang baru. Ulangilangkahsebelumnya.
Algoritma Pencarian Dasar • Tree search algorithms (Basic idea) : • Mulaidari root node (Arad) sebagaicurrent node. • Lakukannode expansion terhadapnya. • Pilihsalahsatu node yang di-expand sebagaicurrent node yang baru. Ulangilangkahsebelumnya.
Algoritma Pencarian Dasar • Tree search algorithms (Basic idea) : • Pada awalnya, fringe = himpunan node yang mewakili initial state. • Pilih satu node dari fringe sebagai current node (Kalau fringe kosong, selesai dengan gagal). • Jika node tsb. lolos goal test, selesai dengan sukses! • Jika tidak, lakukan node expansion terhadap current node tsb. Tambahkan semua node yang dihasilkan ke fringe. • Ulangi langkah 2.
Algoritma Pencarian Dasar • Tree search algorithms (Basic idea) : • Pada awalnya, fringe = himpunan node yang mewakili initial state. • Pilih satu node dari fringe sebagai current node (Kalau fringe kosong, selesai dengan gagal). • Jika node tsb. lolos goal test, selesai dengan sukses! • Jika tidak, lakukan node expansion terhadap current node tsb. Tambahkan semua node yang dihasilkan ke fringe. • Ulangi langkah 2.
Algoritma Pencarian Dasar • Tree search algorithms (Basic idea) : • Pada awalnya, fringe = himpunan node yang mewakili initial state. • Pilih satu node dari fringe sebagai current node (Kalau fringe kosong, selesai dengan gagal). • Jika node tsb. lolos goal test, selesai dengan sukses! • Jika tidak, lakukan node expansion terhadap current node tsb. Tambahkan semua node yang dihasilkan ke fringe. • Ulangi langkah 2.
Algoritma Pencarian Dasar • Tree search algorithms (Basic idea) : • Pada awalnya, fringe = himpunan node yang mewakili initial state. • Pilih satu node dari fringe sebagai current node (Kalau fringe kosong, selesai dengan gagal). • Jika node tsb. lolos goal test, selesai dengan sukses! • Jika tidak, lakukan node expansion terhadap current node tsb. Tambahkan semua node yang dihasilkan ke fringe. • Ulangi langkah 2.
Algoritma Pencarian Dasar • Implementation: states vs. nodes • Sebuah state merepresentasikan abstraksi keadaannyatadari masalah. • Sebuah node adalah struktur data yang menjadi bagiandari search tree. • State tidak memiliki parent, children, depth, path cost! • Node = state pada path tertentu. Dua node berbedabisa mewakili state yang sama!
Strategi Pencarian Uninformed • Strategipencarian : • Terdapatberbagaijenisstrategiuntukmelakukan search. • Semuastrategiiniberbedadalamsatuhal: urutandarinode expansion. • Search strategy di-evaluasiberdasarkan: • completeness: apakahsolusi (jikaada) pastiditemukan? • time complexity: jumlah node yang di-expand. • space complexity: jumlahmaksimum node di dalam memory. • optimality: apakahsolusidengan minimum cost pastiditemukan? • Time & space complexity diukurberdasarkan • b - branching factor dari search tree • d - depth (kedalaman) darisolusioptimal • m - kedalamanmaksimumdari search tree (bisa infinite!)
Strategi Pencarian Uninformed • StrategiPencarianUninformed : • Uninformed strategy hanyamenggunakaninformasidaridefinisimasalah. • Bisaditerapkansecaragenerikterhadapsemuajenismasalahyang bisadirepresentasikandalamsebuah state space. • Ada beberapajenis : • Breadth-first search • Uniform-cost search • Depth-first search • Depth-limited search • Iterative-deepening search
Breadth-First Search • Lakukannode expansion terhadap node di fringe yang paling dekatke root • Implementasi: fringe adalahsebuah queue, data strukturFIFO (First In First Out) • Hasil node expansion (successor function) ditaruhdi belakang BFS traversal queue: a bc cde defg efg fg g
Breadth-First Search • Lakukannode expansion terhadap node di fringe yang paling dekatke root • Implementasi: fringe adalahsebuah queue, data strukturFIFO (First In First Out) • Hasil node expansion (successor function) ditaruhdi belakang BFS traversal queue: a bc cde defg efg fg g
Breadth-First Search • Lakukannode expansion terhadap node di fringe yang paling dekatke root • Implementasi: fringe adalahsebuah queue, data strukturFIFO (First In First Out) • Hasil node expansion (successor function) ditaruhdi belakang BFS traversal queue: a bc cde defg efg fg g
Breadth-First Search • Lakukannode expansion terhadap node di fringe yang paling dekatke root • Implementasi: fringe adalahsebuah queue, data strukturFIFO (First In First Out) • Hasil node expansion (successor function) ditaruhdi belakang BFS traversal queue: a bc cde defg efg fg g
a b c d e f g h Breadth-First Search • BFS menggunakan prisip queue (Contoh lain) BFS traversal queue: BFS tree: a bef efg fg g ch hd d 1 2 6 8 a b c d e f g h 3 4 5 7
Breadth-First Search • Properties of breadth-first search : • Complete? Ya, jika b terbatas • Time complexity? b + b2+ b3+ . . . + bd+ b(bd− 1) = O(bd +1) → eksponensial dalam d. • Space complexity? O(bd +1), 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 107 node ≈ 10 gigabyte. • Jika d = 12, ada 1013 node ≈ 10 petabyte!
Depth-First Search • Lakukannode expansion terhadap node di fringe yang paling jauhdariroot. • Implementasi: fringe adalahsebuahstack, data strukturLIFO (Last In First Out) • Hasil node expansion ditaruh di depan • Depth-first search sangatcocokdiimplementasikansecararekursif. DFS traversal stack: acgn acg acgo acg ac a null a ab abd abdh abdi abd ab abe abej abe abek … abe ab a ac acf acfl acf acfm acf ac acg …
Depth-First Search • Lakukannode expansion terhadap node di fringe yang paling jauhdariroot. • Implementasi: fringe adalahsebuahstack, data strukturLIFO (Last In First Out) • Hasil node expansion ditaruh di depan • Depth-first search sangatcocokdiimplementasikansecararekursif. DFS traversal stack: acgn acg acgo acg ac a null a ab abd abdh abdi abd ab abe abej abe abek … abe ab a ac acf acfl acf acfm acf ac acg …
Depth-First Search • Lakukannode expansion terhadap node di fringe yang paling jauhdariroot. • Implementasi: fringe adalahsebuahstack, data strukturLIFO (Last In First Out) • Hasil node expansion ditaruh di depan • Depth-first search sangatcocokdiimplementasikansecararekursif. DFS traversal stack: acgn acg acgo acg ac a null a ab abd abdh abdi abd ab abe abej abe abek … abe ab a ac acf acfl acf acfm acf ac acg …
Depth-First Search • Lakukannode expansion terhadap node di fringe yang paling jauhdariroot. • Implementasi: fringe adalahsebuahstack, data strukturLIFO (Last In First Out) • Hasil node expansion ditaruh di depan • Depth-first search sangatcocokdiimplementasikansecararekursif. DFS traversal stack: acgn acg acgo acg ac a null a ab abd abdh abdi abd ab abe abej abe abek … abe ab a ac acf acfl acf acfm acf ac acg …
Depth-First Search • Lakukannode expansion terhadap node di fringe yang paling jauhdariroot. • Implementasi: fringe adalahsebuahstack, data strukturLIFO (Last In First Out) • Hasil node expansion ditaruh di depan • Depth-first search sangatcocokdiimplementasikansecararekursif. DFS traversal stack: acgn acg acgo acg ac a null a ab abd abdh abdi abd ab abe abej abe abek … abe ab a ac acf acfl acf acfm acf ac acg …
Depth-First Search • Lakukannode expansion terhadap node di fringe yang paling jauhdariroot. • Implementasi: fringe adalahsebuahstack, data strukturLIFO (Last In First Out) • Hasil node expansion ditaruh di depan • Depth-first search sangatcocokdiimplementasikansecararekursif. DFS traversal stack: acgn acg acgo acg ac a null a ab abd abdh abdi abd ab abe abej abe abek … abe ab a ac acf acfl acf acfm acf ac acg …
Depth-First Search • Lakukannode expansion terhadap node di fringe yang paling jauhdariroot. • Implementasi: fringe adalahsebuahstack, data strukturLIFO (Last In First Out) • Hasil node expansion ditaruh di depan • Depth-first search sangatcocokdiimplementasikansecararekursif. DFS traversal stack: acgn acg acgo acg ac a null a ab abd abdh abdi abd ab abe abej abe abek … abe ab a ac acf acfl acf acfm acf ac acg …
Depth-First Search • Lakukannode expansion terhadap node di fringe yang paling jauhdariroot. • Implementasi: fringe adalahsebuahstack, data strukturLIFO (Last In First Out) • Hasil node expansion ditaruh di depan • Depth-first search sangatcocokdiimplementasikansecararekursif. DFS traversal stack: acgn acg acgo acg ac a null a ab abd abdh abdi abd ab abe abej abe abek … abe ab a ac acf acfl acf acfm acf ac acg …
Depth-First Search • Lakukannode expansion terhadap node di fringe yang paling jauhdariroot. • Implementasi: fringe adalahsebuahstack, data strukturLIFO (Last In First Out) • Hasil node expansion ditaruh di depan • Depth-first search sangatcocokdiimplementasikansecararekursif. DFS traversal stack: acgn acg acgo acg ac a null a ab abd abdh abdi abd ab abe abej abe abek … abe ab a ac acf acfl acf acfm acf ac acg …
Depth-First Search • Lakukannode expansion terhadap node di fringe yang paling jauhdariroot. • Implementasi: fringe adalahsebuahstack, data strukturLIFO (Last In First Out) • Hasil node expansion ditaruh di depan • Depth-first search sangatcocokdiimplementasikansecararekursif. DFS traversal stack: acgn acg acgo acg ac a null a ab abd abdh abdi abd ab abe abej abe abek … abe ab a ac acf acfl acf acfm acf ac acg …
Depth-First Search • Lakukannode expansion terhadap node di fringe yang paling jauhdariroot. • Implementasi: fringe adalahsebuahstack, data strukturLIFO (Last In First Out) • Hasil node expansion ditaruh di depan • Depth-first search sangatcocokdiimplementasikansecararekursif. DFS traversal stack: acgn acg acgo acg ac a null a ab abd abdh abdi abd ab abe abej abe abek … abe ab a ac acf acfl acf acfm acf ac acg …
Depth-First Search • Lakukannode expansion terhadap node di fringe yang paling jauhdariroot. • Implementasi: fringe adalahsebuahstack, data strukturLIFO (Last In First Out) • Hasil node expansion ditaruh di depan • Depth-first search sangatcocokdiimplementasikansecararekursif. DFS traversal stack: acgn acg acgo acg ac a null a ab abd abdh abdi abd ab abe abej abe abek … abe ab a ac acf acfl acf acfm acf ac acg …
a b c d e f g h Depth-First Search • DFS menggunakanprisipstack (Contohlain) DFS traversal stack: DFS tree: a ab abf abfe abf ab abg abgc abgcd abgcdh abgcd … 1 2 6 7 a b c d e f g h 4 3 5 8
Depth-First Search • Properties of depth-first search • Complete? Tidak, bisagagaljika m takterbatas, atau state space dengan loop . • Time complexity? O(bm) → jika m »d , parah! • Space complexity? O(bm) → linear space! • Optimal? Tidak. • Depth-first search mengatasimasalahspace : • Mis: 1 node memakan 1000 byte, dan b = 10 • Jika d = 12, space yang dibutuhkanhanya 118 kilobyte . . . • bandingkandengan 10 petabyte!
Variasi Depth-First Search • Backtracking search : lakukan node expansion satu-per-satu. Jikagagal backtrack dancobanilai successor function yang lain. • Depth-limited search : Batasikedalamanmaksimal yang dilihatadalahk. • Mengatasimasalahuntuk state space takterbatas. • Sayangnya, adaunsur incompleteness baru, jikak < d . • Biasanya d tidakdiketahui (tapibisaadaestimasi, mis. diameter suatu graph).
Iterative-Deepening Search • Lakukandepth-limited search secarabertahapdengannilai k yang incremental. • Strategiinimenggabungkanmanfaat depth dan breadth first: space complexity linierdancompleteness terjamin! • Lakukan depth-limited search dengank = 0, 1, 2, . . . sampaitidakcutoff.
Iterative-Deepening Search • Iterative deepening search k =0