Je ne savais pas bien à quoi m'attendre quand j'ai calculé cette
image, mais probablement pas à ça :
(Cliquez pour
une vue plus large.)
De quoi s'agit-il ? C'est une section plane aléatoire du
diagramme de Voronoï du réseau E₈ : il faut que j'explique ces
termes (mais is ça ne vous intéresse pas, il y a d'autres images, et
des liens vers des vidéos, plus
bas).
Le réseau E₈ est un arrangement régulier de points en
dimension 8, qui a toutes sortes de propriétés remarquables. En fait,
il n'est pas difficile de le définir concrètement : il s'agit des
octuplets (x₀,x₁,…,x₇) de nombres
réels tels que :
- les coordonnées x₀,x₁,…,x₇ sont
soit toutes entières soit toutes entières-et-demi
(par
entier-et-demi
je veux évidemment dire un nombre qui vaut
un entier plus ½, par exemple 5/2),
- la somme x₀+x₁+⋯+x₇ de toutes les
coordonnées (qui est forcément un entier d'après le point précédent)
est paire.
À titre d'exemple, (0, 0, 0, −1, 2, −1, 1, −1) et (−1.5, 2.5, −0.5,
1.5, −1.5, −0.5, −2.5, 0.5) sont dans le réseau E₈ ; en revanche, (0,
0, 0, −1, 2, −1, 1.5, −1.5) n'y sont pas (les coordonnées ne sont ni
toutes entières ni toutes entières-et-demi), et (−1.5, 2.5, −0.5, 1.5,
−1.5, −0.5, −2.5, 0.5) non plus (la somme n'est pas paire).
La somme ou différence de deux points du réseau E₈ est encore
dedans : c'est là la propriété essentielle d'être un réseau
(et
ce qu'un non-mathématicien qualifierait de points régulièrement
espacés
). Les points du réseau E₈ les plus proches de l'origine
(0,0,0,0,0,0,0,0) sont d'une part ceux de la forme (±1,±1,0,0,0,0,0,0)
(où exactement deux coordonnées, quelconques, valent soit 1 soit −1 :
ceci fait 28×4=112 possibilités — 28 choix de deux coordonnées et 4
choix de leurs signes), et d'autre part ceux de la forme
(±½,±½,±½,±½,±½,±½,±½,±½) (où chaque coordonnée vaut ½ ou −½, et où il
y a un nombre pair de valeurs −½ : ceci fait 2⁸/2=128
possibilités) : au total, 112+128=240 points tous à distance √2 de
l'origine ; ces 240 points sont ce qu'on appelle
les racines du système E₈ et
ils engendrent le réseau, mais ici c'est le réseau plus que
ses racines qui m'intéresse. Entre autres propriétés remarquables,
c'est le réseau E₈ qui réalise l'empilement optimal de boules
identiques en dimension 8 (mettre une boule de rayon (√2)/2 autour de
chaque point du réseau : elles se touchent sans se chevaucher et
remplissent 25.367% de l'espace, ce qui ne paraît peut-être pas
impressionnant, mais en dimension 8 on ne peut pas faire mieux).
Donné un ensemble (discret) de points dans l'espace euclidien,
le diagramme de Voronoï associé est la division de l'espace
en cellules de Voronoï, la cellule de Voronoï d'un point étant la
région des points de l'espace qui sont plus proches de ce point-là que
de tout autre point de l'ensemble. En général, un diagramme de
Voronoï ressemble à ce
que Google
images vous montrera (il est formé de cellules qui sont des
polytopes convexes dont les facettes sont hyperplans médiateurs entre
le point définissant la cellule et un autre point). Lorsque
l'ensemble des points est un réseau, toutes les cellules ont la même
forme : la cellule de Voronoï de l'origine est l'ensemble des points
plus proches de l'origine que de tout autre point du réseau, elle est
d'ailleurs symétrique, et toutes les autres cellules sont identiques
autour d'un autre point, elles sont translatées les unes des autres.
S'agissant du réseau E₈ précisément, la cellule de Voronoï de
l'origine est un polytope convexe ayant
240 facettes[#], une par racine
du système de racines, chaque facette étant un morceau de l'hyperplan
médiateur entre l'origine et la racine en question. (Il n'est pas
vrai dans un réseau en général que les facettes de la cellule de
Voronoï de l'origine soient ainsi définies uniquement par les points
les plus proches de l'origine. Mais c'est vrai pour ce qu'on appelle
un réseau de racines, et notamment E₈.)
[#] Il a aussi 19440
sommets : 2160 sont les points à distance 1 de l'origine ainsi que de
quinze autres points du réseau, on les appelle les trous
profonds
du réseau E₈ (un exemple d'un tel point est
(1,0,0,0,0,0,0,0)), et 17280 sont les points à distance (2√2)/3≈0.943
de l'origine ainsi que de sept autres et ce sont les trous
superficiels
(un exemple d'un tel point est (−5/6, 1/6, 1/6, 1/6,
1/6, 1/6, 1/6, 1/6)).
Bref, le diagramme de Voronoï du réseau E₈ est un pavage de
l'espace de dimension 8 par des copies (translatées) de ce polytope à
240 facettes, chacune étant centrée sur un point du réseau. Il y a un
algorithme assez simple[#2]
pour décider, quand on se donne un point de l'espace, à quelle cellule
de Voronoï il appartient, c'est-à-dire, trouver le point du réseau le
plus proche (on parle aussi d'algorithme de décodage
pour ce
réseau).
[#2] En voici une
description. Commençons par expliquer comment trouver le point du
réseau D₈ le plus proche d'un point donné, où le réseau D₈ est le
réseau formé des points de coordonnées toutes entières de somme paire
(c'est-à-dire les points du réseau E₈ dont toutes les coordonnées sont
entièrs). Donné (z₀,z₁,…,z₇) un
point à approcher, on appelle x₀ l'entier le plus proche
de z₀ et de même pour les autres : ceci fournit le point
(x₀,x₁,…,x₇) à coordonnées entières
le plus proche de (z₀,z₁,…,z₇). Si
la somme x₀+x₁+⋯+x₇ des coordonnées
est paire, c'est le point de D₈ recherché. Sinon, l'astuce suivante
permet de le trouver : parmi les coordonnées x, prendre
celle qui est le plus loin du z correspondant, et
la remplacer par l'arrondi de ce z dans l'autre sens. À
titre d'exemple, si on part du point (0.3, −0.1, 0.1, −1.0, 2.0, −0.4,
0.9, −0.7), l'arrondi des coordonnées à l'entier le plus proche donne
(0, 0, 0, −1, 2, 0, 1, −1), la somme est impaire, donc on corrige le
plus mauvais arrondi, à savoir −0.4 transformé en 0, en prenant
l'entier de l'autre côté, donc −1, ce qui donne le point (0, 0, 0, −1,
2, −1, 1, −1) qui est le point du réseau D₈ le plus proche du point
initial. S'agissant du réseau E₈, maintenant, on peut faire ce calcul
une fois pour trouver le point de D₈ le plus proche, puis soustraire ½
toutes les coordonnées, refaire le calcul pour trouver le point de D₈
le plus proche du point ainsi modifié et rajouter ½ à toutes les
coordonnées : on obtient ainsi deux points de E₈ (l'un dans D₈ et
l'autre dans D₈+(½,½,½,½,½,½,½,½)) ; il n'y a plus qu'à comparer la
distance de ces deux points au point d'origine et choisir le plus
proche (soit en comparant les distances soit en calculant l'équation
de l'hyperplan médiateur, ce qui revient essentiellement au même). Il
existe des algorithmes légèrement plus efficaces que ce que je viens
de décrire, mais en contrepartie ils sont plus fastidieux à
implémenter et je pense que ça n'en vaut pas la peine.
[Lire la suite…]