Efficient Computation of Middle Levels Gray Codes
Torsten Mütze, Jerri Nummenpalo · ACM Transactions on Algorithms · 2018
For any integer n ≥ 1, a middle levels Gray code is a cyclic listing of all bitstrings of length 2 n +1 that have either n or n +1 entries equal to 1 such that any two consecutive bitstrings in the list differ in exactly one bit. The question whether such a Gray code exists for every n ≥ 1 has been the subject of intensive research during the past 30 years and has been answered affirmatively only recently [T. Mütze. Proof of the middle levels conjecture. Proc. London Math. Soc. , 112(4):677--713, 2016]. In this work, we provide the first efficient algorithm to compute a middle levels Gray code. For a given bitstring, our algorithm computes the next ℓ bitstrings in the Gray code in time O ( n ℓ (1+ n /ℓ)), which is O ( n ) on average per bitstring provided that ℓ = Ω ( n ).