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.

War es hilfreich?

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

http://mpqc.svn.sourceforge.net/viewvc/mpqc/trunk/mpqc/src/lib/chemistry/qc/lmp2/lmp2.cc?revision=9342&view=markup&pathrev=9492

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top