Skip to content

enumerate all the polyomino tilings of grid graphs!

License

Notifications You must be signed in to change notification settings

zschutzman/enumerator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

enumerator

DOI

This code enumerates the polyomino tilings of a grid graph. For details about the algorithm and implementation, see the Julia implementation notebook.

A partition of an m by n grid into k pieces of sizes in a list [<p_1>,<p_2>,...,<p_l>] is a collection of k disjoint, connected subgraphs of the m by n grid which cover the grid itself, and the number of vertices in each subgraph is in the list [<p_1>,<p_2>,...,<p_l>]

For example, the following is a partition of the 3 by 3 grid graph into 3 pieces of size 3

1 1 2  
1 2 2  
3 3 3

This code counts all such partitions and (if desired) outputs them into a text file. The data format is a left-to-right, top-to-bottom linearization of the partition. For example, the above partition would be serialized as

1,1,2,1,2,2,3,3,3.

The code allows the use of rook or queen contiguity. Rook contiguity means that the subgraphs in the partition must be composed of cells which meet only along the edges of the squares in the grid, while queen contiguity also permits cells which meet at corners.

Unfortunately, even for small input values, the number of valid tilings can be extremely large, numbering in the billions or trillions. If you'd like the output for some smaller grids, please get in touch by email or opening an issue on this repository.

This is Julia code. If you already have Julia and Jupyter installed, you can set up IJulia by calling using Pkg and Pkg.add("IJulia") in the Julia REPL. If you don't have either of these set up, you can get Julia from the creators at julialang.org and Jupyter from jupyter.org.

Cite this code as

@misc{schutzman2019enumerator, 
        title={zschutzman/enumerator: v0.1.5}, 
        DOI={10.5281/zenodo.3467675}, 
        abstractNote={Code for enumerating polyomino tilings of grid graphs.}, 
        publisher={Zenodo}, 
        author={Zachary Schutzman}, 
        year=2019, 
        month=10,
        url={https://github.com/zschutzman/enumerator},
}

This code is available under an MIT License.

About

enumerate all the polyomino tilings of grid graphs!

Resources

License

Stars

Watchers

Forks

Packages

No packages published