Praktische Verwendung von N-dimensionalen Arrays, wobei (N> 3)
-
30-09-2019 - |
Frage
Ich habe in den letzten 8 Jahren Programmierung und jetzt habe mich gefragt, ich nur, dass, wenn es eine praktische Verwendung von N-dimensionalen Array, wobei N> 3.I kann nur visualisieren einer Datenstruktur, die als kleiner oder gleich bis 3 dimensions.Has einem in jedem Programm mehr als 3 Dimensionen verwendet? gibt es praktische Anwendungen eines ND-Array, das über 3D ist? Wenn ja, bitte einige Beispiele stellen.
Lösung
Der einzige anständige Beispiel I Rückruf war in 1982 Text Oh! Pascal! , die Ihnen eine Vorstellung davon, wie selten gibt es in meiner Erfahrung.
Das Beispiel war ein Lagerhaltungssystem, in dem Jeans indiziert werden kann durch
inventory[sex][size][length][color][fit] = number_received
, die nur wenig gekünstelt ist. Sie würden kein Problem mit einer Datenbank so strukturiert haben, aber es sieht lustig als Code.
Andere Tipps
Nehmen Sie fast alles aus der Physik, wo Tensoren üblich sind, zum Beispiel der allgemeine Relativitätstheorie, Computerchemie, Quantenphysik.
http://en.wikipedia.org/wiki/Tensor#Applications
Tensor mit Rang 4 ist üblich, zum Beispiel.
http://www.oonumerics.org/FTensor/FTensor.pdf
333 double
334 LMP2::compute_ecorr_lmp2()
335 {
336 Timer tim("ecorr");
337
338 sma2::Index r("r"), s("s");
339 sma2::Array<0> ecorr;
340 double ecorr_lmp2 = 0.0;
341 for (my_occ_pairs_t::const_iterator iter = my_occ_pairs_.begin();
342 iter != my_occ_pairs_.end();
343 iter++) {
344 sma2::Index i(iter->first-nfzc_);
345 sma2::Index j(iter->second-nfzc_);
346 if (j.value() > i.value()) continue;
347 double f;
348 if (i.value() != j.value()) f = 2.0;
349 else f = 1.0;
350 ecorr.zero();
351 ecorr() += f * 2.0 * K_2occ_(i,j,r,s) * T_local_(i,j,r,s);
352 ecorr() -= f * K_2occ_(i,j,s,r) * T_local_(i,j,r,s);
353 ecorr_lmp2 += ecorr.value();
354 }
355
356 msg_->sum(ecorr_lmp2);
357
358 return ecorr_lmp2;
359 }
Das offensichtlichste Beispiel ist eine Liste der Voxel Räume ... 3 + 1 = 4 Dimensionen:)
Ein Array alle der Dungeons in Ultima III logisch ein 4-dimensionalen Array würde halten. Jeder Dungeon ist ein dreidimensionales Gitter von Zellen, und sie sind alle gleich groß sind.