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

Graph 使用邻接列表和邻接矩阵的图的大小?,graph,computer-science,Graph,Computer Science,假设有236个网页,平均每个网页有24个超链接。考虑每个顶点有一个顶点的有向图和两个顶点之间的边缘,如果顶点表示的网页之间存在超链接。使用邻接矩阵表示图形需要多少TB?使用邻接列表?我的问题是列表和矩阵之间的主要区别是什么?回答您的问题,“矩阵的列表表示和矩阵表示之间的主要区别是什么?” 图的列表表示法通常是元组列表,其中列表的每个元素都是一个节点,元组是与其连接的节点。假设我们有3个节点A,B,C,那么我们将有一个长度为3的列表。假设有一个节点来自a->B,那么ath位置的元素(比如第一个元素

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

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

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

另一方面,矩阵表示法是一种矩阵,通常实现为二维数组,其中每个节点都列在行轴和列轴上。如果两个节点之间存在链接,则在矩阵中标记该点。例如,如果我们有3个节点
A
B
C
,我们就有一个3x3数组
数组
。让我们调用
A
=index
0
B
=index
1
C
=index
2
,假设我们有一个
A
->
B
的链接,然后在
数组[0][1]
中填写
1
。如果我们的图形是无向的,我们还应该在
数组[1][0]
的位置添加一个
1
。Total space required是每个链接所需空间的N^2倍的节点数(可以使用1位,
0
1
),因此Total=N^2

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


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

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