# Chaos game

In mathematics, the term chaos game originally referred to a method of creating a fractal, using a polygon and an initial point selected at random inside it.[1][2] The fractal is created by iteratively creating a sequence of points, starting with the initial random point, in which each point in the sequence is a given fraction of the distance between the previous point and one of the vertices of the polygon; the vertex is chosen at random in each iteration. Repeating this iterative process a large number of times, selecting the vertex at random on each iteration, and throwing out the first few points in the sequence, will often (but not always) produce a fractal shape. Using a regular triangle and the factor 1/2 will result in the Sierpinski triangle, while creating the proper arrangement with four points and a factor 1/2 will create a display of a "Sierpinski Tetrahedron", the three-dimensional analogue of the Sierpinski triangle. As the number of points is increased to a number N, the arrangement forms a corresponding (N-1)-dimensional Sierpinski Simplex.

The term has been generalized to refer to a method of generating the attractor, or the fixed point, of any iterated function system (IFS). Starting with any point x0, successive iterations are formed as xk+1 = fr(xk), where fr is a member of the given IFS randomly selected for each iteration. The iterations converge to the fixed point of the IFS. Whenever x0 belongs to the attractor of the IFS, all iterations xk stay inside the attractor and, with probability 1, form a dense set in the latter.

The "chaos game" method plots points in random order all over the attractor. This is in contrast to other methods of drawing fractals, which test each pixel on the screen to see whether it belongs to the fractal. The general shape of a fractal can be plotted quickly with the "chaos game" method, but it may be difficult to plot some areas of the fractal in detail.

With the aid of the "chaos game" a new fractal can be made and while making the new fractal some parameters can be obtained. These parameters are useful for applications of fractal theory such as classification and identification.[3][4] The new fractal is self-similar to the original in some important features such as fractal dimension.

## Optimal value of r for every regular polygon

At each iteration of the chaos game, the point xk+1 can be placed anywhere along the line connecting the point xk and the vertex of choice, v. Defining r as the ratio between the two distances d(xk,xk+1) and d(xk,v), it is possible to find the optimal value of r, i.e., ropt, for every N-sided regular polygon, that produces a fractal with optimal packing, i.e., the subscale polygons are in contact but do not overlap.

The value of ropt can be calculated as the ratio between the length of the side of the first subscale polygon and the side of the original polygon. This ratio can be calculated geometrically:[5]

${\displaystyle r_{opt}={\frac {(1+2a)}{(2+2a)}}}$

In which a is calculated as:

${\displaystyle a=\sum _{i=1}^{n}\cos[i(\pi -\theta )]}$

Where θ is the internal angle of the polygon and n is the index of the most protruding vertex, counted starting from the base, i.e. ${\displaystyle n=\left\lfloor {\frac {N}{4}}\right\rfloor }$ where ${\displaystyle \lfloor \rfloor }$ represents the integral part of the fraction.

The optimal ratio ${\displaystyle r_{opt}}$ has also been called the kissing ratio ${\displaystyle K_{n}}$. Abdulaziz & Said showed that ${\displaystyle K_{n}}$ is[6]

${\displaystyle {\frac {1}{1+\tan {\frac {\pi }{n}}}}\qquad {\text{if}}\quad n\equiv 0{\bmod {4}}}$

${\displaystyle {\frac {1}{1+2\sin {\frac {\pi }{2n}}}}\quad {\text{if}}\quad n\equiv 1,3{\bmod {4}}}$

${\displaystyle {\frac {1}{1+\sin {\frac {\pi }{n}}}}\qquad {\text{if}}\quad n\equiv 2{\bmod {4}}}$

## Expansion of the chaos game for values of r greater than 1

While an optimally packed fractal appears only for a defined value of r, i.e., ropt, it is possible to play the chaos game using other values as well. If r>1 (the point xk+1 jumps at a greater distance than the distance between the point xk and the vertex v), the generated figure extends outside the initial polygon.[5] When r=2, the algorithm enters in a meta-stable state and generates quasi-symmetric figures. For values of r>2, the points are placed further and further from the center of the initial polygon at each iteration, the algorithm becomes unstable and no figure is generated.

## Restricted chaos game

If the chaos game is run with a square, no fractal appears and the interior of the square fills evenly with points. However, if restrictions are placed on the choice of vertices, fractals will appear in the square. For example, if the current vertex cannot be chosen in the next iteration, this fractal appears:

If the current vertex cannot be one place away (anti-clockwise) from the previously chosen vertex, this fractal appears:

If the point is prevented from landing on a particular region of the square, the shape of that region will be reproduced as a fractal in other and apparently unrestricted parts of the square.

## Jumps other than 1/2

When the length of the jump towards a vertex or another point is not 1/2, the chaos game generates other fractals, some of them very well-known. For example, when the jump is 2/3 and the point can also jump towards the center of the square, the chaos game generates the Vicsek fractal:

When the jump is 2/3 and the point can also jump towards the midpoints of the four sides, the chaos game generates the Sierpinski carpet:

## Chaos game used to represent sequences

With minor modifications to the game rules, it is possible to use the chaos game algorithm to represent any well-defined sequence, i.e., a sequence composed by the repetition of a limited number of distinct elements. In fact, for a sequence with a number N of distinct elements, it is possible to play the chaos game on an N-sided polygon, assigning each element to a vertex and playing the game choosing the vertices following the progression of the sequence (instead of choosing a random vertex). In this version of the game, the generated image is a unique representation of the sequence. This method was applied to the representation of genes (N=4, r=0.5)[7][8] and proteins (N=20, r=0.863).[5][9] Additionally, the representations of protein sequences was used to instruct ML models to predict protein features.[5][10] The expansion of the chaos game using r=2 can be useful to magnify small mutations in the comparison between two (or more) sequences.[5]