#### 图论
图结构是一种与树结构有些相似的数据结构
主要研究的目的是事物之间的关系,顶点代表事物,边代表两个事物之间的关系
特点
一组顶点(vertex)V表示顶点的集合
一组边:通常E(Edge)表示边的集合
#### 术语
- 顶点
图中的一个结点
- 边
表示顶点和顶点之间的连线.
- 相邻顶点
一条边连接在一起的顶点称为相邻顶点
- 度
一个顶点的度是相邻顶点的数量
- 路径
路径是顶点v1, v2..., vn的一个连续序列, 比如0 1 5 9就是一条路径
简单路径: 简单路径要求不包含重复的顶点
回路: 第一个顶点和最后一个顶点相同的路径称为回路
- 无向图
所有的边都没有方向
- 有向图
有向图表示的图中的边是有方向的
- 无权图
边没有携带权重
- 带权图
带权图表示边有一定的权重.
#### 图的表示
- 顶点表示
A B C D 用数组存储起来
- 边的表示
###### 邻接矩阵
邻接矩阵让每个节点和一个整数相关联, 该整数作为数组的下标值
用二维数组来表示顶点之间的连接
- 优点:
可以表示有向图,可以带权重,无向图对称
- 缺点
邻接矩阵还有一个比较严重的问题就是如果图是一个稀疏图
##### 邻接表
邻接表由图中每个顶点以及和顶点相邻的顶点列表组成
这个列表有很多中方式来存储: 数组/链表/字典(哈希表)都可以
```js