ocaml: phase 5.1 bipartite.ml baseline (7-node bipartite, 4 in color 0)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 26s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 26s
BFS-based 2-coloring of an undirected graph:
edges (undirected):
0-1 0-3 1-2 1-4 2-5 3-4 3-6 5-6
Partition: {0, 2, 4, 6} vs {1, 3, 5} (no odd cycles)
Returns count of color-0 vertices (4) on success, -1 on odd-cycle
detection.
Tests Queue-based BFS with a source-loop wrapper for disconnected
graphs, `1 - color.(u)` toggle, color-equality conflict check
on already-colored neighbors.
164 baseline programs total.
This commit is contained in:
39
lib/ocaml/baseline/bipartite.ml
Normal file
39
lib/ocaml/baseline/bipartite.ml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
let is_bipartite n adj =
|
||||||
|
let color = Array.make n (-1) in
|
||||||
|
let ok = ref true in
|
||||||
|
let q = Queue.create () in
|
||||||
|
for src = 0 to n - 1 do
|
||||||
|
if color.(src) = -1 then begin
|
||||||
|
color.(src) <- 0;
|
||||||
|
Queue.push src q;
|
||||||
|
while not (Queue.is_empty q) do
|
||||||
|
let u = Queue.pop q in
|
||||||
|
List.iter (fun v ->
|
||||||
|
if color.(v) = -1 then begin
|
||||||
|
color.(v) <- 1 - color.(u);
|
||||||
|
Queue.push v q
|
||||||
|
end else if color.(v) = color.(u) then
|
||||||
|
ok := false
|
||||||
|
) adj.(u)
|
||||||
|
done
|
||||||
|
end
|
||||||
|
done;
|
||||||
|
let zeros = ref 0 in
|
||||||
|
for i = 0 to n - 1 do
|
||||||
|
if color.(i) = 0 then zeros := !zeros + 1
|
||||||
|
done;
|
||||||
|
if !ok then !zeros else -1
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
let n = 7 in
|
||||||
|
let adj = [|
|
||||||
|
[1; 3];
|
||||||
|
[0; 2; 4];
|
||||||
|
[1; 5];
|
||||||
|
[0; 4; 6];
|
||||||
|
[1; 3];
|
||||||
|
[2; 6];
|
||||||
|
[3; 5]
|
||||||
|
|] in
|
||||||
|
is_bipartite n adj
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
"bisect.ml": 141,
|
"bisect.ml": 141,
|
||||||
"bigint_add.ml": 28,
|
"bigint_add.ml": 28,
|
||||||
"binary_heap.ml": 123456789,
|
"binary_heap.ml": 123456789,
|
||||||
|
"bipartite.ml": 4,
|
||||||
"bits.ml": 21,
|
"bits.ml": 21,
|
||||||
"balance.ml": 3,
|
"balance.ml": 3,
|
||||||
"base_n.ml": 17,
|
"base_n.ml": 17,
|
||||||
|
|||||||
@@ -407,6 +407,15 @@ _Newest first._
|
|||||||
binary search tree (`type 'a tree = Leaf | Node of 'a * 'a tree *
|
binary search tree (`type 'a tree = Leaf | Node of 'a * 'a tree *
|
||||||
'a tree`) with insert + in-order traversal. Tests parametric ADT,
|
'a tree`) with insert + in-order traversal. Tests parametric ADT,
|
||||||
recursive match, List.append, List.fold_left.
|
recursive match, List.append, List.fold_left.
|
||||||
|
- 2026-05-10 Phase 5.1 — bipartite.ml baseline (BFS 2-coloring on
|
||||||
|
7-node cycle-rich graph → bipartite with 4 vertices in color 0).
|
||||||
|
Edges: 0-1, 0-3, 1-2, 1-4, 2-5, 3-4, 3-6, 5-6. This forms a
|
||||||
|
bipartite graph with partition {0,2,4,6} vs {1,3,5}. Returns
|
||||||
|
count of color-0 vertices (4) on success, -1 on odd-cycle
|
||||||
|
detection. Tests Queue-based BFS with module-level state in a
|
||||||
|
loop over all sources (handles disconnected graphs), `1 - color.(u)`
|
||||||
|
binary toggle, color-equality conflict check. 164 baseline
|
||||||
|
programs total.
|
||||||
- 2026-05-10 Phase 5.1 — egg_drop.ml baseline (worst-case trials
|
- 2026-05-10 Phase 5.1 — egg_drop.ml baseline (worst-case trials
|
||||||
for 2 eggs, 36 floors = 8). Classic O(e·f²) DP: dp[e][f] = 1 +
|
for 2 eggs, 36 floors = 8). Classic O(e·f²) DP: dp[e][f] = 1 +
|
||||||
min over k of max(dp[e-1][k-1], dp[e][f-k]). Closed form via
|
min over k of max(dp[e-1][k-1], dp[e][f-k]). Closed form via
|
||||||
|
|||||||
Reference in New Issue
Block a user