Altri hanno descritto il quadro generale per la progettazione (piano proiettivo finito) e hanno mostrato come generare piani proiettivi finiti di ordine primo. Vorrei solo colmare alcune lacune.
I piani proiettivi finiti possono essere generati per molti ordini diversi, ma sono più semplici nel caso dell'ordine primario p. Quindi gli interi modulo pformano un campo finito che può essere usato per descrivere le coordinate per i punti e le linee nel piano. Ci sono 3 diversi tipi di coordinate per punti: (1,x,y), (0,1,x), e (0,0,1), dove xe ypossono assumere valori da 0a p-1. I 3 diversi tipi di punti spiegano la formula p^2+p+1per il numero di punti nel sistema. Possiamo anche descrivere linee con le stesse 3 diversi tipi di coordinate [1,x,y], [0,1,x]e[0,0,1] .
Calcoliamo se un punto e una linea sono incidenti se il prodotto punto delle loro coordinate è uguale a 0 mod p. Quindi, ad esempio, il punto (1,2,5)e la linea [0,1,1]sono incidenti quando da p=7allora 1*0+2*1+5*1 = 7 == 0 mod 7, ma il punto (1,3,3)e la linea [1,2,6]non sono incidenti da allora 1*1+3*2+3*6 = 25 != 0 mod 7.
Traducendo nella lingua delle carte e delle immagini, ciò significa che la carta con le coordinate (1,2,5)contiene l'immagine con le coordinate [0,1,1], ma la carta con le coordinate (1,3,3)non contiene l'immagine con le coordinate [1,2,6]. Possiamo usare questa procedura per sviluppare un elenco completo di carte e le immagini che contengono.
A proposito, penso che sia più facile pensare alle immagini come punti e carte come linee, ma c'è una dualità nella geometria proiettiva tra punti e linee, quindi non importa davvero. Tuttavia, in quanto segue userò punti per le immagini e linee per le carte.
La stessa costruzione funziona per qualsiasi campo finito. Sappiamo che esiste un campo di ordine finito qse e solo se q=p^k, una potenza primaria. Il campo si chiama GF(p^k)che sta per "campo di Galois". I campi non sono così facili da costruire nel caso del potere principale come lo sono nel caso principale.
Fortunatamente, il duro lavoro è già stato fatto e implementato nel software libero, vale a dire Sage . Per ottenere un progetto di piano proiettivo dell'ordine 4, ad esempio, basta digitare
print designs.ProjectiveGeometryDesign(2,1,GF(4,'z'))
e otterrai un output simile
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 quanto sopra come segue: ci sono 21 immagini etichettate da 0 a 20. Ciascuno dei blocchi (linea nella geometria proiettiva) mi dice quali immagini appaiono su una carta. Ad esempio, la prima carta avrà le immagini 0, 1, 2, 3 e 20; la seconda carta avrà le immagini 0, 4, 8, 12 e 16; e così via.
Il sistema dell'ordine 7 può essere generato da
print designs.ProjectiveGeometryDesign(2,1,GF(7))
che genera l'output
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]]>