Dancing links
Abstract
The author presents two tricks to accelerate depthfirst 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 01 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.
 Publication:

arXiv eprints
 Pub Date:
 November 2000
 arXiv:
 arXiv:cs/0011047
 Bibcode:
 2000cs.......11047K
 Keywords:

 Computer Science  Data Structures and Algorithms
 EPrint:
 Abstract added by Greg Kuperberg