De Bruijn torus
In combinatorial mathematics, a De Bruijn torus, named after Dutch mathematician Nicolaas Govert de Bruijn, is an array of symbols from an alphabet that contains every possible matrix of given dimensions exactly once. It is a torus because the edges are considered wraparound for the purpose of finding matrices. Its name comes from the De Bruijn sequence, which can be considered a special case where .
One of the main open questions regarding De Bruijn tori is whether a De Bruijn torus for a particular alphabet size can be constructed for a given and. It is known that these always exist when, since then we simply get the De Bruijn sequences, which always exist. It is also known that "square" tori exist whenever and even.
The smallest possible binary "square" de Bruijn torus, depicted above right, denoted as de Bruijn torus, contains all binary matrices.
''B''2
Apart from "translation", "inversion" and "rotation", no other de Bruijn tori are possible - this can be shown by complete inspection of all 216 binary matrices.The torus can be unrolled by repeating n−1 rows and columns. All n×''n'' submatrices without wraparound, such as the one shaded yellow, then form the complete set:
Larger example: ''B''4
An example of the next possible binary "square" de Bruijn torus,, has been explicitly constructed.The image on the right shows an example of a de Bruijn torus / array, where the zeros have been encoded as white and the ones as red pixels respectively.
Binary de Bruijn tori of greater size
The paper in which an example of the de Bruijn torus was constructed contained over 10 pages of binary, despite its reduced font size, requiring three lines per row of array.The subsequent possible binary de Bruijn torus, containing all binary matrices, would have entries, yielding a square array of dimension, denoted a de Bruijn torus or simply B6. This could easily be stored on a computer—if printed with pixels of side 0.1 mm, such a matrix would require an area of approximately 26×26 square metres.
The object B8, containing all binary matrices and denoted, has a total of 264 ≈ 18.447×1018 entries: storing such a matrix would require 18.5 exabits, or 2.3 exabytes of storage. At the above scale, it would cover 429×429 square kilometres.
The following table illustrates the super-exponential growth.
| n | Cells in a submatrix = n2 | Number of submatrices = 2n2 | Bn side length = 2 |
| 2 | 4 | 16 | 4 |
| 4 | 16 | 65536 | 256 |
| 6 | 36 | 68719476736 | 262144 |
| 8 | 64 | ~1.84 | ~4.29 |
| 10 | 100 | ~1.27 | ~1.13 |
| 12 | 144 | ~2.23 | ~4.72 |
| 14 | 196 | ~1.00 | ~3.17 |
| 16 | 256 | ~1.16 | ~3.40 |
| 18 | 324 | ~3.42 | ~5.85 |
| 20 | 400 | ~2.60 | ~1.61 |
Applications
De Bruijn tori are used in the spatial coding context, e.g. for localization of a camera, a robot or a tangible based on some optical ground pattern.They are also used as basis of the PuzzleBoard, an optical camera calibration target which adds position encoding to a chessboard calibration pattern.
De Bruijn tori can be used to implement digital paper, similar to the Anoto system. Each Anoto cell has four possible states and is thus based on a de Bruijn torus like structure with alphabet size 4. It uses a repeating 6-bit De Bruijn sequence with different offsets as columns.