Descripción
Aplica el algoritmo de Dijkstra a grafos ponderados conexos o digrafos fuertemente conexos.
Si el grafo no es ponderado, se tomarán las aristas con peso igual a 1 y la ausencia de ellas como infinito
Cadena de entrada
gr_dijkstra
Cadena de salida
GRAFO.dijkstra
Uso
gr_dijkstra(<grafo>,<nodo1>[,<nodo2>])
Parámetros | |||
---|---|---|---|
# | Parámetro | Descripción | Valor por defecto |
1 | grafo | Diccionario válido de grafo | |
2 | nodo1 | Nodo inicial del camino, dado por índice o etiqueta | |
3 | nodo2 | Nodo final del camino, dado por índice o etiqueta. Si no se especifica, se obtiene el camino de nodo1 a los demás nodos |
∅ |
Valor devuelto
camino
y distancia
Ejemplos
gr_nuevo([[inf,3,1,inf,inf,inf,inf,inf],[3,inf,inf,1,inf,inf,5,inf],[1,inf,inf,2,inf,5,inf,inf],[inf,1,2,inf,4,2,inf,inf],[inf,inf,inf,4,inf,inf,2,1],[inf,inf,5,2,inf,inf,inf,3],[inf,5,inf,inf,2,inf,inf,inf],[inf,inf,inf,inf,1,3,inf,inf]],['A','B','C','D','E','F','G','H'],falso,verdadero)
Salida en JMEScriptGUI con visor de grafos v0.1:
gr_dijkstra(gr_nuevo([[inf,3,1,inf,inf,inf,inf,inf],[3,inf,inf,1,inf,inf,5,inf],[1,inf,inf,2,inf,5,inf,inf],[inf,1,2,inf,4,2,inf,inf],[inf,inf,inf,4,inf,inf,2,1],[inf,inf,5,2,inf,inf,inf,3],[inf,5,inf,inf,2,inf,inf,inf],[inf,inf,inf,inf,1,3,inf,inf]],['A','B','C','D','E','F','G','H'],falso,verdadero),0,4)
Diccionario: { 'camino': [0,2,3,4] 'distancia': 7 }
Camino y distancia de todos los nodos al 'H' (7):gr_dijkstra(gr_nuevo([[inf,3,1,inf,inf,inf,inf,inf],[3,inf,inf,1,inf,inf,5,inf],[1,inf,inf,2,inf,5,inf,inf],[inf,1,2,inf,4,2,inf,inf],[inf,inf,inf,4,inf,inf,2,1],[inf,inf,5,2,inf,inf,inf,3],[inf,5,inf,inf,2,inf,inf,inf],[inf,inf,inf,inf,1,3,inf,inf]],['A','B','C','D','E','F','G','H'],falso,verdadero),'H')
VectorEvaluado: [{'camino'=[7,4,3,2,0], 'distancia'=8}, {'camino'=[7,4,3,1], 'distancia'=6}, {'camino'=[7,4,3,2], 'distancia'=7}, {'camino'=[7,4,3], 'distancia'=5}, {'camino'=[7,4], 'distancia'=1}, {'camino'=[7,5], 'distancia'=3}, {'camino'=[7,4,6], 'distancia'=3}, {'camino'=[7], 'distancia'=0}]
gr_nuevo([[inf,7,inf,inf,1],[inf,inf,inf,8,9],[5,2,inf,inf,inf],[1,inf,3,inf,inf],[inf,inf,7,2,inf]],verdadero,verdadero)
Salida en JMEScriptGUI con visor de grafos v0.1:
gr_dijkstra(gr_nuevo([[inf,7,inf,inf,1],[inf,inf,inf,8,9],[5,2,inf,inf,inf],[1,inf,3,inf,inf],[inf,inf,7,2,inf]],verdadero,verdadero),'v1','v2')
Diccionario: { 'camino': [1,3,2] 'distancia': 11 }
Camino y distancia de todos los nodos al 4:gr_dijkstra(gr_nuevo([[inf,7,inf,inf,1],[inf,inf,inf,8,9],[5,2,inf,inf,inf],[1,inf,3,inf,inf],[inf,inf,7,2,inf]],verdadero,verdadero),4)
VectorEvaluado: [{'camino'=[4,3,0], 'distancia'=3}, {'camino'=[4,3,2,1], 'distancia'=7}, {'camino'=[4,3,2], 'distancia'=5}, {'camino'=[4,3], 'distancia'=2}, {'camino'=[4], 'distancia'=0}]
Véase también…
Desde / Última modificación
v0.6.2.0