8 research outputs found
Efficient computation of middle levels Gray codes
For any integer a middle levels Gray code is a cyclic listing of
all bitstrings of length that have either or 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 has been
the subject of intensive research during the last 30 years, and has been
answered affirmatively only recently [T. M\"utze. 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 , which is
on average per bitstring provided that
A constant-time algorithm for middle levels Gray codes
For any integer a middle levels Gray code is a cyclic listing of
all -element and -element subsets of such that
any two consecutive subsets differ in adding or removing a single element. The
question whether such a Gray code exists for any has been the subject
of intensive research during the last 30 years, and has been answered
affirmatively only recently [T. M\"utze. Proof of the middle levels conjecture.
Proc. London Math. Soc., 112(4):677--713, 2016]. In a follow-up paper [T.
M\"utze and J. Nummenpalo. An efficient algorithm for computing a middle levels
Gray code. To appear in ACM Transactions on Algorithms, 2018] this existence
proof was turned into an algorithm that computes each new set in the Gray code
in time 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 on average, and the required space is
Trimming and Gluing Gray Codes
We consider the algorithmic problem of generating each subset of [n]:={1,2,...,n} whose size is in some interval [k,l], 0 <= k <= l <= n, exactly once (cyclically) by repeatedly adding or removing a single element, or by exchanging a single element. For k=0 and l=n this is the classical problem of generating all 2^n subsets of [n] by element additions/removals, and for k=l this is the classical problem of generating all n over k subsets of [n] by element exchanges. We prove the existence of such cyclic minimum-change enumerations for a large range of values n, k, and l, improving upon and generalizing several previous results. For all these existential results we provide optimal algorithms to compute the corresponding Gray codes in constant time O(1) per generated set and space O(n). Rephrased in terms of graph theory, our results establish the existence of (almost) Hamilton cycles in the subgraph of the n-dimensional cube Q_n induced by all levels [k,l]. We reduce all remaining open cases to a generalized version of the middle levels conjecture, which asserts that the subgraph of Q_(2k+1) induced by all levels [k-c,k+1+c], c in {0, 1, ...k}, has a Hamilton cycle. We also prove an approximate version of this conjecture, showing that this graph has a cycle that visits a (1-o(1))-fraction of all vertices
A constant-time algorithm for middle levels Gray codes
For any integer~, a \emph{middle levels Gray code} is a cyclic listing of all -element and -element subsets of such that any two consecutive sets differ in adding or removing a single element.
The question whether such a Gray code exists for any~ has been the subject of intensive research during the last 30 years, and has been answered affirmatively only recently [T.~M\"utze. Proof of the middle levels conjecture. \textit{Proc. London Math. Soc.}, 112(4):677--713, 2016].
In a follow-up paper [T.~M\"utze and J.~Nummenpalo. An efficient algorithm for computing a middle levels Gray code. \textit{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 time~\cO(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~\cO(1), and the required space is~\cO(n)