Charles Explorer logo
🇬🇧

A constant-time algorithm for middle levels Gray codes

Publication at Faculty of Mathematics and Physics |
2020

Abstract

For any integer n >= 1, a middle levels Gray code is a cyclic listing of all n-element and (n + 1)-element subsets of {1, 2,..., 2n + 1} such that any two consecutive sets differ in adding or removing a single element. The question whether such a Gray code exists for any n = 1 has been the subject of intensive research during the last 30 years, and has been answered affirmatively only recently [T.

Mutze. Proof of the middle levels conjecture.

Proc. London Math.

Soc., 112(4):677-713, 2016]. In a follow-up paper [T.

Mutze and J. Nummenpalo.

An efficient algorithm for computing a middle levels Gray code. ACM Trans.

Algorithms, 14(2):29 pp., 2018] this existence proof was turned into an algorithm that computes each new set in the Gray code in timeO(n) on average. In this work we present an algorithm for computing a middle levels Gray code in optimal time and space: each new set is generated in time O(1) on average, and the required space is O(n).