在数据结构中,图(Graph)是一种非线性数据结构,由节点(Vertex)和边(Edge)组成。节点表示对象,而边表示对象之间的联系。在图中,节点和边都可以有相应的属性和权重。
对于图的表示,通常有两种方式:邻接矩阵和邻接表。
邻接矩阵(Adjacency Matrix)是一种二维数组,其中元素值表示节点之间的权重。如果两个节点之间存在一条边,则对应的元素值为边的权重,否则为0。邻接矩阵适用于稀疏图,即边相对于节点较少的情况。
邻接表(Adjacency List)是一种链表数组,其中每个元素表示一个节点的邻居节点列表。邻接表适用于稠密图,即边相对于节点较多的情况。
在图的算法中,常见的有深度优先搜索(DFS)、广度优先搜索(BFS)、最短路径算法(Dijkstra、Floyd-Warshall等)、最小生成树算法(Prim、Kruskal等)。这些算法都基于图的结构和属性进行设计和实现。