Практическое использование N-мерных массивов, где (N> 3)
-
30-09-2019 - |
Вопрос
Я был программирован за последние 8 лет, и теперь мне просто интересно, что если есть практическое использование N-мерного массива, где n> 3.i может визуализировать только структуру данных, которая меньше или равна 3 измерениям .Has Любой использовал более 3 измерений в любой программе? Есть ли практическое использование массива ND, который за пределами 3D? Если это так, пожалуйста, опубликуйте некоторые образцы.
Решение
Единственный приличный пример, который я помню, был в тексте 1982 года Ой! Паскаль! Что дает вам некоторое представление о том, как редко это было в моем опыте.
Пример был системой стокового ведения, где джинсы могут быть проиндексированы
inventory[sex][size][length][color][fit] = number_received
который только слегка надумал. У вас нет проблем с базой данных, структурированной таким образом, но она выглядит забавно, как код.
Другие советы
Возьмите почти все от физики, где распространены тензоры, например, всеобщая теория относительности, вычислительной химии, квантовая физика.
http://en.wikipedia.org/wiki/tensor#Applications.
Tensor с Rank 4 распространен, например.
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 }
Наиболее очевидный пример представляет собой список пробелов воксельных ... 3 + 1 = 4 Размеры :)
Массив, удерживающий все подземелья в ULTIMA III, будет логически 4-мерным массивом. Каждая подземелье представляет собой трехмерную сетку клеток, и они все одинаковы.