Graph 为什么图形使用邻接列表而不是邻接集表示?

Graph 为什么图形使用邻接列表而不是邻接集表示?,graph,adjacency-list,Graph,Adjacency List,如果每个节点映射到一组它有边的节点,而不是一个列表,我们就可以获得边的恒定时间查找,而不必遍历整个列表。我能想到的唯一缺点是稍微多一些内存开销和枚举节点边缘的时间,但不是渐进地显著增加 我认为“列表”只是一个通用的标签,不能从字面上理解。我使用了集合,效果非常好 如果我没记错的话,我的教科书也使用了集合这不是“固定时间”,而是“记录(集合中的nb元素)”时间!(为了回答这个问题,如果您使用std::set,那么与压缩行存储相比,内存开销非常大)@BrunoLevy AHashSet将为您提供顶点

如果每个节点映射到一组它有边的节点,而不是一个列表,我们就可以获得边的恒定时间查找,而不必遍历整个列表。我能想到的唯一缺点是稍微多一些内存开销和枚举节点边缘的时间,但不是渐进地显著增加

我认为“列表”只是一个通用的标签,不能从字面上理解。我使用了
集合
,效果非常好


如果我没记错的话,我的教科书也使用了
集合

这不是“固定时间”,而是“记录(集合中的nb元素)”时间!(为了回答这个问题,如果您使用std::set,那么与压缩行存储相比,内存开销非常大)@BrunoLevy A
HashSet
将为您提供顶点的不断查找。@Carcigenicate是的,我同意它可以提供不断查找,但它不是在一般情况下,需要一些注意。我认为,对于任何稀疏模式,获得保证的恒定时间行为是非常困难的(如果不是不可能的话)。