稀疏图和密集图之间有什么区别?

时间:2012-09-26 09:56:54

标签: data-structures graph graph-theory

我认为通过邻接矩阵和密度图表通过邻接矩阵来表示稀疏图是理想的。但我想了解稀疏图和密集图之间的主要区别。

6 个答案:

答案 0 :(得分:31)

由于名称表示稀疏图形稀疏连接(例如:树)。通常边的数量在O(n)中,其中n是顶点的数量。因此,邻接列表是首选,因为它们需要为每个边缘提供恒定的空间。

密集图形密集连接。这里边缘的数量通常是O(n ^ 2)。因此,优选邻接矩阵。

为了进行比较,我们假设图形有1000个顶点。

无论图形是密集还是稀疏,邻接矩阵都需要存储1000 ^ 2 = 1,000,000个值。

如果图形是最小连接的(即它是树),则邻接列表需要存储2,997个值。如果图表完全连接,则需要存储3,000,000个值。

答案 1 :(得分:29)

密集图是边数接近最大边数的图。 稀疏图是边数接近最小边数的图。稀疏图可以是disconnected graph

答案 2 :(得分:10)

来自Data Structures and Algorithms with Object-Oriented Design Patterns in C++ , p. 534, by Bruno P. Reiss

  

非正式地,边缘相对较少的图形是稀疏的,具有许多边缘的图形是密集的。

     

定义(稀疏图):稀疏图是图G =(V,E),其中| E | = O(| V |)。

     

定义(密集图)密集图是图G =(V,E),其中| E | =Θ(| V | 2 )。

答案 3 :(得分:3)

主要图形积分特征是顶点数V和边数E.这两者的关系决定图形是稀疏还是密集(维基页here)。

选择图形内存表示的整个理论是关于确定最佳访问时间与内存占用权衡,考虑主题领域和使用细节。

通常你希望有O(1)访问时间(因此将图形存储为密集邻接矩阵),除非你不能容忍内存占用,在这种情况下你选择最合适的稀疏矩阵表示(wiki page { {3}})。

答案 4 :(得分:1)

在数学中,密集图是一个图,其中边的数量接近最大边数。相反,只有几条边的图是一个稀疏图。稀疏图和密集图之间的区别相当模糊,并且取决于上下文。

答案 5 :(得分:0)

稀疏图 - 边相对较少的图(通常如果边 < |V| log |V|)被称为稀疏图。 Dense Graphs- 缺少可能边相对较少的图(与完整图相比)被称为密集图。

相关问题