Практическое использование N-мерных массивов, где (N> 3) - PullRequest
5 голосов
/ 04 сентября 2010

Я программировал последние 8 лет, и теперь мне просто интересно, есть ли практическое применение N-мерного массива, где N> 3. Я могу только визуализировать структуру данных, которая меньше или равна до 3-х измерений. Использовал ли какой-либо более 3-х измерений в любой программе? Есть ли практическое применение массива ND, выходящего за рамки 3D? Если это так, пожалуйста, опубликуйте несколько примеров.

Ответы [ 4 ]

3 голосов
/ 04 сентября 2010

Возьмите почти все из физики, где обычны тензоры, например, общую теорию относительности, вычислительную химию, квантовую физику.

http://en.wikipedia.org/wiki/Tensor#Applications

Например, тензор с рангом 4 является обычным.

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     } 
2 голосов
/ 04 сентября 2010

Массив, содержащий все подземелья в Ultima III, был бы логически 4-мерным массивом. Каждое подземелье представляет собой трехмерную сетку ячеек, и все они имеют одинаковый размер.

2 голосов
/ 04 сентября 2010

Единственный достойный пример, который я помню, был в тексте 1982 года О!Паскаль! , который дает вам некоторое представление о том, как редко это встречалось в моем опыте.

В качестве примера была система хранения, где джинсы можно индексировать по

 inventory[sex][size][length][color][fit] = number_received

только слегка надуманный.У вас не будет проблем с базой данных, структурированной таким образом, но она выглядит забавно, как код.

2 голосов
/ 04 сентября 2010

Наиболее очевидный пример - список воксельных пространств ... 3 + 1 = 4 измерения:)

...