1. Apa yang dimaksud Adversarial Search & Constraint Satisfaction Problems? berikan contoh?
Adversarial Search
Adversarial Search bekerja dengan mencari berbagai kemungkinan solusi dari sebuah masalah atau menghitung langkah terbaik dimana seluruh informasi yang dibutuhkan tersedia. Contohnya adalah permainan catur atau tic tac toe.
Constraint Satisfaction Problems
Constraint Satisfaction Problems adalah permasalahan yang tujuannya mendapatkan suatu kombinasi dari beberapa variabel tertentu yang memenuhi aturan-aturan tertentu. Contohnya adalah cryptarithmetic, map coloring.
2. Apa itu Propositional Logic?berikan contoh?
Propositional Logic
Propositional logic merupakan salah satu bentuk (bahasa) repre-sentasi logika yang paling tua dan paling sederhana. Propositional logic membentuk statement sederhana atau statement yang kompleks dengan menggunakan propositional connective, dimana mekanisme ini menentukan kebenaran dari sebuah statement kompleks dari nilai kebenaran yang direpresentasikan oleh statement lain yang lebih sederhana.
Beberapa contoh operator logika adalah:
~ (negasi)
^ (konjungsi)
v (disjungsi)
-> (implikasi)
<-> (ekuivalensi)
Tabel Kebenaran
3. Buat coding (Boleh C, C++ atau Java) untuk Algoritma A & Algoritma A* (A Star)?
ArrayList SolutionPathList = new ArrayList(); //Create a node containing the goal state node_goal Node node_goal = new Node(null,null,1,15,15); //Create a node containing the start state node_start Node node_start = new Node(null,node_goal,1,0,0); //Create OPEN and CLOSED list SortedCostNodeList OPEN = new SortedCostNodeList (); SortedCostNodeList CLOSED = new SortedCostNodeList (); //Put node_start on the OPEN list OPEN.push (node_start); //while the OPEN list is not empty while (OPEN.Count>0) { //Get the node off the open list //with the lowest f and call it node_current Node node_current = OPEN.pop (); //if node_current is the same state as node_goal we //have found the solution; //break from the while loop; if (node_current.isMatch (node_goal)) { node_goal.parentNode = node_current.parentNode ; break; } //Generate each state node_successor that can come after node_current ArrayList successors = node_current.GetSuccessors (); //for each node_successor or node_current foreach (Node node_successor in successors) { //Set the cost of node_successor to be the cost of node_current plus //the cost to get to node_successor from node_current //--> already set while we were getting successors //find node_successor on the OPEN list int oFound = OPEN.IndexOf (node_successor); //if node_successor is on the OPEN list but the existing one is as good //or better then discard this successor and continue if (oFound>0) { Node existing_node = OPEN.NodeAt (oFound); if (existing_node.CompareTo (node_current) <= 0) continue; } //find node_successor on the CLOSED list int cFound = CLOSED.IndexOf (node_successor); //if node_successor is on the CLOSED list //but the existing one is as good //or better then discard this successor and continue; if (cFound>0) { Node existing_node = CLOSED.NodeAt (cFound); if (existing_node.CompareTo (node_current) <= 0 ) continue; } //Remove occurences of node_successor from OPEN and CLOSED if (oFound!=-1) OPEN.RemoveAt (oFound); if (cFound!=-1) CLOSED.RemoveAt (cFound); //Set the parent of node_successor to node_current; //--> already set while we were getting successors //Set h to be the estimated distance to node_goal //(Using heuristic function) //--> already set while we were getting successors //Add node_successor to the OPEN list OPEN.push (node_successor); } //Add node_current to the CLOSED list CLOSED.push (node_current); } www.binus.ac.id
Recent Comments