使用整数向量的邻接矩阵的内存节省替代方案

时间:2018-05-02 18:59:42

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

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

这是一个无向图,我认为可能有更好的内存保存替代方案,而不是拥有完整的int向量矩阵。

我正在做

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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