Courbe de Hilbert

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[1].
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 Modèle:Math (la courbe approchée continue obtenue à la Modèle:Math-ième itération) est ; elle croit donc exponentiellement avec Modèle:Math.
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[1] la fonction comme limite de fonctions donnant les approximations successives de la courbe de Hilbert.
- À l'étape 0, le graphe Modèle:Math se limite à un seul point, disposé au centre du carré . Ce point est à la fois point initial et point final de Modèle:Math. Le centre du carré de coordonnées (1/2, 1/2) est l'image par une fonction Modèle:Math 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 Modèle:Math. 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 Modèle:Math qui envoie l'intervalle [0, 1/4] sur la partie de Modèle:Math contenue dans le carré 0, l'intervalle sur la partie de Modèle:Math contenue dans le carré 1, l'intervalle sur la partie de Modèle:Math contenue dans le carré 2, et l'intervalle sur la partie de Modèle:Math 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 Modèle:Math 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 Modèle:Math disposé dans le carré i soit le plus proche possible du point initial du graphe Modèle:Math 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 Modèle:Math ainsi obtenu est le point initial du graphe Modèle:Math du carré 0 en bas à gauche, et le point final du graphe Modèle:Math est le point final du graphe Modèle:Math du carré 3, en bas à droite. Les parties de Modèle:Math contenues dans chacun des Modèle:Math petits carrés de côté Modèle:Math par ordre de parcours sont les images successives par la fonction Modèle:Math de chacun des intervalles successifs de longueur Modèle:Math subdivisant .
En raison de la définition locale des graphes Modèle:Math, la suite de fonctions continues (Modèle:Math) 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 Modèle:Math, 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 :
- Modèle:Math la symétrie par rapport à la droite y = x
- Modèle:Math la translation de vecteur (0, 1)
- Modèle:Math la translation de vecteur (1,1)
- Modèle:Math la symétrie par rapport à la droite y = -x, composée avec la translation de vecteur (2,1).
Alors, si où les Modèle:Math 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 à Modèle:Math.
Construction par approximations discrètes
On peut déterminer directement par récurrence les coordonnées des sommets du graphe Modèle:Math. 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 Modèle:Math. 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 Modèle:Math 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) Modèle:Math comporte Modèle:Math sommets. Pris dans l'ordre de parcours, ils seront associés aux Modèle:Math é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 Modèle:Math correspondant à peuvent être calculées par récurrence[2] sur k variant de 0 à n, à partir des coordonnées du sommet du graphe Modèle:Math 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 Modèle:Math issus de (dont le sommet qui correspondant à .
Pour k = 0, le graphe Modèle:Math est réduit au point (0,0) et l'orientation adoptée pour construire Modèle:Math 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 Modèle:Math issus de et les coordonnées de sont, au facteur Modèle:Math 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 Modèle:Math sommets occupent le coin en bas en gauche des Modèle:Math petits carrés en suivant l'ordre du graphe Modèle:Math
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[3] :
- 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[4] propose un algorithme pour calculer la courbe de Hilbert en plusieurs dimensions.
Notes et références
Voir aussi
Articles connexes
Liens externes
- ↑ 1,0 1,1 et 1,2 Modèle:Article.
- ↑ Theodore 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, Modèle:P.).
- ↑ Modèle:Ouvrage.
- ↑ Modèle:Article.