Définition d'un hypercube de dimension N






Jean-François COLONNA
[Contact me]

www.lactamme.polytechnique.fr

CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641, École polytechnique, Institut Polytechnique de Paris, CNRS, France

[Site Map, Help and Search [Plan du Site, Aide et Recherche]]
[The Y2K Bug [Le bug de l'an 2000]]
[Real Numbers don't exist in Computers and Floating Point Computations aren't safe. [Les Nombres Réels n'existent dans les Ordinateurs et les Calculs Flottants ne sont pas sûrs.]]
[N'oubliez pas de visiter Une Machine Virtuelle à Explorer l'Espace-Temps et au-delà où vous trouverez plusieurs milliers d'images et d'animations à la frontière de l'Art et de la Science]
(Site WWW CMAP28 : cette page a été créée le 03/05/2023 et mise à jour le 14/11/2023 17:51:27 -CET-)



/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N   H Y P E R C U B E   D E   D I M E N S I O N   ' N '  :                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition  ('v $xtc/hyper_cube.02$c') :                                                                                   */
/*                                                                                                                                   */
/*                    Un cube peut etre defini par ses aretes et donc                                                                */
/*                  par des couples de sommets adjacents. Chacun d'entre-eux                                                         */
/*                  sera identifie par 'XYZ' ou 'X', 'Y' et 'Z' sont ses                                                             */
/*                  coordonnees que l'on suppose valoir 0 ou 1. Elles                                                                */
/*                  peuvent alors etre aussi considerees comme des bits                                                              */
/*                  et donc ces 3 bits 'XYZ' seront un numero des sommets                                                            */
/*                  entre 0 et 7...                                                                                                  */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                                                     011  -----------------------------  111                       */
/*                                                                        /.                            /|                           */
/*                                                                       / .                           / |                           */
/*                                                                      /  .                          /  |                           */
/*                                                                     /   .                         /   |                           */
/*                                                                    /    .                        /    |                           */
/*                                                                   /     .                       /     |                           */
/*                                                                  /      .                      /      |                           */
/*                                                                 /       .                     /       |                           */
/*                                                                /        .                    /        |                           */
/*                                                           010  -----------------------------  110     |                           */
/*                                                               |         .                   |         |                           */
/*                                                               |         .                   |         |                           */
/*                                                               |         .                   |         |                           */
/*                                                               |         .                   |         |                           */
/*                                                               |         .                   |         |                           */
/*                                                               |         .                   |         |                           */
/*                                                               |         .                   |         |                           */
/*                                                               |      001. . . . . . . . . . | . . . . | 101                       */
/*                                                               |        .                    |        /                            */
/*                                                               |       .                     |       /                             */
/*                                                               |      .                      |      /                              */
/*                                      Y^                       |     .                       |     /                               */
/*                                       |                       |    .                        |    /                                */
/*                                       |    Z                  |   .                         |   /                                 */
/*                                       |  /                    |  .                          |  /                                  */
/*                                       | /                     | .                           | /                                   */
/*                                       |/                      |.                            |/                                    */
/*                                       O-------->          000  -----------------------------  100                                 */
/*                                                X                                                                                  */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                    On note alors que les deux sommets {n1,n2}                                                                     */
/*                  definissant une arete sont codes par les memes                                                                   */
/*                  bits sauf un. Le "ou exclusif" de leurs numeros                                                                  */
/*                  ne contiendra donc qu'un seul bit 1, tous les autres                                                             */
/*                  etant nuls. Il correspondra a une puissance de 2,                                                                */
/*                  ce qui implique que son logarithme en base 2                                                                     */
/*                  sera un nombre entier.                                                                                           */
/*                                                                                                                                   */
/*                    C'est donc ainsi que sera defini un hypercube                                                                  */
/*                  de dimension N. Voici donc la procedure :                                                                        */
/*                                                                                                                                   */
/*                  1-Generer la liste L1 des entiers 'n' dans [0,(2^N)-1].                                                          */
/*                                                                                                                                   */
/*                  2-Generer la liste L2 des couples differents {n1,n2}                                                             */
/*                  'n1' et n2' appartenant a L1 et l'ordre etant indifferent.                                                       */
/*                                                                                                                                   */
/*                  3-Calculer pour tout couple {n1,n2} :                                                                            */
/*                                                                                                                                   */
/*                                      A = log (n1.EOR.n2)                                                                          */
/*                                             2                                                                                     */
/*                                                                                                                                   */
/*                  ('.EOR.' etant l'operateur "ou exclusif").                                                                       */
/*                                                                                                                                   */
/*                  Si 'A' est un nombre entier, alors le couple {n1,n2}                                                             */
/*                  defini une arete de l'hypercube de dimension N.                                                                  */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                    A titre d'exemple, voici la generation de                                                                      */
/*                  l'hypercube de dimension 3 (c'est-a-dire le                                                                      */
/*                  cube "standard") donnee par 'v $xtc/hyper_cube.12$c' :                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                            Generation de la liste des entiers de 0 a 7 (liste 'L1') :                                             */
/*                                                                                                                                   */
/*                                      n                                                                                            */
/*                                                                                                                                   */
/*                                      000                                                                                          */
/*                                      001                                                                                          */
/*                                      010                                                                                          */
/*                                      011                                                                                          */
/*                                      100                                                                                          */
/*                                      101                                                                                          */
/*                                      110                                                                                          */
/*                                      111                                                                                          */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                            Generation des aretes (liste 'L2') :                                                                   */
/*                                                                                                                                   */
/*                                          n1  n2                                                                                   */
/*                                                                                                                                   */
/*                                      EOR(000,001)=001     log2=0          arete={000,001}                                         */
/*                                                                                                                                   */
/*                                      EOR(000,010)=010     log2=1          arete={000,010}                                         */
/*                                      EOR(001,010)=011     log2=1.584963                                                           */
/*                                                                                                                                   */
/*                                      EOR(000,011)=011     log2=1.584963                                                           */
/*                                      EOR(001,011)=010     log2=1          arete={001,011}                                         */
/*                                      EOR(010,011)=001     log2=0          arete={010,011}                                         */
/*                                                                                                                                   */
/*                                      EOR(000,100)=100     log2=2          arete={000,100}                                         */
/*                                      EOR(001,100)=101     log2=2.321928                                                           */
/*                                      EOR(010,100)=110     log2=2.584963                                                           */
/*                                      EOR(011,100)=111     log2=2.807355                                                           */
/*                                                                                                                                   */
/*                                      EOR(000,101)=101     log2=2.321928                                                           */
/*                                      EOR(001,101)=100     log2=2          arete={001,101}                                         */
/*                                      EOR(010,101)=111     log2=2.807355                                                           */
/*                                      EOR(011,101)=110     log2=2.584963                                                           */
/*                                      EOR(100,101)=001     log2=0          arete={100,101}                                         */
/*                                                                                                                                   */
/*                                      EOR(000,110)=110     log2=2.584963                                                           */
/*                                      EOR(001,110)=111     log2=2.807355                                                           */
/*                                      EOR(010,110)=100     log2=2          arete={010,110}                                         */
/*                                      EOR(011,110)=101     log2=2.321928                                                           */
/*                                      EOR(100,110)=010     log2=1          arete={100,110}                                         */
/*                                      EOR(101,110)=011     log2=1.584963                                                           */
/*                                                                                                                                   */
/*                                      EOR(000,111)=111     log2=2.807355                                                           */
/*                                      EOR(001,111)=110     log2=2.584963                                                           */
/*                                      EOR(010,111)=101     log2=2.321928                                                           */
/*                                      EOR(011,111)=100     log2=2          arete={011,111}                                         */
/*                                      EOR(100,111)=011     log2=1.584963                                                           */
/*                                      EOR(101,111)=010     log2=1          arete={101,111}                                         */
/*                                      EOR(110,111)=001     log2=0          arete={110,111}                                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/


(Nota : les lignes d'explications qui précèdent sont des commentaires extraits des programmes ayant été utilisés pour calculer les images correspondantes. Ce programme en est un exemple parmi des centaines.)


Copyright © Jean-François COLONNA, 2023-2023.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2023-2023.