Exemple #1
0
  public ANode search(Staterep state) {
    ANode node = new ANode(state);

    HashedPriorityQueue<ANode> nyilt =
        new HashedPriorityQueue<ANode>(11, new TotalCostComparator());
    nyilt.offer(node);
    HashMap<ANode, ANode> closed = new HashMap<ANode, ANode>();

    while ((node = nyilt.poll()) != null && !node.getState().isGoal()) {

      kiterjeszt(nyilt, closed, node);
      closed.put(node, node);
      novelKiterjesztes();
    }

    return node;
  }
Exemple #2
0
  protected void kiterjeszt(
      HashedPriorityQueue<ANode> open, HashMap<ANode, ANode> closed, ANode node) {
    while (node.hasMoreChildren()) {
      ANode child = node.getNextChild();
      if (open.contains(child)) {

        ANode oldNode = open.get(child);

        if (child.getCost() < oldNode.getCost()) {
          open.remove(child);
          open.offer(child);
        }

      } else if (closed.containsKey(child)) {
        ANode oldNode = closed.get(child);
        if (child.getCost() < oldNode.getCost()) {
          closed.remove(child);
          open.offer(child);
        }
      } else {
        open.offer(child);
      }
    }
  }