假设有2个 36 网页,平均每个网页都有2个 4 超链接。如果在顶点表示的网页之间存在超链接,则考虑每个网页具有一个顶点的有向图和两个顶点之间的边。使用邻接矩阵表示图表需要多少TB?使用邻接列表?我的问题是列表和矩阵之间的主要区别是什么?
答案 0 :(得分:3)
回答你的问题,“列表表示和矩阵的矩阵表示之间的主要区别是什么?”
图形的列表表示通常是元组列表,其中列表的每个元素都是一个节点,元组是连接到它的节点。假设我们有3个节点A
,B
,C
,所以我们将有一个长度为3的列表。假设有A
的节点 - > {{1然后,B
位置的元素,即第一个元素,将包含节点A
。假设还有来自B
- > A
的链接,第一个元素将包含C
和B
。邻接列表所需的总空间是(表示节点的空间)*(边数)。
另一方面,矩阵表示是一个矩阵,通常实现为2-d数组,其中每个节点都列在行轴和列轴上。如果2个节点之间存在链接,则在矩阵中标记该点。例如,如果我们有3个节点C
,A
,B
,我们就有一个3x3数组C
。我们打电话给array
=索引A
,0
=索引B
,1
=索引C
,并假设我们有{{{}的链接1}} - > 2
,然后在A
填写B
。如果我们的图表是无向的,我们还会在1
处向array[0][1]
添加1
。所需的总空间是节点数N ^ 2乘以每个链路所需的空间(可以使用1位,array[1][0]
或0
完成),因此总计= N ^ 2.
列表适用于稀疏图表,因为它不需要任何额外的存储空间。也就是说,不存在的链接不代表任何东西。相比之下,如果我们的图非常密集,则矩阵表示更好,因为每个可能的链接仅由1位(0或1)表示。从上面的示例中可以看出,列表表示所需的总空间是函数的边数,而矩阵表示的空间是函数的数量节点强>
现在想想你的具体问题。你有多少总节点?总边缘?这看起来稀疏还是密集?