1. Operator effect definition:
oi,j ((a1 , a2 , . . . , a12 )) = (b1 , b2 , . . . , b12 )
k = 1, 2, . . . , 12
if (a1 , a2 , . . . , a12 ) ∈ dom(oi,j )
bk =
ak + j
ak + 120
if ∃l(al > ak ) ∨ (ak + ai = 0)
otherwise
Exercise 4. Create the Java implementation for the function above as a body of a void function!
We suppose that a1 , a2 , . . . , a12 are integers, and they are accessible in the function body as a[1], a[2],
. . ., a[12], and b1 , b2 , . . . , b12 are integers, and they are accessible in the function body as b[1], b[2], . . .,
b[12].
answer :
2.
Set of operators:
O = {o1,2 , o1,3 , o2,1 , o2,3 , o3,1 , o3,2 }
Domain of operators:
dom(oi,j ) = {(a1 , a2 , . . . , a12 ) ∈ N12 | ∀k((k = j) ⊃ (ak + i > aj )) ∧ ∃k∃l(a1 = ak ∗ al )}
Exercise 3. Create the Java implementation for the preconditions above as a body of a boolean
function! We suppose that a1 , a2 , . . . , a12 are integers, and they are accessible in the function body as a[1],
a[2], . . ., a[12].
answer :
3.
Set of goal states:
G = {(a1 , a2 , . . . , a12 ) ∈ N12 | ∀i∃j((ai + aj > 20) ⊃ (ai ∗ aj < 200))}
Exercise 2. Create the Java implementation for the goal condition above as a body of a boolean
function! We suppose that a1 , a2 , . . . , a12 are integers, and they are accessible in the function body as a[1],
a[2], . . ., a[12]
answer :
4.
∀i(∃j((aj < ai ) ∨ (aj = 1000)) ⊃ (ai > 0) ∨ ∃j(aj = 50))
where i ∈ {1, 2, . . . , 6} and j ∈ {1, 2, . . . , 6}
Exercise 1. Create the Java implementation for the formula above as a body of a boolean
function! We suppose that a1 , a2 , . . . , a6 are integers, and they are accessible in the function body as a[1],
a[2], . . ., a[6].
answer :
5.
1.all i exists j a[i] > a[j] or a[1] = a[4]
all i ( exists j ( (a[j] < a[i]) or not (a[j] = 1000) ) implies ( a[i] > 0 or exists j ( a[j] = 50 ) ) )
implementation in java :
------------------------------------------------------------------------------------------------
Complete the Java implementation of the Breadth-first search
Exercise 1. Initialize the database.
Exercise 2. Construct the solution as an operator list.
Exercise 3. Complete the code of the extension.
❜
public interface Problem {
State startState();
Collection<Operator> operators();
}
public interface State {
boolean isGoal();
}
public interface Operator {
boolean isApplicable(State s);
State apply(State s);
❜
}
public abstract class Solver {
private static class Node {
State state;
Operator creator;
Node parent;
int deep;
public Node(State state, Operator op, Node parent ) {
this.deep = parent == null ? 0 : parent.deep + 1;
this.creator = op;
this.parent = parent;
this.state = state;
}
❜
}
public List<Operator> run(Problem p) {
LinkedList<Node> closedNodes = new LinkedList<Node>();
LinkedList<Node> openNodes = new LinkedList<Node>();
/* Exercise 1: Initialize the database. */
while ( ! openNodes.isEmpty() ) {
Node node = openNodes.removeFirst();
if ( node.state.isGoal() ) {
LinkedList<Operator> solution = new LinkedList<Operator>();
/* Exercise 2: Construct the solution as an operator list. */
return solution;
}
closedNodes.add(node);
for ( Operator op : p.operators() ) {
if ( op.isApplicable(node.state) ) {
State newState = op.apply(node.state);
/* Exercise 3: Complete the code of the extension
* (use the search function below when necessary). */
}
}
}
return null;
}
private static Node search(List<Node> nodeList, State state) {
for ( Node node : nodeList )
if ( state.equals(node.state) )
return node;
return null;
}
}