Dancing links
arXiv:cs/0011047
Abstract
The author presents two tricks to accelerate depth-first search algorithms for a class of combinatorial puzzle problems, such as tiling a tray by a fixed set of polyominoes. The first trick is to implement each assumption of the search with reversible local operations on doubly linked lists. By this trick, every step of the search affects the data incrementally. The second trick is to add a ghost square that represents the identity of each polyomino. Thus puts the rule that each polyomino be used once on the same footing as the rule that each square be covered once. The coding simplifies to a more abstract form which is equivalent to 0-1 integer programming. More significantly for the total computation time, the search can naturally switch between placing a fixed polyomino or covering a fixed square at different stages, according to a combined heuristic. Finally the author reports excellent performance for his algorithm for some familiar puzzles. These include tiling a hexagon by 19 hexiamonds and the N queens problem for N up to 18.
Abstract added by Greg Kuperberg
Cited by in corpus (12)
- An Analysis of Chandra Deep Follow-up GRBs: Implications for Off-Axis Jets
- The order of the automorphism group of a binary -analog of the Fano plane is at most two
- On the automorphism group of a binary -analog of the Fano plane
- Existence of -Analogs of Steiner Systems
- Classification of large partial plane spreads in and related combinatorial objects
- Large Sets of -Designs over Finite Fields
- An Optimal Algorithm to Generate Pointed Trivalent Diagrams and Pointed Triangular Maps
- LCL problems on grids
- Python for education: the exact cover problem
- Exact Covers via Determinants
- Decomposition Methods for Nonlinear Optimization and Data Mining
- Team Plan Recognition: A Review of the State of the Art