Floyd-Warshall algorithm: Difference between revisions
Content deleted Content added
jq |
→{{header|jq}}: tweaks for speed and brevity |
||
Line 635: | Line 635: | ||
<lang jq>def fwi: |
<lang jq>def fwi: |
||
. as $weights |
. as $weights |
||
| keys_unsorted as $nodes |
|||
# construct the dist matrix |
# construct the dist matrix |
||
| reduce |
| reduce $nodes[] as $u ({}; |
||
reduce |
reduce $nodes[] as $v (.; |
||
.[$u][$v] = infinite)) |
.[$u][$v] = infinite)) |
||
| reduce |
| reduce $nodes[] as $u (.; .[$u][$u] = 0 ) |
||
| reduce |
| reduce $nodes[] as $u (.; |
||
reduce ($weights[$u]| |
reduce ($weights[$u]|keys_unsorted[]) as $v (.; |
||
.[$u][$v] = $weights[$u][$v] )) |
.[$u][$v] = $weights[$u][$v] )) |
||
| reduce |
| reduce $nodes[] as $w (.; |
||
reduce |
reduce $nodes[] as $u (.; |
||
reduce |
reduce $nodes[] as $v (.; |
||
(.[$u][$w] + .[$w][$v]) as $x |
(.[$u][$w] + .[$w][$v]) as $x |
||
| if .[$u][$v] > $x then .[$u][$v] = $x |
| if .[$u][$v] > $x then .[$u][$v] = $x |
||
else . end ))) |
else . end ))) |
||
; |
|||
weights | fwi</lang> |
weights | fwi</lang> |