HOME

TheInfoList



OR:

The Hilbert curve (also known as the Hilbert space-filling curve) is a
continuous Continuity or continuous may refer to: Mathematics * Continuity (mathematics), the opposing concept to discreteness; common examples include ** Continuous probability distribution or random variable in probability and statistics ** Continuous ...
fractal In mathematics, a fractal is a Shape, geometric shape containing detailed structure at arbitrarily small scales, usually having a fractal dimension strictly exceeding the topological dimension. Many fractals appear similar at various scale ...
space-filling curve In mathematical analysis, a space-filling curve is a curve whose Range of a function, range reaches every point in a higher dimensional region, typically the unit square (or more generally an ''n''-dimensional unit hypercube). Because Giuseppe Pea ...
first described by the German mathematician
David Hilbert David Hilbert (; ; 23 January 1862 – 14 February 1943) was a German mathematician and philosopher of mathematics and one of the most influential mathematicians of his time. Hilbert discovered and developed a broad range of fundamental idea ...
in 1891, as a variant of the space-filling
Peano curve In geometry, the Peano curve is the first example of a space-filling curve to be discovered, by Giuseppe Peano in 1890. Peano's curve is a surjective, continuous function from the unit interval onto the unit square, however it is not injective. ...
s discovered by
Giuseppe Peano Giuseppe Peano (; ; 27 August 1858 – 20 April 1932) was an Italian mathematician and glottologist. The author of over 200 books and papers, he was a founder of mathematical logic and set theory, to which he contributed much Mathematical notati ...
in 1890. Because it is space-filling, its
Hausdorff dimension In mathematics, Hausdorff dimension is a measure of ''roughness'', or more specifically, fractal dimension, that was introduced in 1918 by mathematician Felix Hausdorff. For instance, the Hausdorff dimension of a single point is zero, of a line ...
is 2 (precisely, its image is the
unit square In mathematics, a unit square is a square whose sides have length . Often, ''the'' unit square refers specifically to the square in the Cartesian plane with corners at the four points ), , , and . Cartesian coordinates In a Cartesian coordinat ...
, whose dimension is 2 in any definition of dimension; its graph is a compact set
homeomorphic In mathematics and more specifically in topology, a homeomorphism ( from Greek roots meaning "similar shape", named by Henri Poincaré), also called topological isomorphism, or bicontinuous function, is a bijective and continuous function betw ...
to the closed unit interval, with Hausdorff dimension 1). The Hilbert curve is constructed as a limit of piecewise linear curves. The length of the nth curve is \textstyle 2^n - , i.e., the length grows exponentially with n, even though each curve is contained in a square with area 1.


Images

File:Hilbert curve 1.svg, Hilbert curve, first order File:Hilbert curve 2.svg, Hilbert curves, first and second orders File:Hilbert curve 3.svg, Hilbert curves, first to third orders File:Hilbert curve production rules!.svg, Production rules Hilbert-topleft-topright.png, Hilbert curve, construction color-coded File:Hilbert3d-step3.png, A 3-D Hilbert curve with color showing progression File:Courbe de Hilbert.jpg, Variant, first three iterations


Applications and mapping algorithms

Both the true Hilbert curve and its discrete approximations are useful because they give a mapping between 1D and 2D space that preserves locality fairly well. This means that two data points which are close to each other in one-dimensional space are also close to each other after folding. The converse cannot always be true. Because of this locality property, the Hilbert curve is widely used in computer science. For example, the range of
IP address An Internet Protocol address (IP address) is a numerical label such as that is assigned to a device connected to a computer network that uses the Internet Protocol for communication. IP addresses serve two main functions: network interface i ...
es used by computers can be mapped into a picture using the Hilbert curve. Code to generate the image would map from 2D to 1D to find the color of each pixel, and the Hilbert curve is sometimes used because it keeps nearby IP addresses close to each other in the picture. The locality property of the Hilbert curve has also been used to design algorithms for exploring regions with mobile robots and indexing geospatial location data. In an algorithm called Riemersma dithering,
grayscale In digital photography, computer-generated imagery, and colorimetry, a greyscale (more common in Commonwealth English) or grayscale (more common in American English) image is one in which the value of each pixel is a single sample (signal), s ...
photographs can be converted to a dithered black-and-white image using thresholding, with the leftover amount from each pixel added to the next pixel along the Hilbert curve. Code to do this would map from 1D to 2D, and the Hilbert curve is sometimes used because it does not create the distracting patterns that would be visible to the eye if the order were simply left to right across each row of pixels. Hilbert curves in higher dimensions are an instance of a generalization of
Gray code The reflected binary code (RBC), also known as reflected binary (RB) or Gray code after Frank Gray (researcher), Frank Gray, is an ordering of the binary numeral system such that two successive values differ in only one bit (binary digit). For ...
s, and are sometimes used for similar purposes, for similar reasons. For multidimensional databases, Hilbert order has been proposed to be used instead of Z order because it has better locality-preserving behavior. For example, Hilbert curves have been used to compress and accelerate
R-tree R-trees are tree data structures used for spatial access methods, i.e., for indexing multi-dimensional information such as geographical coordinates, rectangles or polygons. The R-tree was proposed by Antonin Guttman in 1984 and has found s ...
indexes (see
Hilbert R-tree Hilbert R-tree, an R-tree variant, is an index for multidimensional objects such as lines, regions, 3-D objects, or high-dimensional feature-based parametric objects. It can be thought of as an extension to B+-tree for multidimensional objects. T ...
). They have also been used to help compress data warehouses. The linear distance of any point along the curve can be converted to coordinates in ''n'' dimensions for a given ''n'', and vice versa, using any of several standard mathematical techniques such as Skilling's method. It is possible to implement Hilbert curves efficiently even when the data space does not form a square. Moreover, there are several possible generalizations of Hilbert curves to higher dimensions.


Representation as Lindenmayer system

The Hilbert Curve can be expressed by a
rewrite system In mathematics, computer science, and logic, rewriting covers a wide range of methods of replacing subterms of a formula with other terms. Such methods may be achieved by rewriting systems (also known as rewrite systems, rewrite engines, or reduc ...
(
L-system An L-system or Lindenmayer system is a parallel rewriting system and a type of formal grammar. An L-system consists of an alphabet of symbols that can be used to make strings, a collection of production rules that expand each symbol into some ...
). :Alphabet : A, B :Constants : F + − :Axiom : A :Production rules: :: A → +BF−AFA−FB+ :: B → −AF+BFB+FA− Here, "F" means "draw forward", "+" means "turn left 90°", "-" means "turn right 90°" (see
turtle graphics In computer graphics, turtle graphics are vector graphics using a relative cursor (the "turtle") upon a Cartesian plane (x and y axis). Turtle graphics is a key feature of the Logo programming language. It is also a simple and didactic way of d ...
), and "A" and "B" are ignored during drawing.


Other implementations

Graphics Gems IIVoorhies, Douglas: Space-Filling Curves and a Measure of Coherence, pp. 26–30, Graphics Gems II. discusses Hilbert curve coherency, and provides implementation. The Hilbert Curve is commonly used among rendering images or videos. Common programs such as
Blender A blender (sometimes called a mixer (from Latin ''mixus, the PPP of miscere eng. to Mix)'' or liquidiser in British English) is a kitchen and laboratory appliance used to mix, crush, purée or emulsify food and other substances. A stationary ...
and
Cinema 4D Cinema 4D is a 3D software suite developed by the German company Maxon. Overview As of R21, only a single version of Cinema 4D is available. It replaces all previous variants, including BodyPaint 3D, and includes all features of the past 'Stu ...
use the Hilbert Curve to trace the objects, and render the scene. The slicer software used to convert 3D models into toolpaths for a
3D printer 3D printing, or additive manufacturing, is the construction of a three-dimensional object from a CAD model or a digital 3D model. It can be done in a variety of processes in which material is deposited, joined or solidified under computer ...
typically has the Hilbert curve as an option for an infill pattern.


See also

*
Hilbert curve scheduling In parallel processing, the Hilbert curve scheduling method turns a multidimensional task allocation problem into a one-dimensional space filling problem using Hilbert curves, assigning related tasks to locations with higher levels of proximity.'' ...
*
Hilbert R-tree Hilbert R-tree, an R-tree variant, is an index for multidimensional objects such as lines, regions, 3-D objects, or high-dimensional feature-based parametric objects. It can be thought of as an extension to B+-tree for multidimensional objects. T ...
*
Locality of reference In computer science, locality of reference, also known as the principle of locality, is the tendency of a processor to access the same set of memory locations repetitively over a short period of time. There are two basic types of reference localit ...
*
Locality-sensitive hashing In computer science, locality-sensitive hashing (LSH) is a fuzzy hashing technique that hashes similar input items into the same "buckets" with high probability. (The number of buckets is much smaller than the universe of possible input items.) Si ...
* Moore curve * Murray polygon * Sierpiński curve * List of fractals by Hausdorff dimension


Notes


Further reading

* *


External links


Dynamic Hilbert curve with JSXGraph



XKCD cartoon using the locality properties of the Hilbert curve to create a "map of the internet"

Gcode generator for Hilbert curve



Algorithm 781: generating Hilbert's space-filling curve by recursion (ACM Digital Library)
{{Fractals Fractal curves Articles containing video clips Articles with example C code David Hilbert