CglClique

Clique cuts from set packing structure

Clique cuts from set packing structure

Generates clique inequalities by finding maximal cliques in the conflict graph of binary variables. Two binaries conflict if they cannot both be 1 in any feasible solution.

Clique inequality: sum_{j in C} x_j <= 1 (or = 1 if equality)

Graph construction (frac_graph):

Two clique-finding methods:

  1. Star clique (do_star_clique):
    • Pick a center node, find all neighbors (star)
    • Enumerate maximal cliques in the star
    • SCL_MIN_DEGREE/MAX_DEGREE/MAX_XJ_MAX_DEG selection rules
  2. Row clique (do_row_clique):
    • Start from existing set packing row
    • Extend to larger clique using adjacent variables

Thresholds:

CglFakeClique (derived class):

Algorithm

Greedy Maximal Clique (greedy_maximal_clique): When candidate list exceeds threshold:

Greedily add highest-degree nodes until no more fit Fast but may miss maximum violated clique.

Complexity: $O(n² * d)$ for greedy approach

References:

  • Padberg (1973) - On the facial structure of set packing
  • Bron-Kerbosch (1973) - Algorithm for finding all cliques

See Also

Source

Header file: `src/CglClique/CglClique.hpp`