Skip to content

Record a sampled elimination's bag before the vertex leaves the graph - #64

Merged
guyvdbroeck merged 3 commits into
mainfrom
build-td-deadline-rank
Sep 6, 2026
Merged

Record a sampled elimination's bag before the vertex leaves the graph#64
guyvdbroeck merged 3 commits into
mainfrom
build-td-deadline-rank

Conversation

@guyvdbroeck

@guyvdbroeck guyvdbroeck commented Sep 6, 2026

Copy link
Copy Markdown
Member

A sampled min-fill or fill-degree elimination stopped by the hard deadline while repairing its neighbours' scores has already removed the vertex but not recorded its bag. The engine's residual bag covers only the vertices still in the graph, and the portfolio does not validate what it returns, so the decomposition reaches the caller with that vertex in no bag.

  • eliminate_sampled_fill_based records the bag as soon as it is read, before the elimination and before any deadline check in the repair. One statement moved.
  • A test drives the path at an expired deadline and validates the result. Without the fix it trips the build_td rank assertion in a debug build and fails validate with "vertex 509 is in no bag" in a release build (2,000-vertex chorded ring).
  • No API or default change; only decompositions completed at the deadline differ, and those were invalid.

Ten-second table, 9,413 graphs, both rows measured on the same boxes:

build nontrivial exact best within +1 within +4
main 9,350 8,680 9,106 9,231
this branch 9,350 8,683 9,111 9,231

Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com

guyvdbroeck and others added 2 commits September 6, 2026 00:28
Sampled min-fill takes a vertex out of the graph and then repairs the fill
scores of its neighbours, reading the hard deadline as it goes. A run stopped
in that repair had already removed the vertex but had not recorded its bag,
and the engine's residual bag covers only what is still in the graph, so the
vertex ended up in no bag at all.

A debug build caught it in build_td as a rank past the bag count. A release
build has no such check and returned the decomposition: on a 2,000-vertex
chorded ring stopped at an expired deadline it fails validation with "vertex
509 is in no bag".

The bag is now recorded as soon as it is read, before the elimination and
before anything can stop the run.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@guyvdbroeck
guyvdbroeck marked this pull request as ready for review September 6, 2026 09:10
The comparison table takes main's row until the merged binary is measured.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@guyvdbroeck
guyvdbroeck merged commit 3ffc30c into main Sep 6, 2026
15 checks passed
@guyvdbroeck
guyvdbroeck deleted the build-td-deadline-rank branch September 6, 2026 18:55
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