ocaml: phase 5.1 floyd_warshall.ml baseline (4-node APSP, dist(0,3)=9)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 53s

Floyd-Warshall all-pairs shortest path with triple-nested for-loop:

  for k = 0 to n - 1 do
    for i = 0 to n - 1 do
      for j = 0 to n - 1 do
        if d.(i).(k) + d.(k).(j) < d.(i).(j) then
          d.(i).(j) <- d.(i).(k) + d.(k).(j)
      done
    done
  done

Graph (4 nodes, directed):
  0->1 weight 5, 0->3 weight 10, 1->2 weight 3, 2->3 weight 1

Direct edge 0->3 = 10, but path 0->1->2->3 = 5+3+1 = 9.

Tests 2D array via Array.init with closure, nested .(i).(j) read
+ write, triple-nested for, in-place mutation under aliasing.

148 baseline programs total.
This commit is contained in:
2026-05-10 05:41:02 +00:00
parent 99f321f532
commit 526ffbb5f0
3 changed files with 35 additions and 0 deletions

View File

@@ -70,6 +70,7 @@
"fizz_classifier.ml": 540,
"fizzbuzz.ml": 57,
"flatten_tree.ml": 28,
"floyd_warshall.ml": 9,
"lis.ml": 6,
"list_ops.ml": 30,
"luhn.ml": 2,

View File

@@ -0,0 +1,26 @@
let inf_int = 1000000
let floyd n graph =
let d = Array.init n (fun i ->
Array.init n (fun j -> graph.(i).(j))) in
for k = 0 to n - 1 do
for i = 0 to n - 1 do
for j = 0 to n - 1 do
if d.(i).(k) + d.(k).(j) < d.(i).(j) then
d.(i).(j) <- d.(i).(k) + d.(k).(j)
done
done
done;
d
;;
let n = 4 in
let g = Array.init n (fun _ -> Array.make n inf_int) in
for i = 0 to n - 1 do g.(i).(i) <- 0 done;
g.(0).(1) <- 5;
g.(0).(3) <- 10;
g.(1).(2) <- 3;
g.(2).(3) <- 1;
let d = floyd n g in
d.(0).(3)