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

@@ -407,6 +407,14 @@ _Newest first._
binary search tree (`type 'a tree = Leaf | Node of 'a * 'a tree *
'a tree`) with insert + in-order traversal. Tests parametric ADT,
recursive match, List.append, List.fold_left.
- 2026-05-10 Phase 5.1 — floyd_warshall.ml baseline (all-pairs
shortest path on 4-node weighted graph, dist 0→3 = 9). Standard
O(n³) DP: for each intermediate vertex k, relax all (i,j) pairs.
Uses a 2D array implemented as `Array.init n (fun _ -> Array.make
n inf)`, exercising nested array indexing `g.(i).(j)`. Direct
edge 0→3 weighs 10; via 0→1→2→3 = 5+3+1 = 9. Tests 2D array
construction with closures, triple-nested for-loops, nested
`.(i).(j)<-` mutation. 148 baseline programs total.
- 2026-05-10 Phase 5.1 — mst_kruskal.ml baseline (Kruskal MST on
5-node, 6-edge graph → MST weight 11). Sort edges by weight,
greedily add edges whose endpoints are in different components