【发布时间】:2011-02-09 07:54:37
【问题描述】:
我正在用 C 编写一个数值模拟程序。部分模拟是空间上固定的节点,它们彼此之间有一些浮点值。它就像一个有向图。但是,如果两个节点距离太远,(比某个截止长度 a 远)这个值为 0。
为了表示所有这些“相关性”或浮点值,我尝试使用二维数组,但由于我有 100.000 和更多节点,这将对应于 40GB 左右的内存。
现在,我正在尝试为这个问题想出不同的解决方案。我不想将所有这些值保存在硬盘上。我也不想即时计算它们。一种想法是某种稀疏矩阵,就像可以在 Matlab 中使用的那样。
你有什么其他想法,如何存储这些值?
我是 C 新手,所以请不要期望太多经验。
感谢和最好的问候, 简·奥利弗
【问题讨论】:
-
关键所在的某种散列/映射(行 x 列)怎么样?它只会包含与矩阵中具有非零值的条目一样多的元素。
-
这不是一个真正的具体问题......是的,稀疏矩阵。去查找一些算法....也许有一些关于矩阵中空节点百分比的详细信息,或者关于模拟的更多信息,也许有人可以提出除 grah 表示之外的其他解决方案。
-
...例如,你想用这个矩阵做什么?
-
如果您有
-
另外——两个节点之间的“距离”不是相互的吗?因此,不是 n*n 距离,而是 2(n-1) 在这种情况下需要 774kB