使用邻接列表与邻接矩阵的图的大小?

时间:2011-02-10 21:43:55

标签: graph computer-science

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

1 个答案:

答案 0 :(得分:3)

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

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

另一方面,矩阵表示是一个矩阵,通常实现为2-d数组,其中每个节点都列在行轴和列轴上。如果2个节点之间存在链接,则在矩阵中标记该点。例如,如果我们有3个节点CAB,我们就有一个3x3数组C。我们打电话给array =索引A0 =索引B1 =索引C,并假设我们有{{{}的链接1}} - > 2,然后在A填写B。如果我们的图表是无向的,我们还会在1处向array[0][1]添加1。所需的总空间是节点数N ^ 2乘以每个链路所需的空间(可以使用1位,array[1][0]0完成),因此总计= N ^ 2.

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

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