链接列表作为矩阵和效率

时间:2016-10-02 21:23:35

标签: java sparse-matrix

当需要在算法中使用大矩阵时,为了加快复杂性,我们被告知如果矩阵稀疏则使用链表。这意味着如果数据大致相同,我们只能保存不是那个值的数据。

但是我们如何确定使用稀疏矩阵的点不再有用呢?

对于长度为 n 的方阵,我们如何计算我们可以说矩阵中有太多非零数据要写在链表中的点?

我想我们需要使用对象的内存大小,两个对象之间的链接,然后使用我们的密度因子。但有什么计算可以安全地说"这个矩阵有x%的非零数据,最好使用链表

1 个答案:

答案 0 :(得分:2)

您的问题的答案取决于您优化的内容。你是否优化空间或时间?

让我们说你优化空间。为了保持长度为n的方阵的数据,你需要n * n个数(为了简化,假设它是每个值的整数)。在链表的情况下,您需要具有实际值,矩阵中值的协调以及指向下一个非零值的指针。为简化起见,假设每个字段都是整数。因此,对于链表,您需要4个整数来保留单个值(以及链接列表的头部等附加数据)。

恕我直言,一旦不到1/4的矩阵值非零,使用链表比数组数组更优。

显然,还有其他选项来保持矩阵值;那么这个比例可能会有所不同。

要再次优化时间,它取决于您要运行的操作......

相关问题