La courbe de Hilbert est une courbe continue remplissant un carré. Elle a été décrite pour la première fois par le mathématicien allemand David Hilbert en 1891..

Comme elle couvre un carré, sa dimension de Hausdorff et sa dimension topologique sont égales à 2. On la considère cependant comme faisant partie des fractales.

La longueur euclidienne de (la courbe approchée continue obtenue à la -ième itération) est ; elle croit donc exponentiellement avec .

Pour le parcours des bases de données multi-dimensionnelles, la courbe de Hilbert a été proposée à la place de la courbe de Lebesgue parce qu'elle a un comportement préservant mieux la localité.

Construction géométrique

Hilbert définit la fonction comme limite de fonctions donnant les approximations successives de la courbe de Hilbert.

À l'étape 0, le graphe se limite à un seul point, disposé au centre du carré . Ce point est à la fois point initial et point final de . Le centre du carré de coordonnées (1/2, 1/2) est l'image par une fonction de l'intervalle tout entier. À l'étape 1, on coupe en quatre parties égales l'intervalle et on fait correspondre à chaque intervalle de la subdivision un quart du carré initial. Plus précisément, l'intervalle est associé au sous-carré ; l'intervalle est associé au sous-carré ; l'intervalle est associé au sous-carré ; et enfin, l'intervalle est associé au sous-carré . Ainsi, le parcours des quatre sous-carrés se fait dans l'ordre suivant :

1 2 0 3

Si on relie les centres de ces carrés par des segments, on obtient le graphe . Son point initial est le point de coordonnées , et son point final est le point de coordonnées . C'est l'arc paramétré par une fonction qui envoie l'intervalle [0, 1/4] sur la partie de contenue dans le carré 0, l'intervalle sur la partie de contenue dans le carré 1, l'intervalle sur la partie de contenue dans le carré 2, et l'intervalle sur la partie de contenue dans le carré 3, en suivant le sens de parcours. À l'étape n, chaque intervalle de la subdivision obtenue à l'étape n-1 est lui-même divisé en quatre, de même que le carré qui lui est associé. On dispose dans chaque carré de côté 1/2 numéroté de 0 à 3 un exemplaire du graphe calculé au rang précédent, après lui avoir fait subir une homothétie de rapport 1/2, mais de façon que, pour i variant de 0 à 2, le point final du graphe disposé dans le carré i soit le plus proche possible du point initial du graphe disposé dans le carré i+1. Il suffit pour cela d'effectuer une symétrie par rapport à la diagonale ascendante dans le carré numéroté 0, et une symétrie par rapport à la diagonale descendante dans le carré numéroté 3. Ainsi, à l'étape n= 2, le sens de parcours dans chaque sous-carré de l'étape 1 est comme suit :

1 2 1 2 0 3 0 3 3 2 1 0 0 1 2 3

Le point initial du graphe ainsi obtenu est le point initial du graphe du carré 0 en bas à gauche, et le point final du graphe est le point final du graphe du carré 3, en bas à droite. Les parties de contenues dans chacun des petits carrés de côté par ordre de parcours sont les images successives par la fonction de chacun des intervalles successifs de longueur subdivisant .

En raison de la définition locale des graphes , la suite de fonctions continues () est uniformément de Cauchy, donc converge uniformément vers une fonction continue f dont le graphe est la courbe de Hilbert. Ce graphe est dense dans le carré . Il est de plus compact comme image continue du compact [0,1], donc c'est un fermé dense de , donc il est égal à . f est une application surjective. Elle n'est dérivable en aucun point.

On peut montrer par récurrence que les graphes , et donc la courbe de Hilbert par passage à la limite, sont symétriques par rapport à la droite d'équation x = 1/2.

Définition récursive Le paramétrage f(t) = (x(t), y(t)) de la fonction de Hilbert précédemment définie vérifie, compte tenu des symétries de la construction : pour pour pour pour En outre f(0) = (0, 0) et f(1) = (1, 0).

On peut aussi traduire ces relations comme suit. Posons : la symétrie par rapport à la droite y = x la translation de vecteur (0, 1) la translation de vecteur (1,1) la symétrie par rapport à la droite y = -x, composée avec la translation de vecteur (2,1). Alors, si où les sont les chiffres en base 4 de t, on a :

et en itérant :

En particulier, si t est un réel ayant un nombre fini n de chiffres en base 4 (), on a :

On peut ainsi calculer facilement la valeur de n'importe quelle quantité et plus spécialement les , qui donnent les coordonnées des centres des petits carrés lorsque k varie de 1 à .

Construction par approximations discrètes On peut déterminer directement par récurrence les coordonnées des sommets du graphe . Une translation sera effectuée pour que les coordonnées du sommet initial soient ramenées en (0,0) (et non au centre d'un petit carré). Nous continuerons néanmoins à désigner ce graphe translaté par . On utilise pour cela une variable auxiliaire a indiquant l'orientation du déplacement, et pouvant prendre les valeurs 0, 1, 2, 3. L'orientation donnée par a correspondra aux quatre sens de parcours possibles suivants du graphe ou de ses symétrisés :

On se donne également trois matrices :

Les indices de lignes varient de 0 à 3 (et non de 1 à 4 comme usuellement) et ces indices correspondent à des valeurs prises par a. Les indices de colonnes varient également de 0 à 3 et correspondent à des valeurs prises par les chiffres en base 4 d'un paramètre t donné. Les éléments de X seront les abscisses et ceux de Y les ordonnées d'un sommet que l'on cherche à calculer ; les éléments de A donneront les diverses orientations à suivre au cours du calcul.

À l'étape n, le graphe (translaté de) comporte sommets. Pris dans l'ordre de parcours, ils seront associés aux éléments t de dont la décomposition en base 4 comporte exactement n chiffres (y compris éventuellement des 0 finaux) : , . Soit donc un tel nombre. Les coordonnées du sommet du graphe correspondant à peuvent être calculées par récurrenceTheodore Bially. Space-filling curves: Their generation and their application to bandwidth reduction. IEEE Transactions on Information Theory, IT-15(6):658–664, 1969. (Cité d'après Jonathan Lawder: Techniques for Mapping to and from Space-filling Curves, 1999, ). sur k variant de 0 à n, à partir des coordonnées du sommet du graphe correspondant au nombre . Désignons par les coordonnées de , et soit la valeur du paramètre qui donne l'orientation à adopter pour construire les quatre points du graphe issus de (dont le sommet qui correspondant à .

Pour k = 0, le graphe est réduit au point (0,0) et l'orientation adoptée pour construire correspond à a = 0. On a donc initialement :

Pour k variant de 1 à n, on définit ensuite par récurrence les suites :

On vérifiera en effet que, si l'orientation en est donnée par la valeur de , alors les différences entre les coordonnées des quatre points du graphe issus de et les coordonnées de sont, au facteur près, situés sur la ligne d'indice des matrices X et Y, en fonction du dernier chiffre de donnant l'indice de colonne à adopter. De plus, la nouvelle orientation à adopter au point ainsi obtenu pour construire le point est le nombre situé sur la ligne d'indice de la matrice A, là aussi en fonction du dernier chiffre de .

Lorsque parcourt les valeurs depuis 0.00...0 jusqu'à 0.33...3 (avec n chiffres), les sommets occupent le coin en bas en gauche des petits carrés en suivant l'ordre du graphe

Pour obtenir les centres des carrés, il suffit d'ajouter à chaque coordonnée de chaque sommet .

Généralisation en dimension supérieure

La courbe de Hilbert peut se généraliser à des dimensions supérieures. Par exemple, en dimension 3, il suffit à l'étape 1 de parcourir les huit sommets du cube d'un sommet à un sommet adjacent. Pour passer de l'étape n-1 à l'étape n, on découpe le cube unité en huit sous-cubes dans lesquels on dispose une courbe approchée de Hilbert d'ordre n-1, mais de façon que le point final de chaque graphe d'ordre n-1 soit le plus proche possible du sommet initial du graphe d'ordre n-1 suivant.

La généralisation peut aussi se faire par composition fonctionnelle. Ainsi la courbe de Hilbert de dimension 4 peut être définie par f(t) = (x(x(t)), y(x(t)), x(y(t)), y(y(t))). Cette définition peut être étendue aux dimensions qui sont des puissances de 2.

Représentation en L-système La courbe de Hilbert peut aussi être construite par un L-système. :

Alphabet : L, R Constantes : F, +, − Axiome : L Règles : L → –RF+LFL+FR− R → +LF−RFR−FL+

Ici, F signifie « avance », + signifie « à gauche 90° », et − signifie « à droite 90° ».

Butz. propose un algorithme pour calculer la courbe de Hilbert en plusieurs dimensions.

Notes et références

Voir aussi

Articles connexes Courbe de Lebesgue Courbe de Peano Liste de fractales par dimension de Hausdorff

Liens externes

Plane Filling Curves sur cut-the-knot

Hilbert