邻接表为啥用边存储
发布时间: 2025-05-22 17:14:45
① 在用邻接表表示图时,对图进行深度优先搜索遍历的算法的时间复杂度为()
因为当相邻矩阵的大部分被破坏时,矩阵中的所有元素都需要扫并追踪到,且元素个数为n^2,自然算法为O(n^2)。
所以邻接表只存储边或弧,如果扫描邻接表,当然会得到O(n+e)其中n是顶点的数量,e的边或弧的数量。
设有n个点,e条边
邻接矩阵:矩阵包含n^2个元素,在算法中共n个顶点,对每个顶点都要遍历n次,所以时间复杂度为O(n^2)。
邻接表:包含n个头结点和e个表结点,算法中对所有结点都要遍历一次,所以时间复杂度为O(n+e)顺便,对于广度优先算法的时间复杂度,也是这样。
(1)邻接表为啥用边存储扩展阅读:
邻接表是图的最重要的存储结构之一,描述了图上的每个点。创建一个容器对于每一个图的顶点(n顶点n容器)和节点在第i个容器包含所有相邻顶点的顶点Vi。事实上,我们经常使用的邻接矩阵是一个邻接表的边集不离散化每一个点。
在有向图中,描述每个点与另一个节点连接的边(在a点->点B)。
在无向图中,描述每个点上的所有边(A点和B点的情况)
邻接表对应的图存储方法称为边集表。此方法将所有边存储在容器中。
② 用邻接表存储图所用的空间大小与什么有关
用邻接表存储图所用的空间大小与图的顶点数和边数有关。有一个图有n个顶点和e条边,则在对应的邻接表中,表头向量大小等于顶点数。此图是无向图,则每条边在邻接表中出现两次,即需要2e个存储单元。此图是有向图,则每条边只在邻接表中出现一次,即需要P个存储单元。由此可知用邻接表存储图所用的空间大小与图的顶点数和边数都有关系。
热点内容