Sto scrivendo un programma per una simulazione numerica in C. Parte della simulazione sono nodi fissi nello spazio che hanno un valore float l'uno rispetto all'altro. È come un grafico diretto. Tuttavia, se due nodi sono troppo lontani, (più lontano di una lunghezza di taglio a) questo valore è 0.Come implementare una matrice enorme in C
Per rappresentare tutte queste "correlazioni" o valori float, ho provato a utilizzare un array 2D, ma dal Ho 100.000 e più nodi, che corrispondono a una memoria da 40 GB o giù di lì.
Ora, sto cercando di pensare a diverse soluzioni per quel problema. Non voglio salvare tutti questi valori sul disco fisso. Inoltre, non voglio calcolarli al volo. Un'idea era una sorta di matrice sparsa, come quella che si può usare in Matlab.
Avete altre idee, come conservare questi valori?
Sono nuovo di C, quindi per favore non aspettatevi troppa esperienza.
Grazie e cordiali saluti, Jan Oliver
Che dire di una specie di hash/mappa in cui la chiave è (riga x colonna)? Avrebbe solo tanti elementi quante sono le voci nella matrice con un valore diverso da zero. –
Non è una domanda specifica ... Sì, matrici sparse. Vai a cercare alcuni algoritmi ... Forse con alcuni dettagli sulla percentuale di nodi nulll nella matrice, o più informazioni sulla simulazione, forse qualcuno potrebbe suggerire altre soluzioni oltre una rappresentazione grah. – pascal
... per esempio, cosa vuoi fare con questa matrice? – pascal