feat(solver): graph decomposition for cluster-by-cluster solving (phase 3) #33
Reference in New Issue
Block a user
Delete Branch "feat/phase3-graph-decomposition"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Add a Python decomposition layer using NetworkX that partitions the constraint graph into biconnected components (rigid clusters), orders them via a block-cut tree, and solves each cluster independently. Articulation-point bodies propagate as boundary conditions between clusters.
New: kindred_solver/decompose.py
Modified
Performance
For k clusters of ~n/k params each, total cost drops from O(n^3) to O(n^3/k^2).
Tests
220 passing (up from 207). New tests cover graph construction, biconnected decomposition, solve ordering, cluster solve vs monolithic, boundary propagation, pebble game classification, and large assemblies (20+ bodies).