图是一种常见的数据结构,用于表示对象之间的关系。它由节点(顶点)和边组成,节点表示对象,边表示对象之间的关系。图可以用于解决各种实际问题,并在计算机科学中有广泛的应用。本文将介绍图的基本概念、表示方法和常见的应用场景,并提供相应的源代码示例。
一、图的基本概念
-
节点(顶点):图中的对象,可以是任何实体,如人、物、地点等。节点可以有属性和值。
-
边:连接节点的线段,表示节点之间的关系。边可以是有向的(箭头表示方向)或无向的。
-
路径:图中节点的有序序列,沿着边从一个节点到另一个节点。
-
连通性:图中节点之间是否存在路径。如果图中任意两个节点之间都存在路径,则称图是连通的。
-
权重:边可以带有权重,表示节点之间的距离、代价或其他度量。
二、图的表示方法
图可以使用多种方式进行表示,常见的有邻接矩阵和邻接表。
-
邻接矩阵:使用二维数组来表示图,其中行和列表示节点,数组元素表示边的存在与否或权重。对于无向图,邻接矩阵是对称的。
-
邻接表:使用链表或数组列表来表示图,其中每个节点都有一个相邻节点的列表。对于有向图,邻接表只记录出度边或入度边。
三、图的应用场景
-
社交网络分析:社交网络可以用图来表示,其中节点表示用户,边表示用户之间的关系。通过分析图的拓扑结构,可以发现社交网络中的社群、关键人物等信息。
-
路径规