java - 实现 SparseMatrix 的有效方法

标签 java algorithm matrix out-of-memory sparse-matrix

我有一个巨大的矩阵,但很多条目都是空的。

所以我尝试使用 AVL 树的 vector ,其中 vector 的长度约为 207 并且每个 AVL 树有大约 110,000 个节点(总共 207 · 110,000 个节点)。

但是现在,当我将问题大小增加到 90,000 时,我收到“超出 GC OverHeader 限制”的错误,因为节点太多并且我已将 JVM 配置为最大堆大小为 2 GB。

我想知道是否有其他方法可以有效地实现稀疏矩阵?

如果有帮助:我不需要在创建稀疏矩阵后对其进行修改。我只需要构建一次,然后进行高效查找。

最佳答案

https://en.wikipedia.org/wiki/Sparse_matrix#Storing_a_sparse_matrix 上有一个很好的稀疏矩阵数据结构总结。但当然这一切都取决于你需要用它做什么。如果您只需要查找,我希望哈希表比平衡树更节省空间。尝试 java.util.HashMap 应该不会花很长时间。

关于java - 实现 SparseMatrix 的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53112748/

相关文章:

java - java中的绝对路径直接到桌面,即使在不同的计算机上

java - 在 Java 整数上,Character.IsDigit 返回 false 而不是 true

java - Android中带有声音的进度对话框

java - 使用 JAXB 解码

algorithm - C++ 中的二分匹配,我的代码有什么问题?

java - Java 中的尾递归编程

algorithm - 找到给定 K 个最佳候选者的时间戳

algorithm - 帮助计算(四叉树)矩阵的列和的算法?

python - 稀疏矩阵行中的连续元素

用于计算矩阵指数的 C++ 库