D'autres ont décrit le cadre général de la conception (plan projectif fini) et montré comment générer des plans projectifs finis d'ordre premier. Je voudrais juste combler certaines lacunes.
Des plans projectifs finis peuvent être générés pour de nombreux ordres différents, mais ils sont plus simples dans le cas d'un ordre premier p
. Ensuite, les entiers modulo p
forment un champ fini qui peut être utilisé pour décrire les coordonnées des points et des lignes dans le plan. Il y a 3 différents types de coordonnées pour les points: (1,x,y)
, (0,1,x)
et (0,0,1)
où x
et y
peuvent prendre des valeurs de 0
la p-1
. Les 3 différents types de points expliquent la formule p^2+p+1
du nombre de points dans le système. On peut aussi décrire les lignes avec les mêmes 3 types de coordonnées différentes: [1,x,y]
, [0,1,x]
et [0,0,1]
.
Nous calculons si un point et une ligne sont incidents par si le produit scalaire de leurs coordonnées est égal à 0 mod p
. Ainsi, par exemple, le point (1,2,5)
et la ligne [0,1,1]
sont incidents p=7
depuis 1*0+2*1+5*1 = 7 == 0 mod 7
, mais le point (1,3,3)
et la ligne [1,2,6]
ne sont pas incidents depuis 1*1+3*2+3*6 = 25 != 0 mod 7
.
En traduisant dans le langage des cartes et des images, cela signifie que la carte avec les coordonnées (1,2,5)
contient l'image avec les coordonnées [0,1,1]
, mais la carte avec les coordonnées (1,3,3)
ne contient pas l'image avec les coordonnées [1,2,6]
. Nous pouvons utiliser cette procédure pour développer une liste complète des cartes et des images qu'elles contiennent.
Soit dit en passant, je pense qu'il est plus facile de considérer les images comme des points et des cartes comme des lignes, mais il y a une dualité dans la géométrie projective entre les points et les lignes, donc cela n'a vraiment pas d'importance. Cependant, dans ce qui suit, j'utiliserai des points pour les images et des lignes pour les cartes.
La même construction fonctionne pour tout champ fini. Nous savons qu'il existe un champ d'ordre fini q
si et seulement si q=p^k
, une puissance première. Le champ est appelé GF(p^k)
ce qui signifie "champ de Galois". Les champs ne sont pas aussi faciles à construire dans le cas de puissance principale que dans le cas principal.
Heureusement, le travail acharné a déjà été fait et mis en œuvre dans les logiciels libres, à savoir Sage . Pour obtenir une conception de plan projectif d'ordre 4, par exemple, tapez simplement
print designs.ProjectiveGeometryDesign(2,1,GF(4,'z'))
et vous obtiendrez une sortie qui ressemble à
ProjectiveGeometryDesign<points=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20], blocks=[[0, 1, 2, 3, 20], [0,
4, 8, 12, 16], [0, 5, 10, 15, 19], [0, 6, 11, 13, 17], [0, 7, 9, 14,
18], [1, 4, 11, 14, 19], [1, 5, 9, 13, 16], [1, 6, 8, 15, 18], [1, 7,
10, 12, 17], [2, 4, 9, 15, 17], [2, 5, 11, 12, 18], [2, 6, 10, 14, 16],
[2, 7, 8, 13, 19], [3, 4, 10, 13, 18], [3, 5, 8, 14, 17], [3, 6, 9, 12,
19], [3, 7, 11, 15, 16], [4, 5, 6, 7, 20], [8, 9, 10, 11, 20], [12, 13,
14, 15, 20], [16, 17, 18, 19, 20]]>
J'interprète ce qui précède comme suit: il y a 21 images étiquetées de 0 à 20. Chacun des blocs (ligne en géométrie projective) me dit quelles images apparaissent sur une carte. Par exemple, la première carte aura les images 0, 1, 2, 3 et 20; la deuxième carte aura les images 0, 4, 8, 12 et 16; etc.
Le système d'ordre 7 peut être généré par
print designs.ProjectiveGeometryDesign(2,1,GF(7))
qui génère la sortie
ProjectiveGeometryDesign<points=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56], blocks=[[0, 1, 2, 3, 4, 5, 6,
56], [0, 7, 14, 21, 28, 35, 42, 49], [0, 8, 16, 24, 32, 40, 48, 50], [0,
9, 18, 27, 29, 38, 47, 51], [0, 10, 20, 23, 33, 36, 46, 52], [0, 11, 15,
26, 30, 41, 45, 53], [0, 12, 17, 22, 34, 39, 44, 54], [0, 13, 19, 25,
31, 37, 43, 55], [1, 7, 20, 26, 32, 38, 44, 55], [1, 8, 15, 22, 29, 36,
43, 49], [1, 9, 17, 25, 33, 41, 42, 50], [1, 10, 19, 21, 30, 39, 48,
51], [1, 11, 14, 24, 34, 37, 47, 52], [1, 12, 16, 27, 31, 35, 46, 53],
[1, 13, 18, 23, 28, 40, 45, 54], [2, 7, 19, 24, 29, 41, 46, 54], [2, 8,
14, 27, 33, 39, 45, 55], [2, 9, 16, 23, 30, 37, 44, 49], [2, 10, 18, 26,
34, 35, 43, 50], [2, 11, 20, 22, 31, 40, 42, 51], [2, 12, 15, 25, 28,
38, 48, 52], [2, 13, 17, 21, 32, 36, 47, 53], [3, 7, 18, 22, 33, 37, 48,
53], [3, 8, 20, 25, 30, 35, 47, 54], [3, 9, 15, 21, 34, 40, 46, 55], [3,
10, 17, 24, 31, 38, 45, 49], [3, 11, 19, 27, 28, 36, 44, 50], [3, 12,
14, 23, 32, 41, 43, 51], [3, 13, 16, 26, 29, 39, 42, 52], [4, 7, 17, 27,
30, 40, 43, 52], [4, 8, 19, 23, 34, 38, 42, 53], [4, 9, 14, 26, 31, 36,
48, 54], [4, 10, 16, 22, 28, 41, 47, 55], [4, 11, 18, 25, 32, 39, 46,
49], [4, 12, 20, 21, 29, 37, 45, 50], [4, 13, 15, 24, 33, 35, 44, 51],
[5, 7, 16, 25, 34, 36, 45, 51], [5, 8, 18, 21, 31, 41, 44, 52], [5, 9,
20, 24, 28, 39, 43, 53], [5, 10, 15, 27, 32, 37, 42, 54], [5, 11, 17,
23, 29, 35, 48, 55], [5, 12, 19, 26, 33, 40, 47, 49], [5, 13, 14, 22,
30, 38, 46, 50], [6, 7, 15, 23, 31, 39, 47, 50], [6, 8, 17, 26, 28, 37,
46, 51], [6, 9, 19, 22, 32, 35, 45, 52], [6, 10, 14, 25, 29, 40, 44,
53], [6, 11, 16, 21, 33, 38, 43, 54], [6, 12, 18, 24, 30, 36, 42, 55],
[6, 13, 20, 27, 34, 41, 48, 49], [7, 8, 9, 10, 11, 12, 13, 56], [14, 15,
16, 17, 18, 19, 20, 56], [21, 22, 23, 24, 25, 26, 27, 56], [28, 29, 30,
31, 32, 33, 34, 56], [35, 36, 37, 38, 39, 40, 41, 56], [42, 43, 44, 45,
46, 47, 48, 56], [49, 50, 51, 52, 53, 54, 55, 56]]>