在Julia中定义非常稀疏的网络矩阵的最有效方法是什么?

时间:2016-10-27 15:54:17

标签: julia social-networking sparse-matrix

我有一个非常大的网络数据非常稀疏。我想知道无论两个节点是否连接,什么是最有效的内存存储和最容易访问的方式。

显然,对于N个节点,保持N * N矩阵在我存储的空间方面效率不高。所以我想到可能保留下面的邻接列表:

Array(Vector{Int64}, N_tmp)

其中N_tmp< = N,因为许多节点可能没有任何连接。

你能帮助我是否有更好的方法或者包装在内存和访问方面更好?

1 个答案:

答案 0 :(得分:8)

LightGraphs.jl中,我们使用邻接列表(基本上是向量的向量)来存储每个节点的邻居。这为大型稀疏图提供了非常好的内存利用率,允许我们在商用硬件上扩展到数亿个节点,同时提供快速访问,以便在大多数图形操作中击败本机稀疏矩阵数据结构。

您可以考虑LightGraphs是否能直接满足您的需求。

使用附加信息进行编辑:我们存储了一个已排序的邻居列表 - 这使我们在创建边缘时获得了性能提升,但使后续查找更快。