2014-11-09 89 views
0

我一直在努力理解以下问题。Java零矩阵内存使用情况

零矩阵必然有效的内存?零矩阵是否花费更少的内存(或者不花费任何内存)?

我试图在java中验证它,但事实证明内存已分配给指定的大小。

我不确定C/C++或其他语言如matlab和octave以及它们如何管理矩阵和向量内存;

我之所以问这个问题的原因是想要建立一个大尺寸的稀疏矩阵,但大多数条目都是零,事实证明java并不是一个好的选择,因为java中的零矩阵仍然花费很多内存。有没有人对这个问题有过任何经验?不知道你如何处理它,你的帮助将不胜感激。

感谢

+3

直接在任何语言中分配一个空数组将花费很多内存。不管语言如何,你应该使用专门为稀疏数组或矩阵设计的数据结构。 – 2014-11-09 01:44:36

回答

1

直白填零矩阵将花费您在任何语言:分配的数量并不取决于你用填充它什么数字。

看看例如提供稀疏矩阵支持的UJMP以及许多算法。可能存在其他实现。

一般来说,如果您发现某些难以实现但可能有用的内容,则可以使用Google for open-libraries库。很多车轮已经发明了。

+0

非常感谢9000,请仔细看看UJMP,谢谢。 – Luke 2014-11-09 06:12:35

0

因为你必须为你的矩阵分配空间,它将占用空间而不管它将容纳哪些数字。 (即使为空)。

但是我可以想象有人在某处设计了一个数据结构来处理这个问题。

我脑海里首先想到的是,你可以创建一个数据结构,它保存与其相应的值的位置。如果您要求在给定位置上不存在的值,则可以返回0.当然,这对于只有几个零的小矩阵或矩阵来说效率不高。只是一个想法。