private void expandir() {
        Nodo mejor = openList.get(0);
        openList.remove(0);
        closedList.add(mejor.getEstado());




        for (Nodo s : problema.sucesor(mejor)) {
            Estado siguiente = s.getEstado();
            if (!closedList.contains(siguiente)) {
                int f = f(mejor, s);
                if (!mejorEncontrado.containsKey(siguiente)) {
                    mejorEncontrado.put(siguiente, new DatosNodo(mejor, f));
                } else {
                    DatosNodo datos = mejorEncontrado.get(siguiente);

                    if (datos.getCosto() > f) {
                        datos.setParams(mejor, f);
                    }

                }
                //insertamos ordenado
                boolean agregado = false;
                for (int i = 0; i < openList.size(); i++) {
                    Estado iter = openList.get(i).getEstado();
                    DatosNodo datos = mejorEncontrado.get(iter);
                    if (f < datos.getCosto()) {
                        openList.add(i, s);
                        agregado = true;
                        break;
                    }
                }
                if(!agregado){
                    openList.add(s);
                }

            }
        }

    }