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