Generating aperiodic tilings, with a twist

90 Views Asked by At

A common technique for generating aperiodic tilings is inflation — given a starting point and some rules, you "grow" the tiling outwards from there.

This works, but suppose you choose such a tiling, then want to explore a small portion of it "far away" from the starting point. As far as I know, the only way to generate the portion of interest is to grow the tiling all the way out, until you got the part you care about, and discard the rest. This is because the placement of one tile dictates the placement of subsequent ones — you can't "skip ahead" in this process[1].

Doing this is quite inefficient, of course.

Does anyone have experience with aperiodic tilings such that you can generate various disparate, small pieces of them efficiently?

I came up with something that sort-of works (see below), but I'm looking for other research and ideas in this area, or even just proper terminology for what I'm seeking.

[1] Or maybe you can, in some cases? I haven't come up with any, but can't rule it out entirely.


Start with a simple grid tiling. Clearly, you can generate an arbitrary portion of that efficiently. Now, give the edge of each cell a unique identifier (eg: the segment from (1,1) to (2,1) could be named "1,1–2,1". From that unique name, derive some pseudorandom number (a hash, perhaps).

Use that number to choose from some finite set of decorations for that edge. Or equivalently, perturb the edge like a puzzle piece, to create an infinite grid of variously-shaped interlocking pieces.

This is not likely to be periodic, due to the pseudo-randomness (perhaps it could repeat though, in theory; proof not attempted :). But it is deterministic, and we can generate a small patch at an arbitrary location on the plane without needing to know about the rest of the tiling.

That mostly works for me, despite some hand-waving about the (a-)periodicity.

Is there more like that?