文章目录
Brief
G r a p h { D e f i n i t i o n 定 义 S t o r a g e 存 储 { 邻 接 矩 阵 , 邻 接 表 邻 接 多 重 表 , 十 字 链 表 T r a v e r s e 遍 历 { D F S — — D e p t h − F i r s t − S e a r c h 深 度 优 先 搜 索 B F S — — B r e a d t h − F i r s t − S e a r c h 广 度 优 先 搜 索 A p p l i c a t i o n 应 用 { M i n i m a l S p a n n i n g T r e e 最 小 生 成 树 : P r i m 算 法 , K r u s k a l 算 法 S h o r t e s t P a t h 最 短 路 径 : D i j k s t r a 算 法 , F l o y d 算 法 T o p o l o g i c a l S o r t 拓 扑 排 序 : A O V N e t K e y P a t h 关 键 路 径 : A O E N e t Graph \begin{cases} Definition\ 定义\\\\ Storage\ 存储\begin{cases}邻接矩阵,邻接表\\邻接多重表,十字链表\end{cases}\\\\ Traverse\ 遍历\begin{cases}DFS——Depth-First-Search\ 深度优先搜索\\BFS——Breadth-First-Search\ 广度优先搜索\end{cases}\\\\ Application\ 应用\begin{cases}Minimal\ Spanning\ Tree\ 最小生成树:& Prim算法,Kruskal算法\\Shortest\ Path\ 最短路径:&Dijkstra算法,Floyd算法\\Topological\ Sort\ 拓扑排序:&AOVNet\\Key\ Path\ 关键路径:&AOE\ Net\end{cases} \end{cases} Graph⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧Definition 定义Storage 存储{邻接矩阵,邻接表邻接多重表,十字链表Traverse 遍历{DFS——Depth−First−Search 深度优先搜索BFS——Breadth−First−Search 广度优先搜索Application 应用⎩⎪⎪⎪⎨⎪⎪⎪⎧Minimal Spanning Tree 最小生成树:Shortest Path 最短路径:Topological Sort 拓扑排序:Key Path 关键路径:Prim算法,Kruskal算法Dijkstra算法,Floyd算法AOVNetAOE Net
Definition
图
G
G
G 由顶点集
V
V
V 和边集
E
E
E 组成,记为:
G
=
(
V
,
E
)
G=(V,E)
G=(V,E)
其中:
- V ( G ) V(G) V(G):途中顶点的有限非空集合 KaTeX parse error: Expected 'EOF', got '}' at position 29: …2},\dots,v\_{n}}̲, ∣ V ∣ |V| ∣V∣ 表示顶点的个数,也称为图的阶数,
- E ( G ) E(G) E(G):图中顶点之间的关系集合 { ( v , u ) ∣ v ∈ V , u ∈ V } \{(v,u)|v\in V,u\in V \} {(v,u)∣v∈V,u∈V}
Some Important Concept
有向图
如果 E E E 是有向边的有限集合,则图为有向图。弧是顶点的有序对,记为 < u , v > <u,v> <u,v>,其中 u , v u,v u,v 是顶点, v v v 为弧尾, u u u 为弧头,即从顶点 u u u 到顶点 v v v 的弧,也称为 u u u 邻接到 v v v,或者 v v v 邻接自 u u u。
无向图
即边集为无向边的有限集合,图为无向图,两个顶点互为邻接点,边依附于两个顶点或与两个顶点互相关联
简单图
如果:
- 不存在重复边
- 不存在到自身的边
则这样的图称为简单图。
多重图
相对于简单图,即允许重复边和到自身的边
完全图(简单完全图)
任意两个顶点都存在边的无向图,则为无向完全图;如果任意了两个顶点都存在方向相反的两条边,则称为有向完全图
子图
一个图为另一个图的子集,则:
- 这个图的边集是另一个图的边集的子集
- 顶点集是另一个图的顶点集的子集
注意并非一个图的边集的子集和顶点集的子集一定能够成其子图,因为可能无法构成图
连通、连通图和连通分量
在无向图中,从一个顶点到另外一个顶点有路径存在,则这两个顶点连通;若一个图的任意两个点都是连通的,则这个图为连通图,否则为非连通图;无向图的极大连通子图称为连通分量(即此时该无向图不连通,而是由若干连通分量构成)
强连通图、强连通分量
在有向图中,如果从一个顶点到另外一个顶点以及从另外一个顶点到这个顶点都有路径,则这两个顶点是强连通的;若任意两个顶点都是强连通的,则为强连通图
所以,在有向图中讨论强连通性,在无向图中讨论连通性
生成树、生成森林
连通图的生成树是包含图中全部顶点的一个极小连通子图,而非连通图中的每个连通分量的生成树构成该非连通图的生成森林
顶点的度、入度和出度
无向图中度为包含该顶点的边的数目,记为
T
D
(
v
i
)
TD(v_{i})
TD(vi),在具有
n
n
n 个顶点,
e
e
e 条边的无向图中有:
∑
i
=
1
n
T
D
(
v
i
)
=
2
e
\sum_{i=1}^{n}TD(v_{i})=2e
i=1∑nTD(vi)=2e
即无向图的全部顶点的度的和为边数目的两倍(一条边对应
2
2
2 度)
在有向图中,度分为出度和入度,直观的讲就是 “出去的边的数目” 和 ”进来的边的数目“,分别记为
O
D
(
v
)
OD(v)
OD(v) 和
I
D
(
v
)
ID(v)
ID(v),则顶点的度数和为出度加上入度,则在具有
n
n
n 个顶点,
e
e
e 条边的有向图中有:
∑
i
=
1
n
I
D
(
v
i
)
=
∑
i
=
1
n
O
D
(
v
1
)
=
e
\sum_{i=1}^{n}ID(v_{i})=\sum_{i=1}^{n}OD(v_{1})=e
i=1∑nID(vi)=i=1∑nOD(v1)=e
即入度之和与出度之和相等,并且等于边的数量(一条边对应
1
1
1 个出度和
1
1
1 个入度)
边的权和网
边上标的具有一定意义的值为其权,带权图为网
稠密图和稀疏图
顾名思义,边数少为稀疏图,反之为稠密图,一般而言判断标准为 ∣ E ∣ < ∣ V ∣ log ∣ V ∣ |E| < |V|\log|V| ∣E∣<∣V∣log∣V∣ 为稀疏图
路径、路径长度和回路
从一个顶点到另外一个顶点经过的顶点序列为一条路径,长度为其包含的边的数目为路径长度,起点和终点相同的路径为回路
简单路径和简单回路
顶点不重复出现的路径为简单路径,当只有起点和终点重复时(即其他点不重复)为简单回路
距离
若存在最短路径则为从一点到另外一个点的距离。不存在则距离为 ∞ \infin ∞
有向树
一个顶点入度为 0 0 0,其他顶点入度为 1 1 1 的有向图