N 维数组的实际使用,其中 (N>3)

问题描述 投票:0回答:4

过去 8 年我一直在编程,现在我只是想知道 N 维数组是否有任何实际用途,其中 N>3。我只能可视化小于或等于 3 的数据结构维度。有没有人在任何程序中使用超过 3 维的维度?是否有超过 3 维的 N 维数组的实际用途?如果是,请发布一些示例。

arrays multidimensional-array
4个回答
3
投票

几乎可以采用张量常见的物理学中的任何内容,例如广义相对论、计算化学、量子物理学。

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
投票

我记得的唯一像样的例子是 1982 年的文本 哦!帕斯卡! 这让你知道它在我的经历中是多么罕见。

这个例子是一个库存系统,其中牛仔裤可以通过

进行索引
 inventory[sex][size][length][color][fit] = number_received

这只是稍微做作的。对于以这种方式构建的数据库不会有任何问题,但它作为代码看起来确实很有趣。


2
投票

最明显的例子是体素空间列表... 3 + 1 = 4 维:)


2
投票

包含《创世纪 III》中所有地下城的数组在逻辑上是一个 4 维数组。每个地牢都是一个三维的细胞网格,它们的大小都相同。

© www.soinside.com 2019 - 2024. All rights reserved.