Existe una función de este tipo en matlab: [dist, path, pred] = graphshortestpath(G, S, T), déjame preguntarte cuál es el significado específico de pred.
Representa el precursor del nodo objetivo en el camino más corto desde S a cada nodo, es decir, el nodo anterior del nodo objetivo.
Por ejemplo, el siguiente código. Observe si el penúltimo número del vector de ruta en cada conjunto de valores de retorno es el mismo que el número del nodo correspondiente en pred. Es decir, el penúltimo valor de la ruta se extrae en secuencia para formar la matriz pred.
>> W = [.41 .99 .51 .32 .15 .45 .38 .32 .36 .29 .21];
>> DG = disperso([ 6 1 2 2 3 4 4 5 5 6 1],[2 6 3 5 4 1 6 3 4 3 5],W);
>> [dist,path,pred] = Graphshortestpath(DG ,1,1)
dist =
0
ruta =
1
pred = p> p>
0 6 5 5 1 4
>> [dist,ruta,pred] = Graphshortestpath(DG,1,2)
dist =
1.3600
ruta=
1 5 4 6 2
pred =
0 6 5 5 1 4 p>
>> [dist,ruta,pred] = graphshortestpath(DG,1,3)
dist =
0.5300
ruta =
1 5 3
pred =
0 6 5 5 1 4
>> [dist,ruta,pred] = rutamáscorta( DG, 1,4)
dist =
0.5700
ruta =
1 5 4
pred =
0 6 5 5 1 4
>> [dist,ruta,pred] = Graphshortestpath(DG,1,5)
dist = p>
0.2100
ruta=
1 5
pred =
0 6 5 5 1 4
>> [dist,ruta,pred] = graphshortestpath(DG,1,6)
dist =
0.9500
ruta =
1 5 4 6
pred =
0 6 5 5 1 4