我一直在努力理解以下问题。
零矩阵必然是内存有效吗?零矩阵成本更低的内存(或不花费任何内存)?
我试图在java中验证它,但事实证明已经为指定的大小分配了内存。
我不确定C / C ++或其他语言,如matlab和octave,以及它们如何管理矩阵和矢量内存;
我之所以要问这个是想要构建一个庞大的稀疏矩阵,但大多数条目都是零,事实证明java不是一个好选择,因为java中的零矩阵仍然需要大量内存。有没有人有这个问题的经验?不知道你如何处理它,你的帮助将不胜感激。
由于
答案 0 :(得分:1)
直接零填充矩阵将以任何语言花费您:分配的金额不取决于您填写的数字。
看看例如提供稀疏矩阵支持的UJMP和许多算法。可能存在其他实现。
一般情况下,如果您发现某些内容难以实施但可能有用,请访问google以获取开源库。机会已经发明了许多轮子。
答案 1 :(得分:0)
因为您必须为矩阵分配空间,所以它将占用空间,而不管它将保留哪些数字。 (即使是null)。
但是我可以想象某个地方有人设计了一个数据结构来处理这个问题。
在我脑海中浮现的第一件事是你可以创建一个数据结构,其中包含具有相应值的位置。如果你要求在不存在的给定位置处的值,则可以返回0.当然,对于只有几个零的小矩阵或矩阵,这将是低效的。只是一个想法。