Ejemplo n.º 1
0
  protected ArrayList<Nodo> actualizarAbiertos(
      ArrayList<Nodo> lAbiertos, ArrayList<Nodo> lCerrados, ArrayList<Nodo> lvecinos, Nodo nFinal) {
    Nodo nVecino = null;
    // ArrayList<Nodo> auxLAbiertos=lAbiertos;
    boolean estaEnAbiertos = false;
    boolean estaEnCerrados = false;
    for (int i = 0; i < lvecinos.size(); i++) {
      estaEnAbiertos = false;
      estaEnCerrados = false;
      nVecino = lvecinos.get(i);
      for (int k = 0; k < lCerrados.size(); k++) {
        if (nVecino.comparaEsNodo(lCerrados.get(k))) {
          estaEnCerrados = true;
        }
      }

      if (!estaEnCerrados) {
        for (int j = 0; j < lAbiertos.size(); j++) {
          if (nVecino.comparaEsNodo(lAbiertos.get(j))) {
            estaEnAbiertos = true;
            if (nVecino.getCosteF() < lAbiertos.get(j).getCosteF()) {
              lAbiertos.remove(j);
              lAbiertos.add(nVecino);
            }
          }
        }

        if (!estaEnAbiertos) lAbiertos.add(nVecino);
      }
    }

    return lAbiertos;
  }