Skip to content

Commit 5da397a

Browse files
committed
SearchForStates now supported by most search algorithms.
1 parent be06366 commit 5da397a

File tree

10 files changed

+980
-960
lines changed

10 files changed

+980
-960
lines changed
Lines changed: 54 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,55 @@
1-
package aima.core.search.framework;
2-
3-
import java.util.Comparator;
4-
import java.util.List;
5-
6-
import aima.core.agent.Action;
7-
import aima.core.search.framework.problem.Problem;
8-
import aima.core.search.framework.qsearch.QueueSearch;
9-
10-
/**
11-
* Maintains a {@link QueueSearch} implementation and a node comparator. Search
12-
* is performed by creating a priority queue based on the given comparator and
13-
* feeding it to the QueueSearch implementation which finally controls the
14-
* simulated search space exploration.
15-
*
16-
* @author Ravi Mohan
17-
* @author Ruediger Lunde
18-
*/
19-
public class PrioritySearch implements SearchForActions {
20-
private final QueueSearch implementation;
21-
private final Comparator<Node> comparator;
22-
23-
public PrioritySearch(QueueSearch impl, Comparator<Node> comp) {
24-
implementation = impl;
25-
comparator = comp;
26-
}
27-
28-
@Override
29-
public List<Action> search(Problem p) {
30-
return implementation.search(p, QueueFactory.<Node>createPriorityQueue(comparator));
31-
}
32-
33-
public Comparator<Node> getComparator() {
34-
return comparator;
35-
}
36-
37-
@Override
38-
public NodeExpander getNodeExpander() {
39-
return implementation.getNodeExpander();
40-
}
41-
42-
@Override
43-
public Metrics getMetrics() {
44-
return implementation.getMetrics();
45-
}
1+
package aima.core.search.framework;
2+
3+
import java.util.Comparator;
4+
import java.util.List;
5+
6+
import aima.core.agent.Action;
7+
import aima.core.search.framework.problem.Problem;
8+
import aima.core.search.framework.qsearch.QueueSearch;
9+
10+
/**
11+
* Maintains a {@link QueueSearch} implementation and a node comparator. Search
12+
* is performed by creating a priority queue based on the given comparator and
13+
* feeding it to the QueueSearch implementation which finally controls the
14+
* simulated search space exploration.
15+
*
16+
* @author Ravi Mohan
17+
* @author Ruediger Lunde
18+
*/
19+
public class PrioritySearch implements SearchForActions, SearchForStates {
20+
private final QueueSearch implementation;
21+
private final Comparator<Node> comparator;
22+
23+
public PrioritySearch(QueueSearch impl, Comparator<Node> comp) {
24+
implementation = impl;
25+
comparator = comp;
26+
}
27+
28+
@Override
29+
public List<Action> search(Problem p) {
30+
implementation.getNodeExpander().useParentLinks(true);
31+
Node node = implementation.search(p, QueueFactory.<Node>createPriorityQueue(comparator));
32+
return node == null ? SearchUtils.failure() : SearchUtils.getSequenceOfActions(node);
33+
}
34+
35+
@Override
36+
public Object searchState(Problem p) {
37+
implementation.getNodeExpander().useParentLinks(false);
38+
Node node = implementation.search(p, QueueFactory.<Node>createPriorityQueue(comparator));
39+
return node == null ? null : node.getState();
40+
}
41+
42+
public Comparator<Node> getComparator() {
43+
return comparator;
44+
}
45+
46+
@Override
47+
public NodeExpander getNodeExpander() {
48+
return implementation.getNodeExpander();
49+
}
50+
51+
@Override
52+
public Metrics getMetrics() {
53+
return implementation.getMetrics();
54+
}
4655
}

0 commit comments

Comments
 (0)