【问题标题】:Memory saving alternatives for Adjacency matrixes using vector of ints使用整数向量的邻接矩阵的内存节省替代方案
【发布时间】:2018-10-12 23:33:05
【问题描述】:

我正在尝试使用 BFS 和 Edmonds Karp 算法解决图像分割问题,我使用 vector<vector<int>> Adj_Matrix 作为数据结构来保存保持图形的垂直和水平链接的邻接矩阵。

这是一个无向图,因此我认为可能有比使用完整的 int 向量矩阵更好的节省内存的选择。

我在做

Adj_Matrix.reserve(totalV);
for (int i = 0; i < totalV; i++){
     Adj_Matrix[i].reserve(totalV);
}

为数据结构预留内存,然后Adj_Matrix.clear();

但是在解析和计算大型 (>800x800) 矩阵时,我遇到了内存问题和崩溃。所以我想知道有什么更好的方法来存储或表示这些邻接矩阵,从而节省内存和时间。

【问题讨论】:

标签: c++ memory-management image-segmentation adjacency-matrix


【解决方案1】:

您可以使用邻接列表来代替邻接矩阵。不同之处在于,当您没有足够的链接用于特定顶点时,其对应的 adj_list[i] 向量将需要比邻接矩阵的预定义 totalV 大小更少的元素。这在稀疏图的情况下特别有用。

此外,您可以对信息进行编码,以将多个链接存储在向量的单个元素中,以便以后使用位掩码等技术对其进行解码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 2018-06-22
    • 2016-09-01
    相关资源
    最近更新 更多