Binary Search Binary Search Catatan : Setiap metoda mempunyai Catatan : Setiap metoda mempunyai

8. Binary Search 8. Binary Search Catatan : Setiap metoda mempunyai Catatan : Setiap metoda mempunyai

karakteristik yang berbeda. karakteristik yang berbeda.

Strategi Pencarian

Terdapat empat kriteria dalam strategi pencarian, Terdapat empat kriteria dalam strategi pencarian, yaitu: yaitu:

• Completeness: Apakah strategi tersebut • Completeness: Apakah strategi tersebut menjamin penemuan solusi jika solusinya menjamin penemuan solusi jika solusinya memang ada? memang ada?

• Time complexity: Berapa lama waktu yang • Time complexity: Berapa lama waktu yang diperlukan? diperlukan?

• Space complexity: Berapa banyak memori • Space complexity: Berapa banyak memori yang diperlukan? yang diperlukan?

• Optimality: Apakah strategi ini menemukan • Optimality: Apakah strategi ini menemukan solusi terbaik jika terdapat beberapa solusi solusi terbaik jika terdapat beberapa solusi berbeda pada permasalahan yang ada? berbeda pada permasalahan yang ada?

Breadth-First Search (BFS)

Pencarian pada semua node dalam setiap level secara Pencarian pada semua node dalam setiap level secara berurutan dari kiri ke kanan. Jika pada satu level belum berurutan dari kiri ke kanan. Jika pada satu level belum ditemukan solusi, maka pencarian dilanjutkan pada level ditemukan solusi, maka pencarian dilanjutkan pada level berikutnya. Demikian seterusnya sampai ditemukan berikutnya. Demikian seterusnya sampai ditemukan solusi (Optimal). BFS menyimpan semua node yang solusi (Optimal). BFS menyimpan semua node yang pernah dibangkitkan untuk penelusuran balik jika solusi pernah dibangkitkan untuk penelusuran balik jika solusi sudah ditemukan. sudah ditemukan.

Sedangkan masalah Water Jug, pembangkitan suksesor Sedangkan masalah Water Jug, pembangkitan suksesor dari suatu node bergantung pada urutan dari Aturan dari suatu node bergantung pada urutan dari Aturan Produksi yang dibuat Jika urutan dari aturan 4 ditukar Produksi yang dibuat Jika urutan dari aturan 4 ditukar dengan aturan 5, maka pohon BFS yang dibangkitkan dengan aturan 5, maka pohon BFS yang dibangkitkan juga akan berubah. juga akan berubah.

Uniform Cost Search (UCS)

Konsepnya hampir sama dengan BFS, bedanya Konsepnya hampir sama dengan BFS, bedanya bahwa BFS menggunakan urutan level dari yang bahwa BFS menggunakan urutan level dari yang paling rendah sampai paling tinggi. Sedangkan UCS paling rendah sampai paling tinggi. Sedangkan UCS menggunakan harga terendah yang dihitung menggunakan harga terendah yang dihitung berdasarkan harga dari node asal menuju ke node berdasarkan harga dari node asal menuju ke node tersebut dapat dilambangkan sebagai g(n). BFS tersebut dapat dilambangkan sebagai g(n). BFS adalah juga UCS jika harga g(n) = DEPTH(n). adalah juga UCS jika harga g(n) = DEPTH(n).

Syarat yang harus dipenuhi oleh pohon UCS: Syarat yang harus dipenuhi oleh pohon UCS: g(SUCCESSOR(n)) >= g(n) utk setiap node n. Jika g(SUCCESSOR(n)) >= g(n) utk setiap node n. Jika syarat ini tidak dipenuhi maka UCS tidak bisa syarat ini tidak dipenuhi maka UCS tidak bisa dipakai. dipakai.

Depth-First Search (DFS)

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

Kelebihan DFS adalah: Kelebihan DFS adalah: • Pemakain memori hanya sedikit, berbeda jauh dengan BFS yang • Pemakain memori hanya sedikit, berbeda jauh dengan BFS yang

harus menyimpan semua node yang pernah dibangkitkan. harus menyimpan semua node yang pernah dibangkitkan. • Jika solusi yang dicari berada pada level yang dalam dan paling • Jika solusi yang dicari berada pada level yang dalam dan paling

kiri, maka DFS akan menemukannya secara cepat. kiri, maka DFS akan menemukannya secara cepat. Kelemahan DFS adalah: Kelemahan DFS adalah: • Jika pohon yang dibangkitkan mempunyai level yang dalam (tak • Jika pohon yang dibangkitkan mempunyai level yang dalam (tak

terhingga), maka tidak ada jaminan untuk menemukan solusi terhingga), maka tidak ada jaminan untuk menemukan solusi (Tidak Complete). (Tidak Complete).

• Jika terdapat lebih dari satu solusi yang sama tetapi berada pada • Jika terdapat lebih dari satu solusi yang sama tetapi berada pada level yang berbeda, maka pada DFS tidak ada jaminan untuk level yang berbeda, maka pada DFS tidak ada jaminan untuk menemukan solusi yang paling baik (Tidak Optimal). menemukan solusi yang paling baik (Tidak Optimal).

Depth-Limited Search (DLS) Depth-Limited Search (DLS)

Mengatasi kelemahan DFS (tidak complete) dengan membatasi kedalaman maksimum dari suatu jalur solusi. Tetapi harus diketahui atau ada batasan dari sistem tentang level maksimum. Jika batasan kedalaman terlalu kecil, DLS tidak complete.

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 Complexitnya menjadi tinggi. Perhatikan diagram berikut .

Pencarian dilakukan secara iteratif (menggunakan Pencarian dilakukan secara iteratif (menggunakan

penelusuran DFS) dimulai dari batasan level 1. Jika penelusuran DFS) dimulai dari batasan level 1. Jika belum ditemukan solusi, maka dilakukan iterasi ke-2 belum ditemukan solusi, maka dilakukan iterasi ke-2 dengan batasan level 2. Demikian seterusnya dengan batasan level 2. Demikian seterusnya sampai ditemukan solusi. Jika solusi ditemukan sampai ditemukan solusi. Jika solusi ditemukan maka tidak diperlukan proses backtracking maka tidak diperlukan proses backtracking (penelusuran balik untuk mendapatkan jalur yang (penelusuran balik untuk mendapatkan jalur yang dinginkan) dinginkan)

Bi-Directional Search

Pada setiap iterasi, pencarian dilakukan dari dua arah: dari Pada setiap iterasi, pencarian dilakukan dari dua arah: dari node asal (start) dan dari node tujuan (goal). Ketika dua node asal (start) dan dari node tujuan (goal). Ketika dua arah pencarian membangkitkan titik yang sama, maka arah pencarian membangkitkan titik yang sama, maka solusi ditemukan dengan menggabungkan kedua jalur solusi ditemukan dengan menggabungkan kedua jalur yang bertemu. Ada beberapa masalah sebelum yang bertemu. Ada beberapa masalah sebelum memustuskan untuk menggunakan strategi Bi-directional memustuskan untuk menggunakan strategi Bi-directional Search, yaitu: Search, yaitu:

• Bagaimana kalau terdapat beberapa node tujuan yang • Bagaimana kalau terdapat beberapa node tujuan yang berbeda ? berbeda ?

• Terdapat perhitungan yang tidak efisien untuk selalu • Terdapat perhitungan yang tidak efisien untuk selalu

mengecek apakah node baruyang dibangkitkan sudah mengecek apakah node baruyang dibangkitkan sudah pernah dibangkitkan oleh pencarian dari arah yang pernah dibangkitkan oleh pencarian dari arah yang berlawanan. berlawanan.

• Bagaimana menentukan strategi pencarian untuk kedua • Bagaimana menentukan strategi pencarian untuk kedua arah tersebut? Misalnya dari arah sumber dan dari arah arah tersebut? Misalnya dari arah sumber dan dari arah tujuan digunakan BFS. tujuan digunakan BFS.

Penelusuran Bi-directional Search.

Criterion Breadth

Bidirectioa First

Deepening l ( If Applica

table) Time

B^(d/2) Space

B^(d/2) Optimal

Yes Complete

Yes, if l ≥ d Yes

Yes

Keterangan:

b : faktor pencabangan (the branching factor) d : kedalaman solusi (the depth of solution)

m : kedalaman maksimum pohon pencarian (the maximum depth of the search

tree) l : batasan kedalaman (the depth limit)

Acting Humanly: The Turing test approach. Acting Humanly: The Turing test approach. Alan Turing (1950) merancang suatu ujian bagi Alan Turing (1950) merancang suatu ujian bagi

komputer berintelijensia apakah mampu mengelabuhi komputer berintelijensia apakah mampu mengelabuhi seorang manusia yang menginterogasi komputer seorang manusia yang menginterogasi komputer tersebut melalui teletype. tersebut melalui teletype.

Jika interrogator tidak dapat membedakan apakah yang Jika interrogator tidak dapat membedakan apakah yang diinterogasi adalah manusia atau komputer, maka diinterogasi adalah manusia atau komputer, maka komputer berintelijensia tersebut lolos dari Turing test. komputer berintelijensia tersebut lolos dari Turing test. Komputer tersebut perlu memiliki kemampuan: Natural Komputer tersebut perlu memiliki kemampuan: Natural Language Processing, Knowledge Representation, Language Processing, Knowledge Representation, Automated Reasoning, Machine Learning, Computer Automated Reasoning, Machine Learning, Computer Vision, Robotics. Vision, Robotics.

Turing Test sengaja menghindari interaksi fisik antara Turing Test sengaja menghindari interaksi fisik antara interrogator dan komputer karena simulasi fisik manusia interrogator dan komputer karena simulasi fisik manusia tidak memerlukan intelijensia. tidak memerlukan intelijensia.

Thinking Rationally: Thinking Rationally:

The laws of thought approach. The laws of thought approach. Dua masalah dalam pendekatan ini yaitu Dua masalah dalam pendekatan ini yaitu

1. Tidak mudah untuk membuat pengetahuan 1. Tidak mudah untuk membuat pengetahuan informal dan menyatakannya dalam formal term informal dan menyatakannya dalam formal term

yang diperlukan oleh notasi logika, khususnya yang diperlukan oleh notasi logika, khususnya ketika pengetahuan tersebut memiliki kepastian ketika pengetahuan tersebut memiliki kepastian kurang dari 100%. kurang dari 100%.

2. Terdapat perbedaan besar antara dapat 2. Terdapat perbedaan besar antara dapat memecahkan masalah “dalam prinsip” dan dan memecahkan masalah “dalam prinsip” dan dan juga memecahkannya dalam praktek. juga memecahkannya dalam praktek.

Acting Rationally: The rational agent approach. Acting Rationally: The rational agent approach. Membuat inferensi merupakan bagian rational Membuat inferensi merupakan bagian rational

agent, dimana aksinya secara rasional dengan agent, dimana aksinya secara rasional dengan menalar secara logika untuk mendapatkan menalar secara logika untuk mendapatkan kesimpulan bahwa aksi yang diberikan akan kesimpulan bahwa aksi yang diberikan akan mencapai tujuan, dan kemudian melakukan aksi mencapai tujuan, dan kemudian melakukan aksi atas kesimpulan tersebut. atas kesimpulan tersebut.

Pendekatan rational agent akan membatasi Pendekatan rational agent akan membatasi bahasan pada teknik-teknik rasional pada bahasan pada teknik-teknik rasional pada intelijensia buatan. Sedangkan aksi dan pikiran intelijensia buatan. Sedangkan aksi dan pikiran manusia yang diluar rasio (refleks dan intuitif) belum manusia yang diluar rasio (refleks dan intuitif) belum dapat ditirukan oleh komputer. dapat ditirukan oleh komputer.

Pencarian Heuristik

1. 1. Generate-and-Test Generate-and-Test

2. 2. Hill Climbing Hill Climbing

3. 3. Simulated Annealing Simulated Annealing

4. 4. Best-First Search Best-First Search

5. 5. Memory Bounded Search Memory Bounded Search

6. 6. Variasi A* Variasi A*

7. 7. Problem Reduction Problem Reduction

Generate-and-Test

• Generate-and-Test adalah metode yang paling seder- • Generate-and-Test adalah metode yang paling seder- hana dalam pencarian heuristic. Jika pembangkitan hana dalam pencarian heuristic. Jika pembangkitan possible solution dikerjakan secara sistematis, maka possible solution dikerjakan secara sistematis, maka prosedur akan mencari solusinya, jika ada. Tetapi jika prosedur akan mencari solusinya, jika ada. Tetapi jika ruang masalahnya sangat luas, mungkin memerlukan ruang masalahnya sangat luas, mungkin memerlukan waktu yang sangat lama. waktu yang sangat lama.

• Algoritma Generate-and-Test adalah prosedur DFS • Algoritma Generate-and-Test adalah prosedur DFS karena solusi harus dibangkitkan secara lengkap se- karena solusi harus dibangkitkan secara lengkap se- belum dilakukan test. belum dilakukan test.

• Algoritma ini berbentuk sistematis, pencarian sederhana • Algoritma ini berbentuk sistematis, pencarian sederhana yang mendalam dari ruang permasalahan. yang mendalam dari ruang permasalahan.

• Generate & test juga dilakukan dengan pembangkitan • Generate & test juga dilakukan dengan pembangkitan

solusi secara acak, tetapi tidak ada jaminan solusinya solusi secara acak, tetapi tidak ada jaminan solusinya akan ditemukan. akan ditemukan.

Algorithm: Generate-and-Test

1. Generate a possible solution. For some pro-blems, 1. Generate a possible solution. For some pro-blems,

this means generating a particular point in the this means generating a particular point in the problem space. For others, it means generating a problem space. For others, it means generating a path from a start state. path from a start state.

2. Test to see if this is actually a solution by 2. Test to see if this is actually a solution by comparing the chosen point or endpoint of the comparing the chosen point or endpoint of the chosen path to the set of acceptable goal states chosen path to the set of acceptable goal states

3. If a solution has been found, quit. Otherwise, return 3. If a solution has been found, quit. Otherwise, return to step 1. to step 1.

Contoh kasus:

Teka-teki yang terdiri dari empat kubus segi enam, dengan Teka-teki yang terdiri dari empat kubus segi enam, dengan

masing-masing sisi dari setiap kubus dicat dengan 4 warna. masing-masing sisi dari setiap kubus dicat dengan 4 warna. Solusi dari teka-teki terdiri dari susunan kubus dalam Solusi dari teka-teki terdiri dari susunan kubus dalam

beberapa baris yang semuanya empat sisi dari satu blok baris beberapa baris yang semuanya empat sisi dari satu blok baris yang menunjukkan nasing-masing warna. yang menunjukkan nasing-masing warna.

Masalah ini dapat diselesaikan dengan manusia dalam Masalah ini dapat diselesaikan dengan manusia dalam beberapa menit secara sistematis dan lengkap dengan mencoba beberapa menit secara sistematis dan lengkap dengan mencoba semua kemungkinan. Ini bisa diselesaikan dengan lebih cepat semua kemungkinan. Ini bisa diselesaikan dengan lebih cepat menggunakan prosedur generate & test. menggunakan prosedur generate & test.

Pandangan sekilas pada empat blok yang tampak bahwa Pandangan sekilas pada empat blok yang tampak bahwa masih ada lagi, katakanlah bagian merah dari warna-warna lain masih ada lagi, katakanlah bagian merah dari warna-warna lain yang ada. Sehingga ketika menempatkan blok dengan beberapa yang ada. Sehingga ketika menempatkan blok dengan beberapa bagian merah, ini akan menjadi ide yang baik untuk digunakan bagian merah, ini akan menjadi ide yang baik untuk digunakan jika sebagian darinya sebisa mungkin di bagian luar. Sebagian jika sebagian darinya sebisa mungkin di bagian luar. Sebagian yang lain sebisa mungkin harus ditempatkan pada blok yang lain sebisa mungkin harus ditempatkan pada blok berikutnya. berikutnya.

Menggunakan aturan ini, banyak konfigurasi diperlukan Menggunakan aturan ini, banyak konfigurasi diperlukan tanpa diexplore dan sebuah solusi dapat ditemukan lebih cepat. tanpa diexplore dan sebuah solusi dapat ditemukan lebih cepat.

Hill Climbing (HC)

HC adalah feedback prosedur test untuk membantu HC adalah feedback prosedur test untuk membantu pembangkit menentukan yang lang-sung dipindahkan pembangkit menentukan yang lang-sung dipindahkan dalam ruang pencarian, dalam ruang pencarian, Sedangkan Generate & test Sedangkan Generate & test bahwa respon fungsi pengujian hanya ya atau tidak. Tapi bahwa respon fungsi pengujian hanya ya atau tidak. Tapi jika pengujian ditambahkan dengan aturan fungsi-fungsi jika pengujian ditambahkan dengan aturan fungsi-fungsi yang menyediakan estimasi bagaimana mendekati state yang menyediakan estimasi bagaimana mendekati state yang diberikan ke state tujuan yang diberikan ke state tujuan

HC digunakan jika terdapat fungsi heuristic untuk HC digunakan jika terdapat fungsi heuristic untuk mengevaluasi state. mengevaluasi state.

Contoh : Contoh : Anda di sebuah kota yang tidak dikenal, tanpa peta dan Anda di sebuah kota yang tidak dikenal, tanpa peta dan

anda ingin menuju ke pusat kota. Cara sederhana adalah anda ingin menuju ke pusat kota. Cara sederhana adalah gedung yang tinggi. Fungsi heuristics-nya adalah jarak gedung yang tinggi. Fungsi heuristics-nya adalah jarak lokasi sekarang dengan gedung yang tinggi dan state yang lokasi sekarang dengan gedung yang tinggi dan state yang diperlukan adalah jarak yang terpendek. diperlukan adalah jarak yang terpendek.

Elemen-elemen HC

• Simple HC • Steepest-Ascent HC

Algorithm: Simple HC

1. Evaluate the initial state. If it is also a goal state, then 1. Evaluate the initial state. If it is also a goal state, then return it and quit. Otherwise, continue with the initial return it and quit. Otherwise, continue with the initial state as the current state state as the current state

2. Loop until a solution is found or until there are no new 2. Loop until a solution is found or until there are no new

operators left to be applied in the current state : operators left to be applied in the current state :

a. Select an operator that has not yet been applied to a. Select an operator that has not yet been applied to the current state and apply it to produce a new state the current state and apply it to produce a new state b). Evaluate the new state : b). Evaluate the new state :

(i) If it is a goal state, then return it and quit. (i) If it is a goal state, then return it and quit. (ii) If it is not a goal state but it is better than the (ii) If it is not a goal state but it is better than the

current state, then make it the current state. current state, then make it the current state. (iii) If it is not better than the current state, then (iii) If it is not better than the current state, then

continue in the loop continue in the loop

Pencarian jalur menggunakan Simple Hill Climbing

f = harga perkiraan menuju Goal.

Pencarian jalur menggunakan Steepest-Ascent Hill Climbing

Solusi Optimal di level 2

Menemukan solusi di level berikutnya

Pada gambar di atas terjadi ambiguitas dimana Pada gambar di atas terjadi ambiguitas dimana fungsi heuristik node E dan node F adalah sama. fungsi heuristik node E dan node F adalah sama.

Misalkan dipilih F dan ternyata menemu-kan solusi Misalkan dipilih F dan ternyata menemu-kan solusi di level 8. Padahal terdapat solusi lain yang lebih di level 8. Padahal terdapat solusi lain yang lebih optimal di level 2. optimal di level 2.

Hal ini dikatakan bahwa Steepest-Ascent Hill Hal ini dikatakan bahwa Steepest-Ascent Hill Climbing terjebak pada solusi lokal (local minimal) Climbing terjebak pada solusi lokal (local minimal)

Algoritma Steepest-Ascent HC

1. Evaluate initial state. If it is also a goal state, then return 1. Evaluate initial state. If it is also a goal state, then return it and quit. Otherwise, continue with the initial state as it and quit. Otherwise, continue with the initial state as the current state. the current state.

2. Loop until a solution is found or until a complete iteration 2. Loop until a solution is found or until a complete iteration

produces no change to current state: produces no change to current state: a). Let SUCC be a state such that any possible succes- a). Let SUCC be a state such that any possible succes-

sor of the current state will be better than SUCC. sor of the current state will be better than SUCC. b). For each operator that applies to the current state do b). For each operator that applies to the current state do

(i) Apply the operator and generate a new state. (i) Apply the operator and generate a new state. (ii) Evaluate the new state. If it is a goal state, return it (ii) Evaluate the new state. If it is a goal state, return it

and quit. If not, compare it to SUCC. If it is better, and quit. If not, compare it to SUCC. If it is better, then set SUCC to this state. If it is not better, leave then set SUCC to this state. If it is not better, leave SUCC alone. SUCC alone.

c). If the SUCC is better than current state, then set cur- c). If the SUCC is better than current state, then set cur- rent state to SUCC. rent state to SUCC.

Simulated Annealing (SA)

1. SA memanfaatkan analogi antara cara pendinginan 1. SA memanfaatkan analogi antara cara pendinginan

dan pembekuan metal menjadi sebuah struktur dan pembekuan metal menjadi sebuah struktur crystal dengan energi yang minimal (proses crystal dengan energi yang minimal (proses penguatan) dan pencarian untuk state tujuan penguatan) dan pencarian untuk state tujuan minimal dalam proses pencarian. minimal dalam proses pencarian.

2. Tidak seperti pendekatan HC (dengan jalan 2. Tidak seperti pendekatan HC (dengan jalan mengikuti sebuah turunan tetap dalam mengikuti sebuah turunan tetap dalam meminimisasi masalah), SA lebih banyak menjadi meminimisasi masalah), SA lebih banyak menjadi jebakan pada local minimal. jebakan pada local minimal.

3. Simulated annealing berusaha keluar dari jebakan 3. Simulated annealing berusaha keluar dari jebakan

minimum local, lihat gambar berikut minimum local, lihat gambar berikut

Simulated Annealing berusaha keluar dari jebakan minimum local

Random Search pada SA

1. Algoritma SA menggunakan pencarian acak yang 1. Algoritma SA menggunakan pencarian acak yang tidak hanya menerima perubahan yang mengurangi tidak hanya menerima perubahan yang mengurangi fungsi energi (sebagai harapan : fungsi ini mungkin fungsi energi (sebagai harapan : fungsi ini mungkin memberikan resiko perjalanan antara dua kota), memberikan resiko perjalanan antara dua kota), tapi juga beberapa perubahan yang menambah tapi juga beberapa perubahan yang menambah fungsi nilai, kemudian SA ijin untuk melompat fungsi nilai, kemudian SA ijin untuk melompat keluar dari local minimal. keluar dari local minimal.

2. Probabilitas dengan SA yang akan menerima 2. Probabilitas dengan SA yang akan menerima sebuah penambahan dalam energi system DE sebuah penambahan dalam energi system DE adalah dinyatakan sebagai berikut : adalah dinyatakan sebagai berikut :

3. Kenapa fungsi ini? Mengadopsi dari fisika, dimana fungsi 3. Kenapa fungsi ini? Mengadopsi dari fisika, dimana fungsi ini merepresentasikan distribusi Boltzman dari energi ini merepresentasikan distribusi Boltzman dari energi dalam system termodinamik. Sehingga didapat Gambar dalam system termodinamik. Sehingga didapat Gambar di atas Simulated Annealing berusaha keluar dari jeba- di atas Simulated Annealing berusaha keluar dari jeba- kan minimum local. persamaan probabilitas dari level kan minimum local. persamaan probabilitas dari level energi yang diberikan dalam sistem pada temperatur T energi yang diberikan dalam sistem pada temperatur T

4. Dugaan dari temperatur sistem adalah intrinsic pada 4. Dugaan dari temperatur sistem adalah intrinsic pada proses SA. Penurunan temperatur yang lambat dari awal proses SA. Penurunan temperatur yang lambat dari awal sistem acak, kita mendorong elemen-elemen dari sistem sistem acak, kita mendorong elemen-elemen dari sistem disimpulkan dengan sebuah pesan, paling sedikit disimpulkan dengan sebuah pesan, paling sedikit susunan energi. Dalam mencari proses terminal, sebuah susunan energi. Dalam mencari proses terminal, sebuah pendinginan yang lambat dapat kemudian menuju pendinginan yang lambat dapat kemudian menuju sebuah state opsional sebuah state opsional

Algoritma untuk mensimulasikan penguatan sedikit Algoritma untuk mensimulasikan penguatan sedikit berbeda dengan prosedur simple HC yaitu : berbeda dengan prosedur simple HC yaitu :

1. Jadwal penguatan harus di-maintain 1. Jadwal penguatan harus di-maintain

2. Pindah ke state yang lebih jelek mungkin 2. Pindah ke state yang lebih jelek mungkin diterima diterima

3. Ini adalah ide yang baik untuk maintain, untuk 3. Ini adalah ide yang baik untuk maintain, untuk menambahkan current state, state terbaik menambahkan current state, state terbaik ditemukan terlalu jauh. Maka, jika state tujuan ditemukan terlalu jauh. Maka, jika state tujuan lebik jelek daripada state sebelumnya (karena lebik jelek daripada state sebelumnya (karena kegagalan dalam penerimaan pemindahan kegagalan dalam penerimaan pemindahan worse state), state sebelumnya masih tersedia. worse state), state sebelumnya masih tersedia.

Algoritma: Simulated Annealing

1. Evaluate initial state. If it is also a goal state, then 1. Evaluate initial state. If it is also a goal state, then return it and quit. Otherwise, continue with the initial return it and quit. Otherwise, continue with the initial state as the current state. state as the current state.

2. Initialize BEST-SO-FAR to the current state. 2. Initialize BEST-SO-FAR to the current state.

3. Initialize T according to the annealing schedule. 3. Initialize T according to the annealing schedule.

4. Loop until a solution is found or until there are no 4. Loop until a solution is found or until there are no new operators left to be applied in the current state: new operators left to be applied in the current state:

a) Select an operator that has not yet been a) Select an operator that has not yet been applied to the current state and apply it to applied to the current state and apply it to produce a new state. produce a new state.

b) Evaluate the new state. Compute b) Evaluate the new state. Compute

ΔE = (value of current) – (value of new state) ΔE = (value of current) – (value of new state)

– If the new state is a goal, then return it and quit. – If the new state is a goal, then return it and quit. – If it is not a goal state but is better than the current – If it is not a goal state but is better than the current

state, then make it the current state. Also set BEST- state, then make it the current state. Also set BEST- SO-FAR to this new state. SO-FAR to this new state.

– If it is not better than the current state, then make it – If it is not better than the current state, then make it the current state with probability p’ as defined above. the current state with probability p’ as defined above. This step is usually implemented by invoking a This step is usually implemented by invoking a random number generator to produce a number in random number generator to produce a number in the range [0,1]. the range [0,1].

– If that number is less than p’, then the move is – If that number is less than p’, then the move is accepted. Otherwise do nothing. accepted. Otherwise do nothing.

5. Return BEST-SO-FAR as the answer.

Best-First Search

Metode yang membangkitkan suksesor dengan Metode yang membangkitkan suksesor dengan

mempertimbangkan harga (didapat dari fungsi heuristik mempertimbangkan harga (didapat dari fungsi heuristik tertentu) dari setiap node, bukan dari aturan baku seperti tertentu) dari setiap node, bukan dari aturan baku seperti DFS maupun BFS. Diagram berikut ini mengilustrasikan DFS maupun BFS. Diagram berikut ini mengilustrasikan langkah-langkah yang dilakukan oleh algoritma Best langkah-langkah yang dilakukan oleh algoritma Best First Search. First Search.

Langkah 1 : dibangkitkan node A, Kemudian semua Langkah 1 : dibangkitkan node A, Kemudian semua suksesor A dibangkitan, dan dicari harga paling minimal. suksesor A dibangkitan, dan dicari harga paling minimal.

Langkah 2 : node D terpilih karena harganya paling rendah, Langkah 2 : node D terpilih karena harganya paling rendah, Langkah 3 : semua suksesor D dibangkitkan, kemudian Langkah 3 : semua suksesor D dibangkitkan, kemudian

harganya akan dibandingkan dengan harga node B dan harganya akan dibandingkan dengan harga node B dan

C. Ternyata harga node B paling kecil dibandingkan C. Ternyata harga node B paling kecil dibandingkan harga node C, E, dan F. Sehingga B terpilih dan selan- harga node C, E, dan F. Sehingga B terpilih dan selan- jutnya akan dibangkitkab semua suksesor B. Demikian jutnya akan dibangkitkab semua suksesor B. Demikian seterusnya sampai ditemukan nodeTujuan seterusnya sampai ditemukan nodeTujuan

Langkah-langkah yang dilakukan oleh algoritma Best First Search

Algoritma Best-Fisrt Search:

1. Start with OPEN containing just the initial state. 1. Start with OPEN containing just the initial state.

2. Until a goal is found or there are no nodes left on OPEN 2. Until a goal is found or there are no nodes left on OPEN

do : do :

a) a) Pick the best node on OPEN. Pick the best node on OPEN.

b) b) Generate its successors. Generate its successors.

c) c) For each successor do: For each successor do:

i. If it has not been generated, evaluate it, add it to i. If it has not been generated, evaluate it, add it to OPEN, and record its parent. OPEN, and record its parent.

ii. If it has been generated, change the parent if this ii. If it has been generated, change the parent if this new path is better than the previous one. In that new path is better than the previous one. In that case, update the cost of getting to this node and to case, update the cost of getting to this node and to any successors that this node may already have. any successors that this node may already have.

Greedy Search

• Merupakan Best First Search yang hanya • Merupakan Best First Search yang hanya mempertimbangkan harga perkiraan (estimated mempertimbangkan harga perkiraan (estimated cost). cost).

• Sedangkan harga sesungguhnya tidak digunakan. • Sedangkan harga sesungguhnya tidak digunakan. Sehingga solusi yang dihasil-kan tidak optimal. Sehingga solusi yang dihasil-kan tidak optimal.

• Perhatikan contoh kasus di bawah ini • Perhatikan contoh kasus di bawah ini

Pencarian jalur daerah direpresen-tasikan dalam graph.

Node menyatakan kota dan busur menya-takan jarak antar kota (harga

realnya) dan h’(n) adalah harga perkiraan dari node n menuju node tujuan (G)

Dengan h’(n) = fungsi heuristik (jarak garis lurus dari node n menuju G).

Pada kasus di atas, jalur yang terpilih adalah: I-C-D-G = 140 + 160 + 200 = 500. Padahal jalur terbaik adalah: I-A-B-G = 75 + 85 + 300 = 460

A Bintang (A*)

• Merupakan algoritma Best First Search yang • Merupakan algoritma Best First Search yang menggabungkan UCSearch dan Greedy Search. menggabungkan UCSearch dan Greedy Search.

• Harga sesungguhnya ditambah dengan harga perkiraan • Harga sesungguhnya ditambah dengan harga perkiraan maka f’(n) = g(n) + h’(n). maka f’(n) = g(n) + h’(n).

• Dengan penggunaan f’(n), maka A* adalah Complete • Dengan penggunaan f’(n), maka A* adalah Complete dan Optimal. A* pada gambar berikut dihasilkan jalur dan Optimal. A* pada gambar berikut dihasilkan jalur yang lebih optimal, yakni: I-A-B-G dengan jarak 460. yang lebih optimal, yakni: I-A-B-G dengan jarak 460.

• Menggunakan dua senarai, yaitu: OPEN dan CLOSE. • Menggunakan dua senarai, yaitu: OPEN dan CLOSE. • Saat A Best Node, maka dibangkitkan B dan G, karena • Saat A Best Node, maka dibangkitkan B dan G, karena

B berada di CLOSE maka dicek apakah parent dari B B berada di CLOSE maka dicek apakah parent dari B harus diganti atau tidak. Karena g(B) melalui A (10 + 10 harus diganti atau tidak. Karena g(B) melalui A (10 + 10 = 20) lebih kecil dari g(B) melalui I (25), maka parent B = 20) lebih kecil dari g(B) melalui I (25), maka parent B harus diganti. Jadi f’(B) yang tadinya 85 menjadi 80. harus diganti. Jadi f’(B) yang tadinya 85 menjadi 80. Kemudian propagasi ke semua suksesor B, sehingga Kemudian propagasi ke semua suksesor B, sehingga node E yang semula g(E)= 35 menjadi 30 dan f’(E) yang node E yang semula g(E)= 35 menjadi 30 dan f’(E) yang semula 105 menjadi 100, dan node J yang semula g(J) semula 105 menjadi 100, dan node J yang semula g(J) =75 menjadi 70 dan f’(J) yang semula 95 menjadi 90 =75 menjadi 70 dan f’(J) yang semula 95 menjadi 90

Dengan h’(n) = fungsi heuristik (Jarak garis lurus dari node n menuju node G) adalah sebagai berikut : Pencarian jalur suatu daerah yang direpresentasi dalam graph

Node menyatakan kota dan busur menyatakan jarak antar kota (harga sesungguhnya). h’(n) adalah harga perkiraan dari node n menuju node tujuan (G)

Algoritma A*:

1. 1. OPEN = node asal CLOSE array kosong g = 0 f’ = h’ OPEN = node asal CLOSE array kosong g = 0 f’ = h’

2. 2. Ulangi sampai node tujuan ditemukan If OPEN kosong Ulangi sampai node tujuan ditemukan If OPEN kosong then Gagal Else BestNode = node yang ada di OPEN then Gagal Else BestNode = node yang ada di OPEN dengan f’ minimal Pindahkan node terbaik tersebut dengan f’ minimal Pindahkan node terbaik tersebut dari OPEN ke CLOSE dari OPEN ke CLOSE

If BestNode = goal then Sukses If BestNode = goal then Sukses Else Bangkitkan semua suksesor BestNode Else Bangkitkan semua suksesor BestNode tapi jangan buat pointer Untuk setiap tapi jangan buat pointer Untuk setiap suksesor kerjakan: Hitung g(suksesor) = suksesor kerjakan: Hitung g(suksesor) = g(BestNode) + actual cost(dari BestNode g(BestNode) + actual cost(dari BestNode ke suksesor) ke suksesor)

{Periksa suksesor} {Periksa suksesor}

If suksesor ada di OPEN then {sudah If suksesor ada di OPEN then {sudah pernah digenerate tapi belum diproses} pernah digenerate tapi belum diproses} OLD = isi OPEN tersebut Tambahkan OLD = isi OPEN tersebut Tambahkan OLD sebagai suksesor BestNode OLD sebagai suksesor BestNode Buat pointer dari OLD ke BestNode Buat pointer dari OLD ke BestNode Bandingkan nilai g(OLD) dgn g(isi OPEN) Bandingkan nilai g(OLD) dgn g(isi OPEN) If g(OLD) lebih baik then If g(OLD) lebih baik then

Ubah parent isi OPEN ke BestNode Ubah parent isi OPEN ke BestNode Ubah nilai g dan f’ pada isi OPEN Ubah nilai g dan f’ pada isi OPEN

End End

Else If suksesor ada di CLOSE then {sudah pernah Else If suksesor ada di CLOSE then {sudah pernah diproses} diproses}

OLD = isi CLOSE OLD = isi CLOSE Tambahkan OLD sebagai suksesor BestNode Tambahkan OLD sebagai suksesor BestNode

Bandingkan nilai g(OLD) dengan g(isi CLOSE) Bandingkan nilai g(OLD) dengan g(isi CLOSE) If g(OLD) lebih baik then Ubah parent isi CLOSE ke If g(OLD) lebih baik then Ubah parent isi CLOSE ke BestNode Ubah nilai g dan f’ pada isi CLOSE BestNode Ubah nilai g dan f’ pada isi CLOSE Propagasi semua suksesor OLD dengan penelusuran Propagasi semua suksesor OLD dengan penelusuran

DFS sbb: DFS sbb: Ulangi sampai node suksesor tidak ada di OPEN atau Ulangi sampai node suksesor tidak ada di OPEN atau

node tidak node tidak punya suksesor punya suksesor If suksesor ada di OPEN then Propagasi diteruskan If suksesor ada di OPEN then Propagasi diteruskan Else If nilai g via suksesor lebih baik then Else If nilai g via suksesor lebih baik then

Propagasi diteruskan Else Propagasi dihentikan Propagasi diteruskan Else Propagasi dihentikan End End End End End End

Else {suksesor tidak ada di OPEN maupun CLOSE} Else {suksesor tidak ada di OPEN maupun CLOSE}

Masukkan suksesor ke OPEN Tambahkan Masukkan suksesor ke OPEN Tambahkan suksesor tersebut sebagai suksesor BestNode suksesor tersebut sebagai suksesor BestNode

Hitung f’ = g(suksesor) + h’(suksesor) Hitung f’ = g(suksesor) + h’(suksesor) End End End End

End End End End

Memory Bounded Search

• • Untuk masalah tertentu, dimana memory Untuk masalah tertentu, dimana memory komputer (RAM) terbatas, algoritma A* tidak komputer (RAM) terbatas, algoritma A* tidak mampu menyelesaikannya. mampu menyelesaikannya.

Terdapat dua algoritma modifikasi A*, untuk mengatasi Terdapat dua algoritma modifikasi A*, untuk mengatasi masalah memory, yaitu: masalah memory, yaitu:

1. 1. Iterative Deepening A* (IDA*) Iterative Deepening A* (IDA*)

2. 2. SM A* : Simplified Memory Bounded A*. SM A* : Simplified Memory Bounded A*.

• Iterative Deepening Depth-First Search • Iterative Deepening Depth-First Search menggunakan batasan level (kedalaman) dalam menggunakan batasan level (kedalaman) dalam setiap iterasi pencariannya. Di sini ide tersebut setiap iterasi pencariannya. Di sini ide tersebut diterapkan pada algoritma A* dengan membatasi diterapkan pada algoritma A* dengan membatasi fungsi heuristiknya. fungsi heuristiknya.

• Proses pencarian pada setiap iterasi akan • Proses pencarian pada setiap iterasi akan mengembalikan nilai f-limit yang baru yang akan mengembalikan nilai f-limit yang baru yang akan digunakan sebagai batasan pencarian untuk iterasi digunakan sebagai batasan pencarian untuk iterasi berikutnya. Sama seperti A*, IDA* adalah complete berikutnya. Sama seperti A*, IDA* adalah complete dan optimal dan optimal

Algoritma IDA*

function IDA*(problem) returns a solution sequence function IDA*(problem) returns a solution sequence inputs: problem, a problem inputs: problem, a problem local variables: f-limit, the current f-Cost limit local variables: f-limit, the current f-Cost limit root, a node root  MAKE-NODE(INITIAL- root, a node root  MAKE-NODE(INITIAL-

STATE[problem]) f-limit  f-Cost(root) STATE[problem]) f-limit  f-Cost(root)

loop do loop do

solution, f-limit  DFS-CONTOUR(root,f-limit) solution, f-limit  DFS-CONTOUR(root,f-limit) if solution is non-null then return solution if solution is non-null then return solution

if f-limit is INFINITE then return failure if f-limit is INFINITE then return failure

end end

inputs: node, a node f-limit, the current f-Cost limit inputs: node, a node f-limit, the current f-Cost limit local variables: next-f, the f-Cost limit for the next local variables: next-f, the f-Cost limit for the next

contour, initially INFINITE contour, initially INFINITE if f-Cost[node] > f-limit then return null, f-Cost[node] if f-Cost[node] > f-limit then return null, f-Cost[node]

if GOAL-TEST[problem](STATE[node]) then return if GOAL-TEST[problem](STATE[node]) then return

node,f-limit node,f-limit

for each node s in SUCCESSOR(node) do for each node s in SUCCESSOR(node) do

solution,new-f  DFS-CONTOUR(s,f-limit) solution,new-f  DFS-CONTOUR(s,f-limit) if solution is non-null then return solution,f-limit if solution is non-null then return solution,f-limit

next-f  MIN(next-f,new-f) next-f  MIN(next-f,new-f)

end end

return null, next-f return null, next-f

Pencarian jalur dalam suatu graph menggunakan algoritma SMA*

Algoritma SMA*

Variasi A*

Berhubungan dengan bi-directional search, maka dapat dilakukan sedikit variasi dari algoritma A*.

Kita akan membahas dua variasi algoritma A* yakni : - Bi-directional A* dan - Modified Bi-directional A*

Bi-directional A*

• Ide dasarnya adalah melakukan pencarian • Ide dasarnya adalah melakukan pencarian menggunakan A* dari dua arah yakni menggunakan A* dari dua arah yakni

- dari arah node asal dan - dari arah node asal dan - dari arah node tujuan - dari arah node tujuan

Pencarian dihentikan jika BestNode dari Pencarian dihentikan jika BestNode dari • arah node asal telah berada dalam senarai CLOSE • arah node asal telah berada dalam senarai CLOSE

dari arah node tujuan. dari arah node tujuan. • Kemudian dilakukan pengecekan apakah arus • Kemudian dilakukan pengecekan apakah arus

meng-ganti parentnya BestNode tersebut dari arah meng-ganti parentnya BestNode tersebut dari arah node tujuan node tujuan

• Sebaliknya pencarian dihentikan jika BestNode dari • Sebaliknya pencarian dihentikan jika BestNode dari arah node tujuan telah berada dalam senarai arah node tujuan telah berada dalam senarai CLOSE dari arah node asal CLOSE dari arah node asal

Terminologi:

Graph berarah dilambangkan G = (V,E) Graph berarah dilambangkan G = (V,E)

V : himpunan node-node dalam graph V : himpunan node-node dalam graph (Vertex). (Vertex).

E : himpunan sisi-sisi yang menghubungkan E : himpunan sisi-sisi yang menghubungkan node-node dalam V. node-node dalam V. e(u,v) : sisi-sisi dalam graph E e(u,v) : sisi-sisi dalam graph E l(u,v) : panjang e(u,v) dalam E. l(u,v) : panjang e(u,v) dalam E. ps(u) : jarak antara node s dengan node u ps(u) : jarak antara node s dengan node u

(nilai potensial node u terhadap node s). (nilai potensial node u terhadap node s).

r(s,d) : rute dari s (source) ke d (destination) r(s,d) : rute dari s (source) ke d (destination)

Fungsi heuristic pada A* dapat dituliskan dalam Fungsi heuristic pada A* dapat dituliskan dalam bentuk lain: bentuk lain:

f’ = l(s,u) + l(u,v) + hs(v) f’ = l(s,u) + l(u,v) + hs(v)

dimana: dimana:

g = l(s,u) + l(u,v) g = l(s,u) + l(u,v) h’ = hs(v) h’ = hs(v)

Dengan hs(v) adalah estimasi jarak dari node v ke Dengan hs(v) adalah estimasi jarak dari node v ke node d node d

Algoritma Bi-directional A*

Modified Bi-directional A*

• Berbeda dengan algoritma Bi-directional A*, • Algoritma Modified Bi-directional A*

menggunakan fungsi heuristik sebagai berikut :

Algoritmanya sama dengan algoritma bi-directional A* dengan perubahan pada langkah (2) dan (4) :

Problem Reduction

AND-OR Graphs

• And-Or Graph (atau tree), untuk memperlihatkan solusi • And-Or Graph (atau tree), untuk memperlihatkan solusi

permasala-han yang diselesaikan dengan mendekom- permasala-han yang diselesaikan dengan mendekom- posisi permasalahan menjadi set masalah yang lebih posisi permasalahan menjadi set masalah yang lebih kecil, dimana semuanya harus dapat diselesaikan. kecil, dimana semuanya harus dapat diselesaikan.

• Pereduksian membangkitkan arcs (busur) dikenal dgn • Pereduksian membangkitkan arcs (busur) dikenal dgn AND arcs. Satu busur AND menghasilkan beberapa AND arcs. Satu busur AND menghasilkan beberapa nomor simpul setelahnya. nomor simpul setelahnya.

• Pancaran menghasilkan solusi, hanya saja pada OR • Pancaran menghasilkan solusi, hanya saja pada OR graph, banyak pancaran akan muncul dari beberapa graph, banyak pancaran akan muncul dari beberapa node, yang mengindikasikan beberapa jalan solusi node, yang mengindikasikan beberapa jalan solusi

• Penemuan solusi AND-OR memerlukan algoritma se- • Penemuan solusi AND-OR memerlukan algoritma se- rupa dengan BFS tapi dengan AND lebih tepat. rupa dengan BFS tapi dengan AND lebih tepat.

• Menemukan bagian simpul awal graph untuk meng- • Menemukan bagian simpul awal graph untuk meng- himpun simpul-simpul yang menggambarkan state himpun simpul-simpul yang menggambarkan state solusi, mungkin diperlukan men-dapatkan lebih dari satu solusi, mungkin diperlukan men-dapatkan lebih dari satu solusi setiap pancaran AND solusi setiap pancaran AND

Constraint Satisfactions

Prosedur pencarian yang dioperasikan pada sekumpulan ruang batas. Initial state terdiri dari batas-batas yang diberikan dalam deskripsi masalah

Planning

Teknik planning digunakan untuk menyelesaikan Teknik planning digunakan untuk menyelesaikan

masalah-masalah yang dapat didekomposisi. masalah-masalah yang dapat didekomposisi. Perbedaan teknik planning dengan teknik Perbedaan teknik planning dengan teknik

Searching sebagai berikut : Searching sebagai berikut :

1. 1. Menyelesaikan Masalah dengan Plan Menyelesaikan Masalah dengan Plan

2. 2. Dunia Balok Dunia Balok

3. 3. Goal-Stack-Planning (GSP) Goal-Stack-Planning (GSP)

4. 4. Constraint Posting (CP) Constraint Posting (CP)

Menyelesaikan Masalah dengan Planning

• Planning berbeda dengan Search-Based Problem • Planning berbeda dengan Search-Based Problem

Solving dalam hal representasi : goals, states dan Solving dalam hal representasi : goals, states dan actions, juga berbeda dalam representasi pada actions, juga berbeda dalam representasi pada pembuatan urutan-urutan proses pembuatan urutan-urutan proses

• Action merupakan impelementasi planning yang • Action merupakan impelementasi planning yang berusaha untuk mengatasi kesulitan-kesulitan yang berusaha untuk mengatasi kesulitan-kesulitan yang dialami dalam Search-Based Problem Solving dialami dalam Search-Based Problem Solving

Defenisi Planning

Planning adalah suatu metode penyelesaian masalah Planning adalah suatu metode penyelesaian masalah

dengan cara memecah masalah ke dalam sub-sub dengan cara memecah masalah ke dalam sub-sub masalah yang lebih kecil, menyelesaikan sub-sub masalah yang lebih kecil, menyelesaikan sub-sub masalah satu per satu, kemudian menggabungkan masalah satu per satu, kemudian menggabungkan menjadi sebuah solusi lengkap dengan tetap menjadi sebuah solusi lengkap dengan tetap mengingat dan menangani interaksi yang ada antar mengingat dan menangani interaksi yang ada antar sub masalah sub masalah

Dunia Balok (Blocks-World) : merupakan pengujian Dunia Balok (Blocks-World) : merupakan pengujian keberfungsian plan yang dilakukan pada suatu keberfungsian plan yang dilakukan pada suatu domain. domain.

• Dunia Balok dinilai cukup layak, karena tingkat • Dunia Balok dinilai cukup layak, karena tingkat kompleksitas permasalahan yang mungkin timbul kompleksitas permasalahan yang mungkin timbul memenuhi kriteria dunia balok memenuhi kriteria dunia balok

• Dunia Balok mengenali initial-state dan goal-state • Dunia Balok mengenali initial-state dan goal-state

yang direpresentasikan oleh suatu komposisi dari yang direpresentasikan oleh suatu komposisi dari sejumlah balok dengan suatu set operator yang sejumlah balok dengan suatu set operator yang dapat diaplikasikan pada tangan robot, misalnya dapat diaplikasikan pada tangan robot, misalnya pada rangkaian pada rangkaian

Rencana Penyelesaian merupakan suatu Operator Rencana Penyelesaian merupakan suatu Operator yang dapat mengubah initial-state menjadi goal- yang dapat mengubah initial-state menjadi goal- state. (mis, pada rangkaian) state. (mis, pada rangkaian)

Perencanaan yang sudah pernah diuji pada Dunia Balok : Perencanaan yang sudah pernah diuji pada Dunia Balok :

1. Goal-Stack-Planning (GSP) 1. Goal-Stack-Planning (GSP)

2. Constraint-Posting (CP). 2. Constraint-Posting (CP).

Analisis GSP dan CP Analisis GSP dan CP

– Dari segi implementasi dan biaya komputasi, GSP lebih – Dari segi implementasi dan biaya komputasi, GSP lebih

unggul dibanding CP. Sedangkan segi efisiensi plan CP unggul dibanding CP. Sedangkan segi efisiensi plan CP lebih unggul dibanding GSP. Seluruh kemungkinan lebih unggul dibanding GSP. Seluruh kemungkinan permasalahan dapat timbul pada Dunia Balok, meskipun permasalahan dapat timbul pada Dunia Balok, meskipun GSP dan CP mampu menghasilkan rencana-rencana GSP dan CP mampu menghasilkan rencana-rencana penyelesaian, namun penyelesaian plans yang dihasilkan penyelesaian, namun penyelesaian plans yang dihasilkan umumnya tidak efisien umumnya tidak efisien

– Pada domain tertentu, pemecahan masalah yang – Pada domain tertentu, pemecahan masalah yang menggunakan komputer dengan cara mengerjakan bagian menggunakan komputer dengan cara mengerjakan bagian kecil dari masalah itu secara terpisah kemudian kecil dari masalah itu secara terpisah kemudian menggabungkan menjadi sebuah solusi lengkap menggabungkan menjadi sebuah solusi lengkap

– Jika hal tersebut tidak dilakukan maka jumlah kombinasi – Jika hal tersebut tidak dilakukan maka jumlah kombinasi

state dari komponen masalah menjadi terlalu besar untuk state dari komponen masalah menjadi terlalu besar untuk ditangani, dipandang dari segi waktu tersedia mengalami ditangani, dipandang dari segi waktu tersedia mengalami akan kesulitan akan kesulitan

Syarat dekomposisi

1. 1. Menghindari penghitungan ulang seluruh state Menghindari penghitungan ulang seluruh state

2. 2. Membagi masalah ke dalam beberapa sub Membagi masalah ke dalam beberapa sub masalah yang relatif lebih mudah untuk masalah yang relatif lebih mudah untuk diselesaikan diselesaikan

Syarat : Syarat : Penggunaan metode terfokus pada cara Penggunaan metode terfokus pada cara

mendekomposisi masalah ke dalam sub-sub mendekomposisi masalah ke dalam sub-sub masalah yang sesuai, mengingat dan menangani masalah yang sesuai, mengingat dan menangani interaksi antar sub masalah ketika proses interaksi antar sub masalah ketika proses penyelesaian masalah disebut Perencanaan. penyelesaian masalah disebut Perencanaan.

Pemecahan masalah umumnya:

• Modus Goal-Directed : pencarian solusi dilakukan dari goal-state s/d initial-state

• Runut-Balik-Terpandu-Kebergantungan (Dependency-

Directed-Backtracking) ketika menemukan jalan buntu.

Transisi satu state ke state lain :

• Memilih operator • Memilih operator • Mengaplikasikan operator • Mengaplikasikan operator • Mendeteksi ketika solusi telah tercapai • Mendeteksi ketika solusi telah tercapai • Mendeteksi jalan-jalan buntu • Mendeteksi jalan-jalan buntu • Mendeteksi, ketika solusi yang hampir benar telah • Mendeteksi, ketika solusi yang hampir benar telah

dicapai dan melakukan teknik khusus untuk membuat dicapai dan melakukan teknik khusus untuk membuat solusi tersebut menjadi benar solusi tersebut menjadi benar

Pemilihan operator :

1. Mengumpulkan kondisi pembeda goal-state dan current-state (current-state adalah suatu state yang menunjukkan kondisi saat ini).

2. Mengidentifikasi operator yang dapat mengurangi perbedaan tersebut.

Untuk menghindari pencatatan kondisi keseluruhan di setiap Untuk menghindari pencatatan kondisi keseluruhan di setiap titik persimpangan (node) dalam pencarian solusi, aplikasi titik persimpangan (node) dalam pencarian solusi, aplikasi operator dengan : operator dengan :

• PRECONDITION : predikat-predikat yang harus bernilai • PRECONDITION : predikat-predikat yang harus bernilai benar sebelum pengaplikasian operator benar sebelum pengaplikasian operator

• ADD : predikat-predikat yang bernilai benar setelah • ADD : predikat-predikat yang bernilai benar setelah pengaplikasian suatu operator. pengaplikasian suatu operator.

• DELETE : predikat-predikat yang bernilai salah setelah • DELETE : predikat-predikat yang bernilai salah setelah pengaplikasian suatu operator pengaplikasian suatu operator

Dunia Balok

• Memiliki sebuah permukaan datar tempat menyimpan

balok, umumnya disebut dengan meja. • Memiliki sejumlah balok kotak yang berukuran sama. • Memiliki sebuah tangan robot yang dapat

memanipulasi balok.

Untuk memudahkan pendefinisian kondisi balok pada suatu state digunakan predikat-predikat berikut :

ON(A,B) : Balok A menempel di atas balok B. ONTABLE(A) : Balok A berada di permukaan meja. CLEAR(A) : Tidak ada balok yang sedang menempel di atas balok A.

Sedangkan untuk tangan robot digunakan : Sedangkan untuk tangan robot digunakan : • HOLDING(A) : Tangan robot sedang memegang • HOLDING(A) : Tangan robot sedang memegang

balok A. balok A. • ARMEMPTY : Tangan robot tidak sedang • ARMEMPTY : Tangan robot tidak sedang

memegang balok. memegang balok.

Jadi kondisi ditinjau dari sudut pandang balok Jadi kondisi ditinjau dari sudut pandang balok

Definisi Kondisi Ditinjau dari Sudut Pandang Tangan Robot

Perhatikan contoh dua buah State.

OnTable(A)^On(B,A) OnTable(A)^Clear(A) ^ArmEmpty

Clear(B)^Holding(C)

Daftar Operator untuk Tangan Robot

Daftar Operator dan Kondisi Balok Terkait untuk Tangan

Goal-Stack-Planning (GSP)

• GSP gunakan stack untuk menampung kondisi • GSP gunakan stack untuk menampung kondisi (goal dan lainnya yang mungkin terjadi ketika (goal dan lainnya yang mungkin terjadi ketika pencarian solusi) juga tergantung pada basis data pencarian solusi) juga tergantung pada basis data yang menggambarkan current-state dan satu set yang menggambarkan current-state dan satu set operator dideskripsikan sebagai daftar predikat operator dideskripsikan sebagai daftar predikat PRECONDITION, ADD dan DELETE atau daftar- PRECONDITION, ADD dan DELETE atau daftar-

PAD PAD

On(B,A)^

On(C,A)^

OnTable(A)^ OnTable(A)^

OnTabel(C)^ On(B,D)^OnTable(D)

OnTable(D)

• Langkah awal menempatkan kondisi goal-state • Langkah awal menempatkan kondisi goal-state pada stack dan disimpan dalam slot stack. pada stack dan disimpan dalam slot stack.

Isi stack pada saat awal penyelesaian masalah Isi stack pada saat awal penyelesaian masalah dapat perlihatkan pada notasi Current -state diisi dapat perlihatkan pada notasi Current -state diisi dengan initialstate dengan initialstate

Contoh : Contoh : ON(C,A) ^ ON(B,D) ^ ONTABLE(A) ^ONTABLE(D) ON(C,A) ^ ON(B,D) ^ ONTABLE(A) ^ONTABLE(D)

• Langkah kedua mengacu pada current-state kondisi goal-state yang belum tercapai dimasukkan ke stack, masing-masing menempati sebuah slot. GSP tidak memiliki aturan khusus yang mengatur urutan pemasukan ke dalam stack dari kondisi yang belum tercapai Ada dua kombinasi yang mungkin terjadi. Kedua kombinasi tersebut diperlihatkan :

• OTAD : akronim ONTABLE(A) dan ONTABLE(D) • Langkah ketiga, slot terisi yang berada paling atas

pada stack akan diperiksa dan akan bergantung pada kondisi slot tersebut. Kondisi yang mungkin terjadi pada slot tersebut adalah sebagai berikut:

• Kondisi 1 : Jika slot berisi kondisi yang sudah • Kondisi 1 : Jika slot berisi kondisi yang sudah

memenuhi current-state, tetapi slot tidak terletak di memenuhi current-state, tetapi slot tidak terletak di dasar stack dan juga tidak terletak di atas slot yang dasar stack dan juga tidak terletak di atas slot yang berisi operator, maka isi slot akan di-pop dari stack berisi operator, maka isi slot akan di-pop dari stack dan pemeriksaan dilanjutkan pada slot berikutnya dan pemeriksaan dilanjutkan pada slot berikutnya

160

• Kondisi 2 : Jika slot berisi kondisi yang belum • Kondisi 2 : Jika slot berisi kondisi yang belum memenuhi current-state maka isi slot akan di-pop memenuhi current-state maka isi slot akan di-pop dari stack, lalu operator yang sesuai untuk dari stack, lalu operator yang sesuai untuk mencapai kondisi akan dimasukkan ke dalam stack. mencapai kondisi akan dimasukkan ke dalam stack. Setelah itu serang-kaian kondisi yang dibutuhkan Setelah itu serang-kaian kondisi yang dibutuhkan agar operator itu bisa diaplikasikan, dimasukkan ke agar operator itu bisa diaplikasikan, dimasukkan ke dalam sebuah slot stack. Selanjutnya, setiap kondisi dalam sebuah slot stack. Selanjutnya, setiap kondisi dari rangkaian kondisi yang dibutuhkan operator dari rangkaian kondisi yang dibutuhkan operator agar dapat diaplikasikan tersebut akan dimasukkan agar dapat diaplikasikan tersebut akan dimasukkan ke dalam sebuah slot secara terurut dimana kondisi ke dalam sebuah slot secara terurut dimana kondisi yang harus dicapai paling akhir dimasukkan yang harus dicapai paling akhir dimasukkan pertama kali. pertama kali.

• Kondisi 3 : Jika slot berisi kondisi atau rangkaian • Kondisi 3 : Jika slot berisi kondisi atau rangkaian

kondisi dan slot tersebut berada di atas slot yang berisi kondisi dan slot tersebut berada di atas slot yang berisi operator, maka isi slot teratas dari stack tersebut akan operator, maka isi slot teratas dari stack tersebut akan di-pop. Kemudian operator pada slot berikutnya akan di- di-pop. Kemudian operator pada slot berikutnya akan di- pop dan dimasukkan ke dalam antrian operator dalam pop dan dimasukkan ke dalam antrian operator dalam rencana penyelesaian dan current-state di-update rencana penyelesaian dan current-state di-update dengan mengaplikasikan operator tersebut pada current dengan mengaplikasikan operator tersebut pada current -state berdasarkan daftar-PAD. -state berdasarkan daftar-PAD.

• Kondisi 4 : Jika slot yang diperiksa adalah slot terdasar • Kondisi 4 : Jika slot yang diperiksa adalah slot terdasar maka akan diuji kesamaan antara current-state dan maka akan diuji kesamaan antara current-state dan goal-state. Jika sama (berarti goal-state telah tercapai) goal-state. Jika sama (berarti goal-state telah tercapai) maka isi slot akan dipop dan pencarian rencana maka isi slot akan dipop dan pencarian rencana penyelesaian dihentikan. Jika berbeda (goal-state belum penyelesaian dihentikan. Jika berbeda (goal-state belum tercapai) maka langkah ke dua diulangi. Jika kondisi tercapai) maka langkah ke dua diulangi. Jika kondisi yang terjadi bukan kondisi 4, setelah rangkaian tindakan yang terjadi bukan kondisi 4, setelah rangkaian tindakan yang bersesuaian dilakukan, langkah ketiga diulangi. yang bersesuaian dilakukan, langkah ketiga diulangi.

Perhatikan diagram berikut : • CLEAR(A) • CLEAR(A)

• HOLDING(C) • HOLDING(C) • CLEAR(A) ∧ • CLEAR(A) ∧ • HOLDING(C) • HOLDING(C) • STACK(C,A) • STACK(C,A) • ON(B,D) • ON(B,D) • ON(C A) ON(B D) • ON(C A) ON(B D)

Perhatikan diagram berikut :

ON(B,A)

CLEAR(A)

CLEAR(B) ARMEMPTY

HOLDING(C)

ON(B,A) ^ CLEAR(B) ^

CLEAR(A) ^

ARMEMPTY

HOLDING(C)

UNSTACK(B,A)

STACK(C,A)

ONTABLE(A) ^ ONTABLE(C) ON(B,D)

HOLDING(C)

ON(C A) ON(B D) ^ ONTABLE(D) ^ HOLDING(B)

CLEAR(A) ^ HOLDING(C)

STACK(C A)

ONTABLE(C) ONTABLE(C)

CLEAR(D) CLEAR(D)

HOLDING(C) HOLDING(C)

CLEAR(C) CLEAR(C)

HOLDING(B) HOLDING(B)

CLEAR(A) ^ CLEAR(A) ^

CLEAR(D) ^ HOLDING(B) CLEAR(D) ^ HOLDING(B)

ARMEMPTY ARMEMPTY

HOLDING(C) HOLDING(C)

STACK(B,D) STACK(B,D)

ONTABLE(C) ^ CLEAR(C) ^ ONTABLE(C) ^ CLEAR(C) ^

ONTABLE(C) ^ CLEAR(C) ^ STACK(C,A) ONTABLE(C) ^ CLEAR(C) ^ STACK(C,A)

ARMEMPTY ARMEMPTY

ARMEMPTY ARMEMPTY

ON(B,D) ON(B,D)

PICKUP(C) PICKUP(C)

PICKUP(C) PICKUP(C)

CLEAR(A) ^ HOLDING(C) CLEAR(A) ^ HOLDING(C)

CLEAR(A) ^ HOLDING(C) CLEAR(A) ^ HOLDING(C)

STACK(C,A) STACK(C,A) STACK(C,A) STACK(C,A)

1. UNSTACK(B,A) 2. STACK(B,D) 3. PICKUP(C) 4. STACK(C,A)

Masalah di atas dapat menghasilkan rencana yang efisien dan dinilai layak digunakan

ON(C,A) ^

ONTABLE(C)^

ONTABLE(A) ^

ON(B C)^

ONTABLE(B)

ONTABE(c)

Sehingga isi stack dan rencana penyelesaian sebagai berikut :

1. UNSTACK(C,A) 1. UNSTACK(C,A)

ON(A,B) ON(A,B)

2. PUTDOWN(C) 2. PUTDOWN(C)

ON(B,C) ON(B,C) ON(A,B) ^ ON(A,B) ^

3. PICKUP(A) 3. PICKUP(A)

ONTABLE(B) ONTABLE(B)

4. STACK(A,B) 4. STACK(A,B) 5. UNSTACK(A,B) 5. UNSTACK(A,B) 6. PUTDOWN(A) 6. PUTDOWN(A) 7. PICKUP(B) 7. PICKUP(B) 8. STACK(B,C) 8. STACK(B,C) 9. PICKUP(A) 9. PICKUP(A)

Algoritma global GSP

1. Menempatkan seluruh kondisi goal-state pada slot 1. Menempatkan seluruh kondisi goal-state pada slot

terdasar dari stack. terdasar dari stack.

2. Memasukkan setiap kondisi goal-state yang belum 2. Memasukkan setiap kondisi goal-state yang belum

tercapai ke dalam sebuah slot stack. tercapai ke dalam sebuah slot stack.

3. Menghilangkan kondisi yang sudah dicapai dalam 3. Menghilangkan kondisi yang sudah dicapai dalam

stack, mengganti kondisi yang belum dicapai stack, mengganti kondisi yang belum dicapai dengan operator atau memindahkan operator yang dengan operator atau memindahkan operator yang sudah bisa diaplikasikan ke dalam rencana sudah bisa diaplikasikan ke dalam rencana penyelesaian kemudian kembali mengulangi penyelesaian kemudian kembali mengulangi langkah ke-3, atau menguji kesamaan current-state langkah ke-3, atau menguji kesamaan current-state dengan goal-state kemudian mengulangi langkah 2 dengan goal-state kemudian mengulangi langkah 2 jika berbeda serta berhenti jika sama jika berbeda serta berhenti jika sama

Constraint Posting (CP)

1. 1. Berbeda dengan GSP yang berusaha mencapai Berbeda dengan GSP yang berusaha mencapai kondisi goal-state terurut kondisi goal-state terurut

2. 2. Berusaha mencapai kondisi tertentu saat operators Berusaha mencapai kondisi tertentu saat operators dibangkitkan untuk menghasilkan GSP terurut untuk dibangkitkan untuk menghasilkan GSP terurut untuk menyelesaikan kondisi pertama, kedua dan menyelesaikan kondisi pertama, kedua dan seterusnya (linear-planning) yang ingin dicapai seterusnya (linear-planning) yang ingin dicapai

3. 3. CP bekerja secara paralel, mencapai kondisi goal- CP bekerja secara paralel, mencapai kondisi goal- state (non-linear planning) berdasarkan keyakinan state (non-linear planning) berdasarkan keyakinan bahwa : kebanyakan masalah atau sub-sub masalah bahwa : kebanyakan masalah atau sub-sub masalah yang perlu dikerjakan secara simultan yang perlu dikerjakan secara simultan

4. 4. CP membangun rencana penyelesaian secara CP membangun rencana penyelesaian secara bertahap untuk menganalisa operators, mengurutkan bertahap untuk menganalisa operators, mengurutkan operators baik secara parsial atau meletakkan variabel operators baik secara parsial atau meletakkan variabel antar operator, sehingga suatu proses penyelesaian antar operator, sehingga suatu proses penyelesaian masalah bisa didapatkan dengan sekumpulan operator masalah bisa didapatkan dengan sekumpulan operator meskipun untuk pengurutan operators mungkin tidak meskipun untuk pengurutan operators mungkin tidak tersedia tersedia

Fungsi-fungsi Pemandu CP (TWEAK)

Dua kondisi :

• ON(A,B) • ON(A,B) • ON(B,C). • ON(B,C).

ON(A,B) dapat dicapai dengan STACK(A,B) ON(A,B) dapat dicapai dengan STACK(A,B) ON(B,C) dapat dicapai dengan STACK(B,C) ON(B,C) dapat dicapai dengan STACK(B,C)

seperti tanda * menunjukkan kondisi yang belum seperti tanda * menunjukkan kondisi yang belum tercapai agar operator bisa dioperasikan dan tercapai agar operator bisa dioperasikan dan tanda ¬ menunjukkan kondisi yang dihilangkan tanda ¬ menunjukkan kondisi yang dihilangkan setelah operator setelah operator diaplikasikan diaplikasikan

Penulisan Langkah

CLEAR(B)

CLEAR(C)

*HOLDING(A)

*HOLDING(B)

STACK(A,B)

STACK(B,C)

ARMEMPTY

ARMEMPTY

ON(A,B)

ON(B,C)

CLEAR(B)

CLEAR(C)

Karena A dan B keduanya berada di permukaan meja, operator yang cocok untuk mencapai HOLDING(A) ialah dengan mengaplikasikan PICKUP(A), dan HOLDING(B) dengan PICKUP(B)

*CLEAR(A)

*CLEAR(B)

ONTABLE(A)

ONTABLE(B)

*ARMEMPTY

*ARMEMPTY

PICKUP(A)

PICKUP(B)

HOLDING(A)

HOLDING(B))

• *ARMEMPTY muncul pada kedua langkah karena ada • *ARMEMPTY muncul pada kedua langkah karena ada

langkah lain yang memiliki postcondition ¬ ARMEMPTY, langkah lain yang memiliki postcondition ¬ ARMEMPTY, *CLEAR(A) karena initial-state *CLEAR(A) karena initial-state

• CLEAR(A) belum terpenuhi, *CLEAR(B) muncul karena • CLEAR(A) belum terpenuhi, *CLEAR(B) muncul karena

ada langkah lain yang memiliki postcondition ¬ CLEAR(B) ada langkah lain yang memiliki postcondition ¬ CLEAR(B) • PICKUP(A) dibuat untuk memenuhi precondition dari • PICKUP(A) dibuat untuk memenuhi precondition dari

STACK(A,B) STACK(A,B) • PICKUP(B) dibuat untuk memenuhi precondition dari • PICKUP(B) dibuat untuk memenuhi precondition dari

STACK(B,C) STACK(B,C) • Baris pertama, kedua dan ketiga ditujukan untuk memenuhi • Baris pertama, kedua dan ketiga ditujukan untuk memenuhi

*CLEAR(B) karena PICKUP(B) memiliki precondition *CLEAR(B) karena PICKUP(B) memiliki precondition CLEAR(B) dan tidak dihilangkan setelahnya. CLEAR(B) dan tidak dihilangkan setelahnya.

Operator-operator Yang Terurut

PICKUP(A) ← STACK(A,B) PICKUP(B) ← STACK(B,C) PICKUP(B) ← STACK(A B)

• Kini ada tiga kondisi yang belum terpenuhi, *ARMEMPTY • Kini ada tiga kondisi yang belum terpenuhi, *ARMEMPTY sebagai precondition sebagai precondition

• PICKUP(A) dan PICKUP(B) kemudian *CLEAR(A) sebagai • PICKUP(A) dan PICKUP(B) kemudian *CLEAR(A) sebagai precondition PICKUP(A) precondition PICKUP(A)

• Katakanlah kita mencoba untuk mencapai *ARMEMPTY pada • Katakanlah kita mencoba untuk mencapai *ARMEMPTY pada langkah PICKUP(A) dan PICKUP(B). langkah PICKUP(A) dan PICKUP(B).

• PICKUP(A) dan PICKUP(B) saling menyebabkan • PICKUP(A) dan PICKUP(B) saling menyebabkan *ARMEMPTY muncul pada precondition masing-masing. *ARMEMPTY muncul pada precondition masing-masing.

• Menggunakan promotion, salah satu langkah bisa lebih • Menggunakan promotion, salah satu langkah bisa lebih didahulukan dibanding yang lainnya untuk memanfaatkan didahulukan dibanding yang lainnya untuk memanfaatkan kondisi kondisi

• ARMEMPTY pada initial-state. Katakanlah kita mencoba • ARMEMPTY pada initial-state. Katakanlah kita mencoba

men-dahulukan PICKUP(A) dibandingkan PICKUP(B) (baris men-dahulukan PICKUP(A) dibandingkan PICKUP(B) (baris pertama) pertama)

Operator-operator Yang Terurut

PICKUP(A)  PICKUP(B) PICKUP(A)  PUTDOWN(A) PICKUP(B)

• Precondition ARMEMPTY pada PICKUP(A) yang di- • Precondition ARMEMPTY pada PICKUP(A) yang di- clobber oleh postcondition ¬ARMEMPTY pada clobber oleh postcondition ¬ARMEMPTY pada

PICKUP(B) dapat di declobber dengan langkah PICKUP(B) dapat di declobber dengan langkah yang sudah ada yaitu STACK(B,C) (baris kedua). yang sudah ada yaitu STACK(B,C) (baris kedua).

• Kondisi yang belum tercapai kini hanya *CLEAR(A). • Kondisi yang belum tercapai kini hanya *CLEAR(A).

CLEAR(A) dapat dicapai dengan mengaplikasikan CLEAR(A) dapat dicapai dengan mengaplikasikan UNSTACK(x,A), dengan UNSTACK(x,A), dengan

• x sama dengan C (lihat notasi berikut) • x sama dengan C (lihat notasi berikut)

Penulisan Langkah.

*CLEAR(x) *CLEAR(x) *ON(x,A) *ON(x,A) *ARMEMPTY *ARMEMPTY

UNSTACK(x,A) UNSTACK(x,A) HOLDING(C) HOLDING(C)

CLEAR(A) CLEAR(A) ¬ ON(x,A) ¬ ON(x,A)

Tetapi, langkah UNSTACK(C,A) memiliki tiga precondition yang belum tercapai. Namun hal tersebut dapat dihadapi dengan promotion (notasi berikut)

Operator-operator Yang Terurut Sebagian

UNSTACK(x,A)  STACK(B,C) UNSTACK(x,A)  PICKUP(A) UNSTACK(x A)  PICKUP(B)

• Notasi di atas baris pertama terjadi karena UNSTACK(C,A) • Notasi di atas baris pertama terjadi karena UNSTACK(C,A) harus dilakukan sebelum ada sesuatu di atas C. harus dilakukan sebelum ada sesuatu di atas C.

• Baris ke dua terjadi karena PICKUP(A) baru dapat dilakukan jika • Baris ke dua terjadi karena PICKUP(A) baru dapat dilakukan jika tidak ada balok di atas A. tidak ada balok di atas A.

• Baris ke tiga terjadi karena operator UNSTACK ditempatkan • Baris ke tiga terjadi karena operator UNSTACK ditempatkan lebih dahulu dibandingkan PICKUP jika hanya *ARMEMPTY lebih dahulu dibandingkan PICKUP jika hanya *ARMEMPTY yang menghubungkan keduanya. Dari seluruh fungsi pemandu, yang menghubungkan keduanya. Dari seluruh fungsi pemandu, step-addition adalah yang paling rumit untuk diaplikasikan, step-addition adalah yang paling rumit untuk diaplikasikan, karena harus dilakukan pengecekan apakah penambahan karena harus dilakukan pengecekan apakah penambahan langkah yang baru akan meng-clobber langkah-langkah yang langkah yang baru akan meng-clobber langkah-langkah yang telah ada. PICKUP(B) membutuhkan ARMEMPTY, telah ada. PICKUP(B) membutuhkan ARMEMPTY,

• tetapi penambahan UNSTACK(C,A) meng-clobber ARMEMPTY • tetapi penambahan UNSTACK(C,A) meng-clobber ARMEMPTY

tersebut, demikian pula untuk ARMEMPTY pada precondition tersebut, demikian pula untuk ARMEMPTY pada precondition PICKUP(A). PICKUP(A).

• langkah yang sudah ada tidak ada yang cocok untuk melakukan • langkah yang sudah ada tidak ada yang cocok untuk melakukan declobbering tersebut sehingga dibutuhkan declobbering tersebut sehingga dibutuhkan langkah baru langkah baru

Berdasarkan pada goal-state, PUTDOWN(C) adalah langkah yang baik

HOLDING(C) PUTDOWN(C) ONTABLE(C)

ARMEMPTY

• • Setelah dilakukan promotion pada langkah ter-clobber oleh step- Setelah dilakukan promotion pada langkah ter-clobber oleh step- addition, kini seluruh precondition dari semua langkah telah addition, kini seluruh precondition dari semua langkah telah terpenuhi. terpenuhi.

• • Rencana penyelesaian tinggal disusun dari langkah-langkah yang Rencana penyelesaian tinggal disusun dari langkah-langkah yang ada berdasarkan urutan yang telah ditentukan. ada berdasarkan urutan yang telah ditentukan.

• • Rencana penyelesaian yang dihasilkan sama dengan notasi di atas Rencana penyelesaian yang dihasilkan sama dengan notasi di atas • • Pernyataan biaya komputasi CP yang tinggi dibandingkan GSP Pernyataan biaya komputasi CP yang tinggi dibandingkan GSP

disimpulkan dari pemikiran mengenai : disimpulkan dari pemikiran mengenai : - Setiap penambahan langkah baru CP butuh pencarian pengaruh - Setiap penambahan langkah baru CP butuh pencarian pengaruh

dari seluruh langkah yang sudah ada sebelumnya. dari seluruh langkah yang sudah ada sebelumnya. - Setiap pengurutan langkah baru CP butuh pembandingan dengan - Setiap pengurutan langkah baru CP butuh pembandingan dengan seluruh urutan langkah yang sudah ada sebelumnya seluruh urutan langkah yang sudah ada sebelumnya

Algoritma Global CP

1. Inisialisasi S sebagai satu set proposisi pada goal- 1. Inisialisasi S sebagai satu set proposisi pada goal- state. state.

2. Hilangkan beberapa proposisi-yang-belum-tercapai P 2. Hilangkan beberapa proposisi-yang-belum-tercapai P

dari S. dari S.

3. Capai P dengan menggunakan salah satu fungsi 3. Capai P dengan menggunakan salah satu fungsi pemandu yang ada. pemandu yang ada.

4. Review seluruh langkah dalam rencana untuk melihat 4. Review seluruh langkah dalam rencana untuk melihat

precondition yang belum tercapai. Tambahkan precondition yang belum tercapai. Tambahkan precondition yang belum tercapai ke dalam S. precondition yang belum tercapai ke dalam S.

5. Jika S kosong, lengkapi rencana penyelesaian dengan 5. Jika S kosong, lengkapi rencana penyelesaian dengan

mengkonversi urutan sebagian langkah menjadi urutan mengkonversi urutan sebagian langkah menjadi urutan lengkap lengkap

6. Jika tidak, kembali ke langkah ke-2 6. Jika tidak, kembali ke langkah ke-2

Backward Chaining Interpreter

Input: Goal G, Set S of rules and facts Input: Goal G, Set S of rules and facts Output: yes if G is logicaly implied by S; no otherwise Output: yes if G is logicaly implied by S; no otherwise

Initialize curent goal to G; Initialize curent goal to G; repeat repeat Choose a goal A from the set of curent goals; Choose a goal A from the set of curent goals; if A is a fact in S then remove A from curent set of goals if A is a fact in S then remove A from curent set of goals else if there is no rule in S whose head is A then exit and output else if there is no rule in S whose head is A then exit and output

no Else no Else Begin Begin Choose a rule A IF Body in S, where Body is a set of goals Choose a rule A IF Body in S, where Body is a set of goals Choose Remove A from curent set of goals; Choose Remove A from curent set of goals; Add Body to the curent set of goals; Add Body to the curent set of goals;

end until the curent set of goals is empty end until the curent set of goals is empty output yes output yes

Contoh :

Goal: u Goal: u

u w, p u w, p v  n, r v  n, r wr wr p  a, b p  a, b q  a, c, d q  a, c, d r  a, p r  a, p

Forward Chaining Interpreter

• Input: a set of goals G, Set S of rules and facts • Input: a set of goals G, Set S of rules and facts • Output: An element of G logically implied by S • Output: An element of G logically implied by S

Initialize working memory to facts in S; Initialize working memory to facts in S; Repeat Repeat Choose a rule A IF Body in S; Choose a rule A IF Body in S;

if Body is a subset of working memory then if Body is a subset of working memory then if A is not in working memory then add A to if A is not in working memory then add A to

working memory working memory until an element of G is in working memory; until an element of G is in working memory;

output the element of G in working memory output the element of G in working memory

Backward or Forward Chaining

Backward chaining: Backward chaining:

– Given a question or a hypothesis, check it out. – Given a question or a hypothesis, check it out. – Search directed by the question – Search directed by the question – Good for very large number of facts (large database, many possible – Good for very large number of facts (large database, many possible

observations), but the question only needs a few of them. observations), but the question only needs a few of them. eg, Has John Smith satisfied the BSc requirements? eg, Has John Smith satisfied the BSc requirements?

Forward chaining : Forward chaining :

– Given some facts, identify any consequences of them and add themto the – Given some facts, identify any consequences of them and add themto the fact base. fact base.

– Search directed by the added/deleted facts or observations – Search directed by the added/deleted facts or observations – Good if lots of possible hypotheses, mostly irelevant to the new facts. – Good if lots of possible hypotheses, mostly irelevant to the new facts.

• eg, a customer buys a toaster; are there any items that need to be reordered? • eg, a customer buys a toaster; are there any items that need to be reordered?

• An alarm goes of on the control panel; what action should I • An alarm goes of on the control panel; what action should I take? take?

– “Noticing” – “Noticing”

181