我有一个大图,除了邻接列表和c ++ stl中的“邻接矩阵”之外还有其他任何数据结构,或者我可以用于这样一个大图的其他数据结构,实际上我的图的邻接矩阵确实如此不适合主存。我的图是有针对性的,我正在用C ++实现dijkstra算法。
我已经看过以前的帖子......但是我正在寻找一个关于dijkstra的合适数据结构。
我认为是一个包含超过1亿个节点和边缘的图表。
答案 0 :(得分:2)
将邻接列表表示为整数列表是常见的,其中整数是节点的索引。如何通过将邻接列表视为位字符串00010111000...
来获得更多空间效率,其中第n个位置的1
表示此节点与节点n
之间的边缘?然后用一些标准算法压缩bitstring;根据需要解压缩它。位串可能会很好地压缩,因此这会提高空间效率,从而获得更高的计算成本。