Skip to content

Compare every baseline at the setting its documentation recommends - #53

Merged
guyvdbroeck merged 1 commit into
mainfrom
fair-comparison-table
Sep 4, 2026
Merged

Compare every baseline at the setting its documentation recommends#53
guyvdbroeck merged 1 commit into
mainfrom
fair-comparison-table

Conversation

@guyvdbroeck

Copy link
Copy Markdown
Member

The README comparison table measured every solver over 9,413 selected graphs
at ten seconds, but HTD was the only entry running at its stock invocation:
a single min-fill pass that ends long before the ten seconds are up, while
the other anytime solvers searched to the end of them. That is not a
comparison of what HTD can do in ten seconds. It has been rerun at
--opt width --iterations 0 --strategy challenge, the setting its own
documentation recommends for the smallest width inside a fixed time limit,
and this pull request replaces the table with that run. The paragraph under
the table gains three sentences: that each solver runs at its recommended
setting, naming HTD's; that the anytime solvers search to the limit and
report whatever they hold when the harness stops them; and that goatd stops
itself at its hard cutoff just under the limit. Nothing outside README.md
changes.

The rows that moved, exact-best count and its share of the 9,413:

Solver Exact best, before Exact best, after
goatd portfolio 8,745 (92.9%) 8,205 (87.2%)
HTD 328 (3.5%) 2,460 (26.1%)
Jdrasil heuristic 1,273 (13.5%) 1,071 (11.4%)
Tamaki PACE 2017 818 (8.7%) 783 (8.3%)
FlowCutter PACE 2017 320 (3.4%) 284 (3.0%)
NetworkX min-degree 138 (1.5%) 135 (1.4%)
NetworkX min-fill 65 (0.7%) 64 (0.7%)
Arboretum heuristic 35 (0.4%) 32 (0.3%)

HTD was rerun over both shards of the corpus under the same lane conditions
as the rest of the field: the same graphs, the same ten-second limit on one
pinned CPU with the same memory cap, the same seed, and the same validator on
the output. Its own numbers rise on every column, nontrivial decompositions
from 9,139 to 9,203 and exact best from 328 to 2,460, part width and part
coverage, since the challenge strategy banks a decomposition before it starts
searching instead of printing nothing until a min-fill pass completes. Every
other row falls, because "Exact best" counts the smallest width seen among
the displayed solvers and a stronger HTD supplies a smaller one on graphs
where it now wins. goatd's within +1 and within +4 columns move for the same
reason. No solver other than HTD was rerun, and no solver code changed.

Pull requests #50, #51 and #52 are open and each carries its own goatd row,
so this table needs one more refresh after whichever of them merges first.

HTD ran at its stock invocation, a single min-fill pass that ends long
before the ten seconds are up, while the other anytime solvers searched to
the end of them. It has been rerun at
`--opt width --iterations 0 --strategy challenge`, the setting its
documentation recommends for the smallest width inside a fixed time limit,
and the table holds that run. HTD gains on every column. Because "Exact
best" is the smallest width seen among the displayed solvers, a stronger HTD
lowers the exact-best count of every other row, goatd's from 8,745 to 8,205.

The paragraph under the table now states how the solvers are run: at their
recommended settings, searching to the time limit, with goatd stopping at
its own hard cutoff just under it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@guyvdbroeck
guyvdbroeck marked this pull request as ready for review September 4, 2026 07:20
@guyvdbroeck
guyvdbroeck merged commit b2cdd44 into main Sep 4, 2026
7 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