Me han encargado (coursework @ university) implementar una forma de búsqueda de ruta. Ahora, dentro de las especificaciones, podría implementar una fuerza bruta, ya que hay un límite en la cantidad de nodos para buscar (comenzar, dos en el medio, el final), pero quiero reutilizar este código y vine a implementar Dijkstra's algorithm .Implementación del algoritmo de Dijkstra
He visto el pseudo en Wikipedia y un amigo también escribió algo para mí, pero a toda máquina no tiene sentido. El algoritmo parece bastante simple y no es un problema para mí entenderlo, pero simplemente no puedo visualizar el código que se daría cuenta de eso.
¿Alguna sugerencia/sugerencia?
Editar para algunas confusiones:
Sí, hay un nodo de destino y un nodo de origen.
Estoy buscando implementar Dijkstra en un caso general, no en el caso de "solo dos paradas intermedias", porque deseo usar el código nuevamente después. De lo contrario, escribiría una implementación de fuerza bruta.
El problema específico con el que estoy teniendo problemas es almacenar las rutas sub-óptimas a medio formar, en caso de que puedan ser óptimas. Cuando visito un nodo dado, simplemente no veo cómo voy a actualizar todas las conexiones que lo atraviesan.
Más edición:
Pasando por un par de respuestas ahora y probando.
REALMENTE EDIT: Olvidé mencionar una complicación seria, que es que dos vértices pueden tener hasta UINT_MAX diferentes distancias entre ellos. Lo siento. De hecho, el hecho de que olvidé lidiar con esto es probablemente la causa del maldito problema, en primer lugar, aunque la solución: elegir la más corta es afortunadamente obvio para mí. No es de extrañar que el pseudo de otra persona para una variable de distancia no tuviera en cuenta mi distancia variable.
Etiquetado como tarea como OP específicamente menciona cursos. –
¿Dónde estás exactamente atrapado? ¿Vas de un pseudocódigo a un código? ¿Comprender la conexión entre el pseudocódigo y el algoritmo en palabras? – Cascabel
No se puede visualizar el pseudocódigo que se imprime ** directamente en el artículo de la wikipedia? ** –