Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #640 +/- ##
=======================================
Coverage 96.77% 96.77%
=======================================
Files 226 226
Lines 29919 29919
=======================================
Hits 28955 28955
Misses 964 964 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Implementation SummaryChanges
Deviations from Plan
Open Questions
|
There was a problem hiding this comment.
Pull request overview
Adds the BiconnectivityAugmentation satisfaction problem model (weighted candidate edges + budget) to the library, wires it into the public API and CLI, and updates generated docs/metadata accordingly.
Changes:
- Introduces
BiconnectivityAugmentation<G, W>model with evaluation via biconnectivity (articulation-point) check. - Integrates the model across exports (
models,prelude), CLI alias/dispatch/create flow, and adds unit/integration/CLI tests. - Regenerates documentation artifacts (
problem_schemas.json,reduction_graph.json) and updates the paper’s problem definitions.
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
src/models/graph/biconnectivity_augmentation.rs |
New model implementation + schema inventory entry + variants + internal biconnectivity check |
src/models/graph/mod.rs |
Registers/re-exports the new graph model |
src/models/mod.rs |
Re-exports the new model at the top-level models module |
src/lib.rs |
Exposes the model via prelude |
tests/suites/integration.rs |
Adds end-to-end solvability integration test for the new model |
src/unit_tests/trait_consistency.rs |
Adds trait consistency coverage for the new model |
src/unit_tests/models/graph/biconnectivity_augmentation.rs |
Adds focused unit tests for creation/evaluation/serialization/solver behavior |
problemreductions-cli/src/problem_name.rs |
Adds CLI alias resolution for the new problem |
problemreductions-cli/src/dispatch.rs |
Adds CLI load/serialize dispatch support + tests |
problemreductions-cli/src/commands/create.rs |
Adds pred create support for potential edges + budget; updates graph parsing for optional --num-vertices; adds tests |
problemreductions-cli/src/cli.rs |
Adds CLI flags --potential-edges and --budget, and help text/examples |
docs/src/reductions/problem_schemas.json |
Updates generated problem schema metadata |
docs/src/reductions/reduction_graph.json |
Updates generated reduction graph metadata |
docs/paper/reductions.typ |
Adds paper definition/description for BiconnectivityAugmentation |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| let output_path = std::env::temp_dir().join("pred_test_create_biconnectivity.json"); | ||
| let out = OutputConfig { | ||
| output: Some(output_path.clone()), | ||
| quiet: true, | ||
| json: false, | ||
| auto_json: false, | ||
| }; |
| let output_path = | ||
| std::env::temp_dir().join("pred_test_create_biconnectivity_isolated.json"); | ||
| let out = OutputConfig { | ||
| output: Some(output_path.clone()), | ||
| quiet: true, | ||
| json: false, | ||
| auto_json: false, | ||
| }; |
| let data = json!({ | ||
| "graph": { | ||
| "inner": { | ||
| "nodes": [null, null, null, null], | ||
| "node_holes": [], | ||
| "edge_property": "undirected", | ||
| "edges": [[0, 1, null], [1, 2, null], [2, 3, null]] | ||
| } | ||
| }, | ||
| "potential_weights": [[0, 2, 3], [0, 3, 4], [1, 3, 2]], | ||
| "budget": 5 | ||
| }); | ||
|
|
|
This PR has significant merge conflicts with main (9 conflicting files). Moving back to Ready for rework. Conflicting files:
The PR needs to be rebased on current main and conflicts resolved before it can proceed through the review pipeline. |
Summary
Add the BiconnectivityAugmentation problem model — a satisfaction problem (Metric = bool) from Garey & Johnson (A2 ND18). Given an undirected graph with weighted potential edges and a budget B, determine if a subset of edges with total weight <= B can be added to make the graph biconnected.
Fixes #230