前言
这个Mini-Notes开始于2016年4月18日下午,我想要认认真真把它写好,我也会认认真真把它写好。
Graphs: Definitions
从一些定义出发
- 首先必然是一些定义。思考如下几个问题:
- 什么是graphs?
Answer: 图就是由顶点和连接顶点的边构成的离散结构。 - Vertices?
- Edges?
- e is incident(邻接) with v and w代表什么?(边e连接了点v和点w)
- Undirected graph(一般来说graph指的是undirected graph)和directed graph(digraph)
- Two vertices are **adjacent(相邻的)**意味着什么?
- 给出两个Graphs的Example:第一个是有向图、第二个是无向图
- 还有一些相关的定义:
- Path
Answer: 一系列不同的vertices,它们adjacent to the next - Cycle
Answer: 一个包含至少3个点的path,且最后一个点跟第一个是adjacent的 - Connected连通的
Answer: 任意两个点之间有path - Free tree
Answer: 连通、无向、无环图 - 在directed graph里:directed path(cycle)
- 对于有向图来讲:什么是strongly connected(强连通)?什么是weakly connected(弱连通)?
- 什么是一个vertex的degree?
-
以上那些定义可以通过这几个examples来理解:
-
另外,还有一些图的定义:
| 分类 | 定义 |
| ------------- | ------------- |
| Complete graph | 无向图且每两个点之间有一条边相连,边数是n(n - 1) / 2 |
| Complete digraph | 有向图且每两个点有两条方向不同的边相连,边数是n(n - 1) |
| Dense graph & Sparse graph (稠密图 & 稀疏图) | 边数的多与少 |
| Weighted graph & Unweighted graph (带权图 & 无权图) | 边有无权值 |
| Simple graph (简单图) | 没有multi-edge,multi-edge指的是边(x,y)出现多于一次 |
| Acyclic graph | 不含有任何环,树就是连通的无向无环图 |
| Directed acyclic graphs (有向无环图) | DAGs |
Graphs: Representations
了解了图的相关定义,思考一下:怎么表示图呢?
有两种主要的数据结构去表示图: **
第一种是Adjacency Matrix(邻接矩阵)**
第二种是Adjacency Lists(邻接表)
邻接矩阵表示法
而对于带权图来说,对应位置的值代表权值。