软考
APP下载

无向图存储是什么

无向图(Undirected Graph)是图论中的一个术语,它由一组节点(Vertex)和一组边(Edge)组成,边无方向。无向图的存储方式有很多,比较常见的有邻接矩阵和邻接表两种。

邻接矩阵是一个二维数组,数组的行和列分别表示每个节点,数组元素的值表示两个节点之间的边的权重。如果两个节点之间无边相连,则用无穷大(或者一个较大的数)表示。这种存储方式的优点是方便查找和修改两个节点间的边,但是很浪费空间。因为对于一个有n个节点的图,邻接矩阵的大小是n*n,即使图中只有很少的边,也需要填太多的无效元素,造成很大的空间浪费。

邻接表是一种链表的集合,每个节点都对应一条链表,存储与它相邻的节点。具体地,邻接表的每一列元素都是一个链表,链表中的元素表示与该节点相连的边。这种存储方式的优点是空间效率很高,因为只需要分配每个节点所需的空间,以及和它相邻的边的空间,而且方便添加和删除边。但是查询和修改两个节点之间的边则比较慢,因为需要遍历链表。

由于邻接矩阵和邻接表各有优缺点,因此在实际应用中,也会采用它们的结合形式。比如,对于稠密图,用邻接矩阵存储比较好;而对于稀疏图,用邻接表存储比较好;对于介于稠密图和稀疏图之间的图,可以选择邻接矩阵和邻接表的混合存储方式。

除了邻接矩阵和邻接表之外,还有其他的存储方式,比如关联矩阵、压缩邻接矩阵、前向星和边数组等,不同的存储方式适合不同的场景和算法。

总之,无向图存储是图论的重要内容之一,它的选择应该根据实际情况进行合理的设计和选择。

备考资料 免费领取:软件设计师报考指南+考情分析+思维导图等 立即下载
真题演练 精准解析历年真题,助你高效备考! 立即做题
相关阅读
软件设计师题库