Ejemplo n.º 1
1
 private Queue<SearchNode> GetSolution(Board initial) {
   Queue<SearchNode> queue = new Queue<SearchNode>();
   MinPQ<SearchNode> pq = new MinPQ<SearchNode>();
   SearchNode node = new SearchNode();
   node.brd = initial;
   node.moves = 0;
   // node.priority = initial.manhattan();
   node.prev = null;
   pq.insert(node);
   SearchNode curNode = null;
   while (!pq.isEmpty()) {
     curNode = pq.delMin();
     if (curNode.brd.isGoal()) break;
     Iterable<Board> qe = curNode.brd.neighbors();
     Iterator it = qe.iterator();
     while (it.hasNext()) {
       node.brd = (Board) it.next();
       node.moves = curNode.moves + 1;
       node.prev = curNode;
       // node.priority = node.brd.manhattan();
       queue.enqueue(node);
     }
   }
   if (queue.isEmpty()) return null;
   else {
     do {
       queue.enqueue(curNode);
       curNode = curNode.prev;
     } while (curNode != null);
     return queue;
   }
 }