Skip to content

Commit ce57220

Browse files
isPANNclaude
andcommitted
Fix missing canonical examples + bib keys (#1021 review)
Surfaced during structural review of #1021: - MaximumEdgeWeightedKClique has both i32 and f64 ReduceTo impls but only an i32 canonical example was registered; the example-db coverage test failed. Add an f64 spec mirroring the i32 instance. - MaximumCoKPlex has both i32 and One ReduceTo impls but only an i32 canonical example existed (also flagged by the coverage test). Add a One-weighted spec on the same C5 graph. - Paper cited `@ParkLeePark1996EWClique` and `@GouveiaMartins2015EWClique` but neither bib key existed. Add both entries to references.bib while keeping the original `@GouveiaMartins2015MEWC` entry that the problem-def section still cites. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 0289a9e commit ce57220

3 files changed

Lines changed: 70 additions & 22 deletions

File tree

docs/paper/references.bib

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1964,6 +1964,28 @@ @article{GouveiaMartins2015MEWC
19641964
doi = {10.1007/s13675-014-0028-1}
19651965
}
19661966

1967+
@article{ParkLeePark1996EWClique,
1968+
author = {Kyungchul Park and Kyungsik Lee and Sungsoo Park},
1969+
title = {An extended formulation approach to the edge-weighted maximal clique problem},
1970+
journal = {European Journal of Operational Research},
1971+
volume = {95},
1972+
number = {3},
1973+
pages = {671--682},
1974+
year = {1996},
1975+
doi = {10.1016/0377-2217(95)00299-5}
1976+
}
1977+
1978+
@article{GouveiaMartins2015EWClique,
1979+
author = {Luis Gouveia and Pedro Martins},
1980+
title = {Solving the maximum edge-weight clique problem in sparse graphs with compact formulations},
1981+
journal = {EURO Journal on Computational Optimization},
1982+
volume = {3},
1983+
number = {1},
1984+
pages = {1--30},
1985+
year = {2015},
1986+
doi = {10.1007/s13675-014-0028-1}
1987+
}
1988+
19671989
@article{HuntingFaigleKern2001,
19681990
author = {Marcel Hunting and Ulrich Faigle and Walter Kern},
19691991
title = {A {Lagrangian} relaxation approach to the edge-weighted clique problem},

src/rules/maximumcokplex_ilp.rs

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -111,17 +111,30 @@ impl ReduceTo<ILP<bool>> for MaximumCoKPlex<SimpleGraph, One, KN> {
111111

112112
#[cfg(feature = "example-db")]
113113
pub(crate) fn canonical_rule_example_specs() -> Vec<crate::example_db::specs::RuleExampleSpec> {
114-
vec![crate::example_db::specs::RuleExampleSpec {
115-
id: "maximumcokplex_to_ilp",
116-
build: || {
117-
let source = MaximumCoKPlex::<_, i32, KN>::with_k(
118-
SimpleGraph::new(5, vec![(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)]),
119-
vec![5, 1, 4, 1, 3],
120-
2,
121-
);
122-
crate::example_db::specs::rule_example_via_ilp::<_, bool>(source)
114+
vec![
115+
crate::example_db::specs::RuleExampleSpec {
116+
id: "maximumcokplex_i32_to_ilp",
117+
build: || {
118+
let source = MaximumCoKPlex::<_, i32, KN>::with_k(
119+
SimpleGraph::new(5, vec![(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)]),
120+
vec![5, 1, 4, 1, 3],
121+
2,
122+
);
123+
crate::example_db::specs::rule_example_via_ilp::<_, bool>(source)
124+
},
123125
},
124-
}]
126+
crate::example_db::specs::RuleExampleSpec {
127+
id: "maximumcokplex_one_to_ilp",
128+
build: || {
129+
let source = MaximumCoKPlex::<_, One, KN>::with_k(
130+
SimpleGraph::new(5, vec![(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)]),
131+
vec![One; 5],
132+
2,
133+
);
134+
crate::example_db::specs::rule_example_via_ilp::<_, bool>(source)
135+
},
136+
},
137+
]
125138
}
126139

127140
#[cfg(test)]

src/rules/maximumedgeweightedkclique_ilp.rs

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -151,19 +151,32 @@ impl ReduceTo<ILP<bool>> for MaximumEdgeWeightedKClique<f64> {
151151
#[cfg(feature = "example-db")]
152152
pub(crate) fn canonical_rule_example_specs() -> Vec<crate::example_db::specs::RuleExampleSpec> {
153153
use crate::topology::SimpleGraph;
154-
vec![crate::example_db::specs::RuleExampleSpec {
155-
id: "maximumedgeweightedkclique_to_ilp",
156-
build: || {
157-
// Canonical issue #1020 instance: 4 vertices, 5 edges, k = 3.
158-
// Optimum induced weight is 5 + 4 + (-1) = 8 on clique {0, 1, 2}.
159-
let source = MaximumEdgeWeightedKClique::<i32>::new(
160-
SimpleGraph::new(4, vec![(0, 1), (0, 2), (1, 2), (0, 3), (1, 3)]),
161-
vec![5, 4, -1, 1, 0],
162-
3,
163-
);
164-
crate::example_db::specs::rule_example_via_ilp::<_, bool>(source)
154+
vec![
155+
crate::example_db::specs::RuleExampleSpec {
156+
id: "maximumedgeweightedkclique_i32_to_ilp",
157+
build: || {
158+
// Canonical issue #1020 instance: 4 vertices, 5 edges, k = 3.
159+
// Optimum induced weight is 5 + 4 + (-1) = 8 on clique {0, 1, 2}.
160+
let source = MaximumEdgeWeightedKClique::<i32>::new(
161+
SimpleGraph::new(4, vec![(0, 1), (0, 2), (1, 2), (0, 3), (1, 3)]),
162+
vec![5, 4, -1, 1, 0],
163+
3,
164+
);
165+
crate::example_db::specs::rule_example_via_ilp::<_, bool>(source)
166+
},
165167
},
166-
}]
168+
crate::example_db::specs::RuleExampleSpec {
169+
id: "maximumedgeweightedkclique_f64_to_ilp",
170+
build: || {
171+
let source = MaximumEdgeWeightedKClique::<f64>::new(
172+
SimpleGraph::new(4, vec![(0, 1), (0, 2), (1, 2), (0, 3), (1, 3)]),
173+
vec![5.0, 4.0, -1.0, 1.0, 0.0],
174+
3,
175+
);
176+
crate::example_db::specs::rule_example_via_ilp::<_, bool>(source)
177+
},
178+
},
179+
]
167180
}
168181

169182
#[cfg(test)]

0 commit comments

Comments
 (0)