我正在尝试使用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)矩阵时,我遇到了内存问题和崩溃问题。因此,我想知道什么是存储或表示这些邻接矩阵的更好方法,可以节省内存和时间。
答案 0 :(得分:0)
您可以使用邻接列表代替邻接矩阵。不同之处在于,当您没有足够的链接用于特定顶点时,其相应的 adj_list [i]向量将需要比在邻接矩阵情况下具有的预定义totalV大小更少的元素。这对于稀疏图形的情况特别有用。
此外,您可以对信息进行编码,以便在矢量的单个元素中存储多个链接,以便稍后使用位屏蔽等技术对其进行解码。