1. 图的基本概念
图是一种非线性数据结构,由顶点(Vertex)的集合和连接这些顶点的边(Edge)的集合组成。formally表示为G = (V, E),其中V是顶点集合,E是边集合。
图可以用来表示很多现实世界中的关系,比如社交网络、地图路线、网络拓扑等。
1.1 基本术语
- 顶点(Vertex):图中的基本单元,也称为节点。
- 边(Edge):连接两个顶点的线段。
- 度(Degree):与某个顶点相连的边的数量。
- 路径(Path):从一个顶点到另一个顶点的顶点序列。
- 环(Cycle):起点和终点相同的路径。
2. 图的类型
2.1 有向图与无向图
- 无向图:边没有方向,$(v,w)$和$(w,v)$表示同一条边。
- 有向图:边有方向,$(v,w)$和$(w,v)$是不同的边。
2.2 加权图与非加权图
- 非加权图:边没有与之关联的权值。
- 加权图:每条边都有一个权值,表示某种成本或距离。
2.3 其他类型
- 完全图:每个顶点都与其他所有顶点相连。
- 连通图:任意两个顶点之间都存在路径。
- 二分图:顶点可以分为两个不相交的集合,每条边连接的两个顶点分别属于这两个集合。
3. 图的表示方法
3.1 邻接矩阵
使用一个二维数组来表示图,如果顶点i和j之间有边,则matrix[i][j] = 1(或权值),否则为0。
#define