【发布时间】:2011-10-01 07:44:20
【问题描述】:
我正在准备一次编程面试,并在图表上刷新了我的想法。我想知道以下几点:在我见过的所有地方,假设邻接列表比大型稀疏图的邻接矩阵更节省内存,因此在这种情况下应该是首选。此外,计算一个节点的出边数需要矩阵中的 O(N) 而列表中的 O(1) 以及列表中 O(num 个相邻节点) 中的相邻节点,而不是矩阵的 O(N)。
这些地方包括 Cormen 等人的书,或 StackOverFlow:Size of a graph using adjacency list versus adjacency matrix? 或 Wikipedia。
但是,使用像压缩行存储表示一样的稀疏矩阵表示,内存需求只是 O(非零数)= O(边数),这与使用列表相同。一个节点的出边数为O(1)(直接存储在CRS中),相邻节点可以列出O(num相邻节点)。
为什么不讨论?我是否应该假设 CSR 是 一种由矩阵表示的图的邻接表表示?或者矩阵是内存密集型的论点是否存在缺陷,因为它们不考虑稀疏矩阵表示?
谢谢!
【问题讨论】:
标签: graph adjacency-list adjacency-matrix