A new combinatorial Gray code for balanced combinations
A new combinatorial Gray code for balanced combinations Torsten Mütze joint work with Christoph Standke, Veit Wiechert (TU Berlin)
Balanced combinations • balanced combination : = a -element subset of • Example: • bitstring representation: • Dyck path representation: flaws = 3
Balanced combinations flaws = 0
Balanced combinations flaws =
Balanced combinations total number = flaws the k-th Catalan number
The Chung-Feller theorem : = set of all Dyck paths with 2 k steps and e flaws Theorem [Chung, Feller 49]: For any we have. Various alternative proofs (combinatorial, analytic, …) and generalizations appeared over the years: [Hodges 55], [Narayana 67], [Woan 01], [Eu, Fu, Yeh 05], [Chen 08], [Ma, Yeh 09], [Ruckavicka 11], …
Proving Chung-Feller Establish a bijection [Hodges 55], [Chen 08] (#flaws increases by 1) Note: and may differ in many positions Is there a simpler proof?
Our results Theorem: There is a bijection such that and differ in only two positions.
Our results Theorem: There is a bijection such that and differ in only two positions. flaws
Our results ‚simple and explicit‘ Theorem: There is a bijection such that and differ in only two positions. ‚simple‘ Theorem: There is an algorithm which for given computes each Dyck path in in time.
Applications • Hamilton cycles in certain vertex-transitive graphs: the odd graph and the middle levels graph • More generally: For which values of do they have a -factor? • Only one general positive answer known: ‚middle levels conjecture‘ [M. • 14] This work: two more positive answers Theorem: The odd graph has a -factor. Theorem: The middle levels graph has a -factor. # cycles = (Catalan number)
Combinatorial Gray codes • Goal: Generate all objects in a combinatorial class (permutations, subsets, strings, trees, Dyck paths, etc. ) such that consecutive objects differ only ‚a little bit‘ • Ideally: Generate each new object in time • Fundamental task in combinatorial algorithms [Nijenhuis, Wilf 75] [Knuth TAOCP Vol. 4, 11]
Combinatorial Gray codes • Examples: • Generate all permutations of such that consecutive permutations differ only in one transposition [Johnson 63], [Trotter 62], [Sedgewick 77] • Generate all subsets of such that consecutive sets differ in adding/removing one element [Gray 53], [Tootill 56], [Bitner, Ehrlich, Reingold 76], [Wagner, West 91], [Savage, Winkler 95], [Bhat, Savage 96] • Generate all many -element subsets of s. t. consecutive sets differ in exchanging one element [Tang, Liu 73], [Bitner, Ehrlich, Reingold 76], [Eades, Hickey, Read 84], [Eades, Mc. Kay 84], [Ruskey 88], [Chase 89], [Jenkyns, Mc. Carthy 95], [Ruskey, Williams 09]
Combinatorial Gray codes • Examples: Special case : balanced combinations {1, 4, 5 } (1, 0, 0, 1, 1, 0) • Constant-time Generate all generation many -element [Ehrlich 73], subsets [Bitner, of. Ehrlich, Reingold 76] 1, 0, 0, 0 s. t. consecutive sets differ in exchanging one element • Only swaps of the form [Eades, Mc. Kay 84] 0, 0, 0, 1 1, 0, 0 1, 0 [Chase 89], [Jenkyns, Mc. Carthy 95] 0, 0, 1 • Only distance-≤ 2 swaps • Only distance-1 swaps [Eades, Hickey, Read 84], [Ruskey 88] (possible iff even and odd, or )
Combinatorial Gray codes • Examples: 1, 0 • Only distance-1 swaps [Eades, Hickey, Read 84], [Ruskey 88] (possible iff even and odd, or ) 0, 1
Combinatorial Gray codes • Examples: • Generate only i ((())) (=parenthesis expressions, rooted trees, triangulations, binary trees… see [Stanley 15]) iii ii (()()) (())() v iv ()()() ()(()) • Constant-time generation [Ruskey, Proskurowski 90], [Walsh 98] • Only distance-1 swaps [Bultena, Ruskey 98] (possible iff even or less than 5)
Combinatorial Gray codes i ii iv v
Combinatorial Gray codes • Our minimum-change bijection f is ‚orthogonal‘ to Gray codes from before (01 -20 and i-v) i ii iv v
Definition of • Count downsteps starting at → • Flip -th downstep touching the line • Flip first upstep to the left of d touching the line 2 1 4 3 5 u d
Definition of • Count downsteps starting at → • Flip -th downstep touching the line • Flip first upstep to the left of d touching the line u d
Definition of Repeat: • Flip first downstep to the right of u touching the line • Flip first upstep to the left of d touching the line u u d d
Definition of Repeat: • Flip first downstep to the right of u touching the line • Flip first upstep to the left of d touching the line u d
Definition of Repeat: • Flip first downstep to the right of u touching the line • Flip first upstep to the left of d touching the line u u dd
Definition of Repeat: • Flip first downstep to the right of u touching the line • Flip first upstep to the left of d touching the line u d
Definition of Repeat: • Flip first downstep to the right of u touching the line • Flip first upstep to the left of d touching the line u d
Definition of Repeat: • Flip first downstep to the right of u touching the line • Flip first upstep to the left of d touching the line u d
Definition of • Count downsteps starting at → • Flip -th downstep touching the line • Flip first upstep to the left of d touching the line Definition of • Count downsteps starting at → • Flip -th downstep touching the line • Flip first upstep to the right of d touching the line
Definition of Repeat: • Flip first downstep to the right of u touching the line • Flip first upstep to the left of d touching the line Definition of Repeat: • Flip first downstep to the left of u touching the line • Flip first upstep to the right of d touching the line
Efficient computation Repeat: • Flip first downstep to the right of u touching the line • Flip first upstep to the left of d touching the line u d Idea: bidirectional pointers below hills and above valleys à Fast navigation along Dyck path to reposition u and d à Compute each application of in time
Thank you!
- Slides: 30