December 26, 2016
This post is a rough draft. It may contain excessive hand-waving, bad grammar and punctuation, inconsistent choice of words, and logical errors. The reader beware.
The following fractal is known as the Sierpinski Hexagon.
Sierpinski Hexagon
It is constructed by taking a regular hexagon, replacing it with six smaller hexagons, (as shown), replacing each of those hexagons in turn, and so on. Over time, each hexagon is replaced by a scaled down version of the entire fractal.
First four iterations of the Sierpinski Hexagon.
Suppose we wanted to give each point in the Sierpinski Hexagon a (not necessarily unique) address based on which hexagons it belongs to. We start by labeling the first six hexagons as 0, 1, 2, 3, 4, and 5.
In order to label the next level of hexagons, we realize that each of the hexagons we just labeled contains a scaled down version of the fractal as a whole, so we decide to shrink down six copies of our large hexagon, fit them into each of the corners, and then label our new set of hexagons based on how we labeled the first set.
There is a problem with this, and that is that every hexagon can be fitted into the corner in 12 different ways because it has 12 symmetries. Since there are 6 hexagons, that means that there are 12^6 different ways that we could place the hexagons. Undaunted, we choose a configuration at random and label the second level of hexagons from 00-55. (We will come back to this later.)
When we inspect the third level, we see that there is no ambiguity as to the labeling of the hexagons, and the same is true for each subsequent level.
Now suppose we wished to find a point P given its label? To do this, we first realize that P is at most one hexagon-width away from any other point in a hexagon of which it is a member, and that it is a member of a sequence of hexagons that become arbitrarily small. Therefore, any sequence of points generated by taking a point from each hexagon of which P is a member will have P as its limit.
We decide to generate the sequence of hexagon centers by using an iterative turn-and-walk (and flip) procedure.
Starting position.
We start by imagining ourselves positioned at the center of a hexagon with radius R, pointing at the hexagon labeled 0, with hexagons 0-5 arranged in a counterclockwise fashion.
Pointing at next hexagon.
We then turn counterclockwise until we are facing the next hexagon in the sequence, (which we'll say is 2 in this case).
New hexagon.
We then move forward until we are at the center of hexagon 2, which is located a distance of 2/3 R away, (and has radius 1/3 R.)
Now that we are at the center of our new hexagon, we wish to return ourselves to a configuration that is similar to the one we started with.
Reflection.
We check to see if our new set of hexagons is counter-clockwise oriented. If not, we flip upside-down along the line-of-sight axis.
Ending Position.
We then rotate clockwise until we are facing the hexagon labeled 0.
Since we are essentially back where we started, we can repeat this procedure again to get the next hexagon, and so on.
Before we analyze the procedure further, note that when our character enters a new hexagon, we can tell exactly which hexagon it will be facing and whether or not the hexagons are clockwise or counterclockwise oriented based solely on the label of the hexagon we just entered. This suggests a way to label our choice of labeling scheme. We denote a labeling scheme L by $$ L = (b_0s_0,b_1s_1,b_2s_2,b_3s_3,b_4s_4,b_5s_5) $$ where \( b_i \) is the label of the hexagon our character faces after entering a hexagon of label i, and \( s_i \) = +1/-1 if the new set of hexagons are counterclockwise/clockwise oriented.
With that mentioned, let's summarize the procedure above in algorithmic form, using the following previously undefined parameters.
Basically, what we have done so far is defined functions \( f_L(A) \) for 12^6 distinct L, each of which map the set of all sequences in \( Z_6 \) into the complex plane. What is notable is that all of these functions have the same image, namely the Sierpinski hexagon, and we could demonstrate this to be true by showing that, for any two labeling schemes \(L_1\) and \(L_2\), for every sequence \(A_1\) in \(Z_6\), there exists a sequence \(A_2\) in \(Z_6\) such that \(f_{L_1}(A_1) = f_{L_2}(A_2)\).
I bring this up because I have thought up a fractal construction rule, similar to that of the Sierpinski Hexagon just outlined, but where different configurations L sometimes result in different images.
A new construction rule. Each even labeled hexagon has radius 1/2 R while each odd labeled hexagon has radius 1/4 R.
The question is, which choices of L result in the same images, and which choices of L result in images which are rotations/reflections of each other?
Obviously, a sufficient condition for two schemes to have the same image would be if every crawl done by a crawler in one scheme could be exactly replicated by a crawler in the other scheme.
Imagine we have two crawlers, one in scheme \(L_1\) and one in scheme \(L_2\). To start, each crawler has the same choice of six hexagons to choose from. If crawler 1 chooses a hexagon, then crawler 2 can easily choose the same hexagon. Once the new hexagon is chosen, there are two different sets of hexagons that could be inside it. There is either the configuration where the crawler is facing a small hexagon, or the configuration where a crawler is facing a large hexagon.
The two possible hexagon nestings.
If crawler 1 and crawler 2 happen across the same set of hexagons, then when crawler 1 chooses again, crawler 2 can again pick the same hexagon. If it winds up that the two crawlers always end up with the same set of hexagons, then crawler 2 can perfectly replicate crawler 1's crawl. If this is true for every possible crawl done by crawler 1, then we can say that \(f_{L_1}\) and \(f_{L_2}\) have the same image.
One way to guarantee this condition is met is to require that the size of the hexagon a crawler faces when entering its parent hexagon is entirely dependent on the relative size of the parent hexagon. That is,
The image of \(f_L\) for \(L = (0+,0+,0+,0+,0+,0+)\), \(L = (1+,1+,1+,1+,1+,1+)\), \(L = (0+,1+,0+,1+,0+,1+)\), and \(L = (1+,0+,1+,0+,1+,0+)\)
In terms of our labeling schemes, this is the same as saying,
As shown above, there are four distinct images that we can generate from this kind of rule. Additionally, since there are 3 ways to choose \(b_i\) and two ways to choose \(s_i\) for each hexagon while still maintaining the same value of \(b_i\) mod 2, there are 6^6 distinct labeling schemes L that result in the same image, for each of the four images. This accounts for 1/16 of all possible labeling schemes.
Now suppose again that there are two crawlers in labeling schemes \(L_1\) and \(L_2\), where crawler 2 is attempting to mimic crawler 1. If at some point crawler 1 and crawler 2 find themselves choosing among different sets of hexagons, is it still possible that \(f_{L_1}\) and \(f_{L_2}\) have the same image? It turns out the answer is no.
The way to approach the problem is to consider which points are guaranteed to be in the image and which points are guaranteed not to be in the image. Any points in the interior of the empty regions between hexagons are guaranteed not to be in the image, while all hexagon corner points are guaranteed to be in the image.
Imagine that the set of hexagons above is the set seen by crawler 1 while crawler 2 sees the opposite set. From the perspective of craweler 2, the region highlighted in red is inaccessible, so no point of the image of \(f_{L_2}\) can be located in this region.
At the same time, crawler 1 can crawl its way to an arbitrarily small hexagon with its corner on the border of the forbidden zone. This hexagon has another corner which juts into the interior of the forbidden zone. Since it's a corner point, it is guaranteed to be in the image of \(f_{L_1}\). So we have found a point in the image of \(f_{L_1}\) which is not in the image of \(f_{L_2}\), demonstrating that \(f_{L_1}\) and \(f_{L_2}\) do not have a shared image.
Anyways, that's all for now.