图的几种表示方法

图数据结构的表示方法大致分为四种,邻接矩阵、邻接表、十字链表、多重邻接表。

邻接矩阵是最容易理解的表示方法,优点是简单易懂,缺点是可能会占用很多存储空间,且没有任何意义,空间复杂度有向图是n^2,无向图是n(n-1)/2,因为无向图矩阵是对称的,只需要存储一半且不包含对角线即可。邻接矩阵的存储优化可以通过矩阵优化来实现(具体可以看矩阵的压缩方法)。

邻接表就是更加灵活,节省存储空间空间复杂度有向图是n+e,无向图是n+2e,但是表示起来复杂一些。邻接表还衍生出了一种逆邻接表,因为邻接表统计出度的效率较高,而入度需要遍历整个表才可以统计出来,而逆邻接表不需要遍历,直接就可以统计出每个结点的出度,这正好和邻接表相反。

十字链表是结合了邻接表和逆邻接表于一体的表示方法,用来表示有向图,综合了两种表示方法的优点,缺点是表示起来更加复杂。

多重邻接表是类似于十字链表的表示方法,用来表示无向图,当一个无向图需要频繁的修改时,邻接表表示法需要修改边两侧的结点对应的信息,而多重邻接表可以只修改一次,计算量节省了一半。

发布了12 篇原创文章 · 获赞 927 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/zcg_741454897/article/details/103697476