English

Faster Edge Coloring by Partition Sieving

Data Structures and Algorithms 2025-01-13 v1

Abstract

In the Edge Coloring problem, we are given an undirected graph GG with nn vertices and mm edges, and are tasked with finding the smallest positive integer kk so that the edges of GG can be assigned kk colors in such a way that no two edges incident to the same vertex are assigned the same color. Edge Coloring is a classic NP-hard problem, and so significant research has gone into designing fast exponential-time algorithms for solving Edge Coloring and its variants exactly. Prior work showed that Edge Coloring can be solved in 2mpoly(n)2^m\text{poly}(n) time and polynomial space, and in graphs with average degree dd in 2(1εd)mpoly(n)2^{(1-\varepsilon_d)m}\text{poly}(n) time and exponential space, where εd=(1/d)Θ(d3)\varepsilon_d = (1/d)^{\Theta(d^3)}. We present an algorithm that solves Edge Coloring in 2m3n/5poly(n)2^{m-3n/5}\text{poly}(n) time and polynomial space. Our result is the first algorithm for this problem which simultaneously runs in faster than 2mpoly(m)2^m\text{poly}(m) time and uses only polynomial space. In graphs of average degree dd, our algorithm runs in 2(16/(5d))mpoly(n)2^{(1-6/(5d))m}\text{poly}(n) time, which has far better dependence in dd than previous results. We also generalize our algorithm to solve a problem known as List Edge Coloring, where each edge ee in the input graph comes with a list Le{1,,k}L_e\subseteq\left\{1, \dots, k\right\} of colors, and we must determine whether we can assign each edge a color from its list so that no two edges incident to the same vertex receive the same color. We solve this problem in 2(16/(5k))mpoly(n)2^{(1-6/(5k))m}\text{poly}(n) time and polynomial space. The previous best algorithm for List Edge Coloring took 2mpoly(n)2^m\text{poly}(n) time and space.

Keywords

Cite

@article{arxiv.2501.05570,
  title  = {Faster Edge Coloring by Partition Sieving},
  author = {Shyan Akmal and Tomohiro Koana},
  journal= {arXiv preprint arXiv:2501.05570},
  year   = {2025}
}
R2 v1 2026-06-28T21:01:58.211Z