Get the latest tech news
A Polyomino Tiling Algorithm (2018)
For, like, grids, and things.
But the result is essentially a bipartite graph (or, in database terms, a many-to-many relationship) between placements and grid points. For example, if we descended down the ACD branch of the search tree, the graph would look like this, and the existence of grid points with no placements indicates that there's no solution. If the grid at any point becomes disconnected, we immediately restrict the algorithm to the smallest subcomponent and try to tile that completely before moving on to the next one.
Or read this on Hacker News