Skip to content

Support-type bound: fast exact vertex enumeration - #50

Merged
Autoplectic merged 4 commits into
mainfrom
support-bound-speed
Nov 12, 2026
Merged

Autoplectic merged 4 commits into
mainfrom
support-bound-speed

Conversation

@Autoplectic

Copy link
Copy Markdown
Member

Summary

_polytope_vertices tried every set of n - 1 rows of the support-type polytope (n + 2(2^n - 1) rows) in Fraction arithmetic. For a 4-state survey support with 6 maximal rectangles that is C(132, 5) ≈ 3.4e8 exact solves: hours, and it is why most 4-state survey runs hit their hard timeout before any time budget could act.

Now:

  1. _irredundant drops rows the remaining rows imply. A row is dropped only when an exact LP dual bound (certificates.certified_lp_minimum) proves its maximum is at most its right-hand side; nonnegativity rows are always kept. 261 rows -> 40 for 7 rectangles.
  2. Candidate active sets are screened in batched numpy (a scale-free determinant test for nonsingularity, then feasibility to 1e-7). Every true vertex is exactly feasible on a nonsingular set, so it passes; each candidate is then solved and checked exactly as before.

Timings: 6 rectangles, hours -> 0.3 s; 7 rectangles, 7 s. (2, inf): G = 2 - 3/8 log2 3 and the certified flow bound 1.49702 are unchanged.

Test plan

  • New tests/test_generator_bounds.py: hypothesis test that the pruned enumeration equals brute force on random sparse 3x3 supports; a 7-rectangle staircase support runs in < 60 s.
  • Pruned and brute-force vertex sets are identical on all 16 survey supports with 2–4 rectangles.
  • Coupled-generator, phase-bound and pipeline suites; ruff; ty.

Made with Cursor

Ryan James and others added 4 commits November 11, 2026 12:59
… vertex enumeration

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	CHANGELOG.md
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	CHANGELOG.md
@Autoplectic
Autoplectic merged commit f271826 into main Nov 12, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant