Outros descreveram a estrutura geral do projeto (plano projetivo finito) e mostraram como gerar planos projetivos finitos de ordem primordial. Gostaria apenas de preencher algumas lacunas.
Planos projetivos finitos podem ser gerados para muitos pedidos diferentes, mas são mais diretos no caso de ordem primordial p
. Então o módulo inteiro p
forma um campo finito que pode ser usado para descrever coordenadas para os pontos e linhas no plano. Existem 3 tipos diferentes de coordenadas para pontos: (1,x,y)
, (0,1,x)
e (0,0,1)
, onde x
e y
pode assumir valores de 0
a p-1
. Os três tipos diferentes de pontos explicam a fórmula p^2+p+1
para o número de pontos no sistema. Nós também pode descrever as linhas com os mesmos 3 tipos diferentes de coordenadas [1,x,y]
, [0,1,x]
e [0,0,1]
.
Calculamos se um ponto e uma linha são incidentes, se o produto escalar de suas coordenadas é igual a 0 mod p
. Assim, por exemplo, o ponto (1,2,5)
e a linha [0,1,1]
são incidentes p=7
desde então 1*0+2*1+5*1 = 7 == 0 mod 7
, mas o ponto (1,3,3)
e a linha [1,2,6]
não são incidentes desde então 1*1+3*2+3*6 = 25 != 0 mod 7
.
Ao traduzir para o idioma dos cartões e figuras, significa que o cartão com coordenadas (1,2,5)
contém a imagem com coordenadas [0,1,1]
, mas o cartão com coordenadas (1,3,3)
não contém a imagem com coordenadas [1,2,6]
. Podemos usar este procedimento para desenvolver uma lista completa de cartões e as imagens que eles contêm.
A propósito, acho que é mais fácil pensar em imagens como pontos e cartões como linhas, mas há uma dualidade na geometria projetiva entre pontos e linhas, por isso realmente não importa. No entanto, a seguir, usarei pontos para fotos e linhas para cartões.
A mesma construção funciona para qualquer campo finito. Sabemos que existe um campo finito de ordem, q
se e somente se q=p^k
, uma potência principal. É chamado o campo GF(p^k)
que significa "campo de Galois". Os campos não são tão fáceis de construir no caso de potência principal quanto no caso de potência principal.
Felizmente, o trabalho duro já foi feito e implementado em software livre, o Sage . Para obter um design de plano projetivo da ordem 4, por exemplo, basta digitar
print designs.ProjectiveGeometryDesign(2,1,GF(4,'z'))
e você obterá uma saída que se parece
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]]>
Interpreto o exposto da seguinte maneira: existem 21 figuras rotuladas de 0 a 20. Cada um dos blocos (linha na geometria projetiva) me diz quais figuras aparecem em um cartão. Por exemplo, o primeiro cartão terá as figuras 0, 1, 2, 3 e 20; o segundo cartão terá as figuras 0, 4, 8, 12 e 16; e assim por diante.
O sistema da ordem 7 pode ser gerado por
print designs.ProjectiveGeometryDesign(2,1,GF(7))
que gera a saída
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]]>