13 respuestas

  1. Jose
    01/04/2010

    Muy guapo el algoritmo, ademas de sencillo. Una sola cosa, no seria mejor una PriorityQueue para obtener directamente la entrada abierta de menor peso? En principio sería más optimo, pero tal y como esta ahora parece que funciona perfectamente.

  2. admin
    01/04/2010

    Jose, No he tocado mucho el tema de colas, por eso no me he arriesgado y he preferido hacerlo así. Pero si quieres intentar hacer una versión con colas pues te animo a ellos y estaré en cantado de publicarla.

  3. j
    27/08/2010

    Podrias explicarme brevemente esta parte es que me he liado un poco

    def ruta(self):
    		for i in range(len(self.nodos)):
    			if self.en_lista(self.nodos[i], self.cerrada):
    				continue
    			elif not self.en_lista(self.nodos[i], self.abierta):
    				self.abierta.append(self.nodos[i])
    			else:
    				if self.select.g+1 < self.nodos[i].g:
    					for j in range(len(self.abierta)):
    						if self.nodos[i].pos == self.abierta[j].pos:
    							del self.abierta[j]
    							self.abierta.append(self.nodos[i])
    							break
    

    muchas gracias

  4. adrigm
    28/08/2010

    A ver te explico, ese método lleva a cabo la asignación de los vecinos a una de las listas.

    Primero recorre la lista de vecinos del nodo seleccionado y luego va comprobando.

    Primero comprueba si ya está en la lista cerrada, en cuyo caso no hace nada. Luego comprueba si NO está en la lista abierta y si no está lo añade.

    Por último comprueba si ya está en la lista abierta, pero la g del nodo seleccionado más 1 es menor que la del nodo vecino que estamos comprobando. Si se cumple simplemente recorre la lista abierta buscando ese nodo en la lista y lo sustituye por el nuevo con los nuevos cálculos hechos.

    Para entenderlo supongo que primero te habrás mirado bien el artículo de la teoría, cualquier duda pregunta.

  5. nax
    13/03/2011

    aun ando aprendiendo esto pero, habría que tener en cuenta los limites de la matriz en la funcion vecinos cierto?

    • adrigm
      13/03/2011

      Explícate mejor, ¿A qué te refieres?

  6. Rodrigo
    22/02/2012

    Gracias por estos tutoriales. Estoy creando un juego de estrategia en python y la verdad esto del pathfinding es un dolor de cabeza.

  7. Etrk
    02/08/2012

    se basa en si se puede mover y es menor distancia no? tanto para eso?

  8. david
    05/08/2014

    Buenas, llego un poco tarde creo xD
    Pero me gustaria saber en la funcion vecinos. Acaso no tendria que tener en cuenta tambien aquellos que se encuentran en las diagonales? segun entiendo solo tienen en cuenta los vecinos de los lados. Saludos.

  9. Beto
    25/11/2014

    Esta genial, gracias me interesa saber como implementaste la parte gráfica, saludos
    podrías enviarme la parte gráfica que desarrollaste, te lo agradecería mucho.

  10. john paul george
    10/06/2015

    Estimado, cuando agrego una columna y/o fila a la matriz que ingresas en el txt. me arroja una secuencia de errores me podrías explicar donde declaras el numero de columnas y filas para tu matriz porfavor.

  11. Diego Piedrahita
    16/04/2018

    hola que pena una pregunta, usted en la heuristica utiliza la distancia manhatan verdad

  12. Diego Piedrahita
    17/04/2018

    como se podria adaptar la heuristica euclediana a este codigo

Responder

 

 

 

Volver arriba
móvil escritorio