Solving the List Coloring Problem through a Branch-and-Price algorithm
Mauro Lucci, Daniel Severin, Graciela Nasini
TL;DR
The paper advances the exact solution of the Weighted List Coloring Problem (WLCP) by formulating a branch-and-price algorithm (BP-LCol) based on a vertex-cover representation via stable sets. It introduces indistinguishable colors to reduce symmetry and enable two robust branching schemes—edge-based and color-based—while embedding a column-generation procedure that pricing MWSSP subproblems per color graph. A theoretical extension with dummy colors and a Hadamard-based big-$M$ argument facilitates initialization of the LR without a two-phase approach. Comprehensive computational experiments across random and benchmark instance sets demonstrate how problem structure drives the performance of the two branching strategies and validate BP-LCol as competitive with specialized GCP approaches, while also highlighting avenues for future improvements such as weight effects and column-generation enhancements.
Abstract
In this work, we present a branch-and-price algorithm to solve the weighted version of the List Coloring Problem, based on a vertex cover formulation by stable sets. This problem is interesting for its applications and also for the many other problems that it generalizes, including the well-known Graph Coloring Problem. With the introduction of the concept of indistinguishable colors, some theoretical results are presented which are later incorporated into the algorithm. We propose two branching strategies based on others for the Graph Coloring Problem, the first is an adaptation of the one used by Mehrotra and Trick in their pioneering branch-and-price algorithm, and the other is inspired by the one used by Méndez-Díaz and Zabala in their branch-and-cut algorithm. The rich structure of this problem makes both branching strategies robust. Extended computation experimentation on a wide variety of instances shows the effectiveness of this approach and evidences the different behaviors that the algorithm can have according to the structure of each type of instance.
