【问题标题】:Size of a graph using adjacency list versus adjacency matrix?使用邻接列表与邻接矩阵的图的大小?
【发布时间】:2011-06-25 04:30:03
【问题描述】:

假设有 236 个网页,平均每个网页有 24 个超链接。如果顶点表示的网页之间存在超链接,则考虑每个网页一个顶点和两个顶点之间的边的有向图。使用邻接矩阵表示图需要多少 TB?使用邻接表?我的问题是列表和矩阵之间的主要区别是什么?

【问题讨论】:

  • 这是作业吗?您是否尝试过计算每种方法需要多少存储空间?
  • 这不是一个真正的问题... IMO。
  • 这是家庭作业,我试图给出一个答案,我的想法是,对于一个列表,它会是 ((2^36)*(2^4))^2 和对于矩阵,它将是 (2^36)*(2^4) 但我认为这是不对的:(
  • @Jens:答案取决于很多因素,而且太模糊而无法正确回答。比如我可以用不同的压缩算法压缩数据,每次都给出不同的答案……
  • 矩阵必须是正方形的。唯一影响其大小的是顶点数。对于列表,每个顶点需要一个列表(即使它是空的),然后每个链接在列表中都有一个条目。

标签: graph computer-science


【解决方案1】:

回答您的问题,“矩阵的列表表示和矩阵表示之间的主要区别是什么?”

图的列表表示通常是一个元组列表,其中列表的每个元素都是一个节点,元组是与其相连的节点。假设我们有 3 个节点 ABC,所以我们将有一个长度为 3 的列表。假设有一个来自 A->B 的节点,然后是 Ath 中的元素位置,比如第一个元素,将包含节点B。假设还有一个来自A->C 的链接,第一个元素将包含BC。邻接表所需的总空间为(表示节点的空间)*(边数)。

另一方面,矩阵表示是一个矩阵,通常实现为二维数组,其中每个节点都列在行轴和列轴上。如果 2 个节点之间存在链接,则在矩阵中标记该点。例如,如果我们有 3 个节点 ABC,我们有一个 3x3 数组 array。让我们调用A=index0,B=index1,C=index2,假设我们有一个来自A->B的链接,然后填写@ 987654344@array[0][1]。如果我们的图表是无向的,我们还将在array[1][0] 的位置添加一个1。所需的总空间是节点数 N^2 乘以每个链接所需的空间(可以用 1 位完成,01),所以总计 = N^2。

列表适用于稀疏图,因为它不需要任何额外的存储空间。也就是说,不存在的链接不代表任何东西。相比之下,如果我们的图非常密集,那么 矩阵 表示会更好,因为每个可能的链接只用 1 位(0 或 1)表示。从上面的例子可以看出,列表表示所需的总空间是边数的函数,而矩阵表示所需的空间是边数的函数节点

现在想想你的具体问题。您将拥有多少个节点?总边缘?这看起来是稀疏还是密集?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 2020-04-14
    • 1970-01-01
    相关资源
    最近更新 更多