Este es un ejemplo del algoritmo va a buscar dentro de los nodos el que tenga la distancia más corta y se saltara al nodo destino, repitiendo la operación
la macro es esta
Sub algoritmo_Dijkstra()
Dim nodos As New Collection
Set datos = Range("b2").CurrentRegion
Set funcion = WorksheetFunction
With datos
Set datos = .Rows(2).Resize(.Rows.Count - 1)
nodo = 1: X = 1
regresa:
CUENTA = funcion.CountIf(.Columns(1), nodo)
If CUENTA = 0 Then
suma = funcion.Sum(.Columns(.Columns.Count + 1))
.Cells(.Rows.Count + 2, .Columns.Count + 1) = suma
.Cells(.Rows.Count + 2, .Columns.Count) = concatena
.Cells(.Rows.Count + 2, .Columns.Count - 2) = "RUTA MAS CORTA"
End
End If
fila = funcion.Match(nodo, .Columns(1), 0)
Set ruta = .Rows(fila).Resize(CUENTA, .Columns.Count)
minimo = funcion.Min(ruta.Columns(3))
fila2 = funcion.Match(minimo, ruta.Columns(3), 0)
ruta.Cells(fila2, ruta.Columns.Count + 1) = minimo
nodo = ruta.Cells(fila2, 2)
recorrido = ruta.Cells(fila2, 1) & ruta.Cells(fila2, 2)
If X = 1 Then concatena = recorrido
If X > 1 Then concatena = concatena & "-" & recorrido
X = X + 1
GoTo regresa
End With
End Sub