【发布时间】: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) 矩阵时,我遇到了内存问题和崩溃。所以我想知道有什么更好的方法来存储或表示这些邻接矩阵,从而节省内存和时间。
【问题讨论】:
-
您可以尝试使用 Eigen 将其存储为稀疏矩阵。 eigen.tuxfamily.org/dox/group__TutorialSparse.html
-
800x800 整数相当于 2.5 兆。您是否使用受限硬件? 8000x8000 为 250 兆,80000x80000 为 25 兆。
标签: c++ memory-management image-segmentation adjacency-matrix