Iniziamo quindi con il semplice approccio per calcolare il minimo indispensabile e trovare ulteriori mezzi per ridurre le dimensioni richieste.
Un quadrato magico 5x5 contiene i valori da 1 a 25. Detto in un altro modo, abbiamo 25 numeri potenziali da memorizzare.
Ci sono 25 celle nella griglia e 5 righe.
Primo approccio
L'approccio più semplice consiste nell'utilizzare 1 byte per cella.
Quindi questo è 25 byte per griglia.
25 byte per 275.305.224 combinazioni sono 6.882.630.600 byte o 6.4 GB.
Secondo approccio
Ma abbiamo solo bisogno di 5 bit per rappresentare quei 25 numeri potenziali.
5 bit per cella di tempo 25 celle ci dà 15 byte, 5 bit per griglia.
15.625 byte per ora di griglia 275.305.224 combinazioni è 4,301,644,125 byte o 4 GB.
3 ° approccio
Come indicato nella tua domanda, abbiamo solo bisogno di mantenere 14 delle 25 celle poiché possiamo calcolare in modo affidabile le celle mancanti per ricreare la griglia.
Quindi possiamo modificare il 2o approccio per ridurre ulteriormente la nostra memoria richiesta.
5 bit per cella di volte 14 celle ci danno 8 byte, 6 bit per griglia.
8.75 byte per ora di griglia 275.305.224 combinazioni è 2.408.920.710 byte o 2.2 GB
4 ° approccio
Secondo questo sito dedicato ai quadrati magici , ci sono 1.394 modi per aggiungere fino a 65 utilizzando i numeri 1 - 25 Quindi sono 1.394 riduzioni.
Abbiamo bisogno di 11 bit per rappresentare quelle 1.394 riduzioni.
E ora abbiamo solo bisogno di mantenere 5 riduzioni invece di 25 celle.
11 bit per 5 riduzioni ci dà 6 byte, 7 bit per griglia.
6.875 byte per tempo di griglia 275.305.224 combinazioni è 1.892.723.415 byte o 1.7 GB
5 ° approccio
Possiamo combinare la tecnica cellulare minima richiesta con un approccio di riduzione per ridurre ulteriormente lo spazio richiesto.
In questo approccio, abbiamo solo bisogno di mantenere 4 delle 5 riduzioni poiché possiamo calcolare la rimanente riga di valori.
11 bit volte 4 riduzioni ci danno 5 byte, 4 bit per griglia.
5,5 byte per ora di griglia 275.305.224 combinazioni è 1.514,178,732 o 1,4 GB.
6 ° approccio
Basato su Pieter B's osservazione dei quadrati magici , possiamo ridurre il numero di combinazioni potenziali che dobbiamo memorizzare.
You can rotate a magic square 90 degrees and it will still be good and you can mirror one and it will still be good, so 1 square can actually stand as a solution for 8 squares.
Che ci porta da 275.305.224 combinazioni a 34.413.153 combinazioni.
E usando il nostro quinto approccio, ora abbiamo:
11 bit volte 4 riduzioni ci danno 5 byte, 4 bit per griglia.
5,5 byte per ora di griglia 34,413,153 combinazioni ci danno 189,272,341,5 byte o 180,5 MB.
Note conclusive:
Un buon algoritmo di compressione dovrebbe essere in grado di trovare modelli aggiuntivi all'interno delle riduzioni elencate e ridurre ulteriormente la quantità di spazio richiesto. Ultimamente non ho giocato con le permutazioni calcolatrici, quindi non ho intenzione di scommettere su quanta ulteriore compressione si vedrebbe da un buon algoritmo di compressione.