Utilisation pratique des tableaux à N dimensions, où (N> 3)
-
30-09-2019 - |
Question
Je suis la programmation depuis les 8 dernières années et maintenant je me demandais s'il y a une utilisation pratique de la matrice N-dimensionnelle, où N> 3.J'ai ne visualisent d'une structure de données qui est inférieure ou égale 3 dimensions.Has une utilisé plus de 3 dimensions dans un programme? Existe-t-il des utilisations pratiques d'un tableau ND qui est au-delà de la 3D? Si oui s'il vous plaît poster quelques échantillons.
La solution
Le seul exemple décent je me souviens était dans le texte 1982 Oh! Pascal! qui vous donne une idée de la façon dont il a été rare dans mon expérience.
L'exemple était un système de gestion des stocks où les jeans peuvent être indexés par
inventory[sex][size][length][color][fit] = number_received
qui est légèrement arrangea. Vous auriez pas de problème avec une base de données structurée de telle façon, mais il ne semble drôle code.
Autres conseils
Prenez presque tout de la physique, où tenseurs sont communs, par exemple la relativité générale, la chimie computationnelle, la physique quantique.
http://en.wikipedia.org/wiki/Tensor#Applications
Tensor avec le rang 4 est commun par exemple.
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 }
L'exemple le plus évident est la liste des espaces de voxels ... 3 + 1 = 4 dimensions:)
Un tableau contenant tous les donjons dans Ultima III serait logiquement une matrice quatre dimensions. Chaque donjon est une grille en trois dimensions des cellules, et ils sont tous de la même taille.