public LinkedList<Dimension> encontrarCamino(int[] posCasillaInicial, int[] posCasillaFinal){
	if(tablero == null)
		return null;
	
	listaAbierta.clear();
	listaCerrada.clear();
	tablero.resetVisitada();
	
	Nodo nodoInicial = new Nodo(null, null,posCasillaInicial,0);
	Nodo nodoFinal = new Nodo(null, null,posCasillaFinal,0);
	
	ponerNodoAListaAbierto(nodoInicial);
	
	while(listaAbierta.size() > 0){
		Nodo nodoActual = listaAbierta.get(listaAbierta.size() - 1);
		
		//Si el nodo es el final creamos el camino minimo
		if(nodoActual.mismoNodo(nodoFinal)){
			LinkedList<Dimension>mejorCamino = new LinkedList<Dimension>();
			tablero.setCostoCaminoActual(nodoActual.costoTotal);
			while(nodoActual != null){
				mejorCamino.add(0,nodoActual.getPosicion());
				nodoActual = nodoActual.nodoPadre;
			}
			return mejorCamino;
		} //fin del if
		
		listaAbierta.remove(nodoActual);
		
		int indice = 0;
		LinkedList<Nodo> nodosAdyacentes = encontrarNodosAdyacentes(nodoActual, nodoFinal);
		
		while(nodosAdyacentes.size() > indice){
			//si el nodo no esta en la lista cerrada
			if(!listaCerrada.contains(nodosAdyacentes.get(indice).getPosicion())){
				//si ya esta en la listaAbierta
				if(listaAbierta.contains(nodosAdyacentes.get(indice))){
					if(nodosAdyacentes.get(indice).costoG >= nodoActual.costoG){
						//if(nodosAdyacentes.get(indice).costoG >= nodosAdyacentes.get(indice).costoG){	
						indice++;
						continue; //pasa a la siguiente interaccion del while
					}
				}
				ponerNodoAListaAbierto(nodosAdyacentes.get(indice));
			}//fin del if de contains de listaCerrada
			indice++;
		}
		listaCerrada.add(nodoActual.getPosicion());
	}//final del while (listaAbierta.size() > 0)
	return null;
}