Esto es un espacio para hablar de programación, algoritmos y tecnología. Aquí trato de publicar artículos que contengan un valor adicional y (ojalá) de utilidad para todos lo que los lean.

El algoritmo de Dijkstra sin duda es el más popular entre los algoritmos de caminos mínimos en un grafo. Este algoritmo se enfrenta a un problema complejo. La complejidad del problema radica en el tamaño del espacio de búsqueda.

Ciertamente los grafos son de las estructuras de datos que tienden a hacer explotar combinatoriamente la complejidad de los algoritmos que intentan trabajar sobre ellos. Con una cantidad creciente de nodos, los problemas de grafos tienden rápidamente a ser intratables

Algoritmo básico: Calcula la longitud del camino mínimo desde el nodo especificado hasta todos los demás nodos.

Dijkstra(Nodo root) {

	if (!root.hasChildren()) {
		return;
	}
	else {
		for (Edge e : root.getEdges()) {
			int dist = root.getTotalDistance() + e.getDistance();
			if (e.getTargetNode().getTotalDistance() > dist) {
				e.getTargetNode().setTotalDistance(dist);
			}
		}
	}
}

Leave a Reply