Sampling Colorings Close to the Maximum Degree: Non-Markovian Coupling and Local Uniformity
Abstract
Sampling graph colorings via local Markov chains is a central problem in approximate counting and Markov chain Monte Carlo (MCMC). We address the problem of sampling a random -coloring of a graph with maximum degree . The simplest algorithmic approach is to establish rapid mixing of the single-site update chain known as the Metropolis Glauber dynamics, which at each step chooses a random vertex and proposes a random color , recoloring to if the resulting coloring remains proper. It is a long-standing open problem to prove that the Glauber dynamics has polynomial mixing time on all graphs whenever . We prove that for every and all , if then the Glauber dynamics has optimal mixing time of on any graph of girth and maximum degree . Our approach builds on a non-Markovian coupling introduced by Hayes and Vigoda (2003) for the large-degree regime , in which updates at time may depend on and modify proposed updates at future times. A complete analysis of this framework requires resolving substantial technical obstacles that remain in the original argument, and extending it to the constant-degree regime introduces further difficulties, since non-Markovian updates may fail with constant probability. We overcome these obstacles by developing and analyzing a refined local non-Markovian coupling, and by establishing new local-uniformity results for the Metropolis dynamics, extending prior results for the heat-bath chain due to Hayes (2013). Together, these ingredients provide a complete analysis of the non-Markovian coupling framework in the large-degree regime, while simultaneously strengthening it substantially to obtain optimal mixing all the way down to the constant-degree setting.
Keywords
Cite
@article{arxiv.2604.11938,
title = {Sampling Colorings Close to the Maximum Degree: Non-Markovian Coupling and Local Uniformity},
author = {Vishesh Jain and Clayton Mizgerd and Eric Vigoda},
journal= {arXiv preprint arXiv:2604.11938},
year = {2026}
}