基本概念
- 图论中的图是由若干个给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。
- 一个图可以用数学语言描述为 G ( V ( G ) , E ( G ) ) G(V(G),E(G)) G(V(G),E(G))。V(vertex)指的是图的顶点集,E(edge)指的是图的边集。
- 度:设 v v v是边 e e e的端点,则称 v v v与 e e e相关联,与顶点 v v v关联的边数称为该顶点的度,记为 d ( v ) d(v) d(v)。度为奇数的顶点称为奇顶点,度为偶数的顶点称为偶顶点。所有顶点的度数之和是边数的2倍,由此可知奇顶点的总数是偶数。
- 道路:设 W = v 0 e 1 v 1 . . . e k v k W=v_0e_1v_1...e_kv_k W=v0e1v1...ekvk, e i e_i ei与 v i − 1 v_{i-1} vi−1和 v i v_i vi关联,则称 W W W是图 G G G的一条道路。 v 0 v_0 v0是起点, v k v_k vk是终点,k为路长。
- 迹:各边相异的道路称为迹。
- 轨道:各顶点相异的道路称为轨道,记为 P ( v 0 , v k ) P(v_0,v_k) P(v0,vk), v 0 v_0 v0是起点, v k v_k vk是终点,k为路长。
- 回路:起点与终点重合的道路称为回路。
- 圈:起点与终点重合的轨道称为回路。
- 连通图:图中任两顶点之间都存在道路的图称为连通图。
- 距离:顶点 u u u, v v v的距离是顶点 u u u, v v v分别为起点和终点的最短轨道之长。
图的分类
图与网络的数据结构
假设 G = ( V , E ) G=(V,E) G=(V,E)是一个简单无向图,顶点集合 V = { v 1 , . . . , v n } V=\{v_1,...,v_n\} V={v1,...,vn},边集 E = { e 1 , . . . , e m } E=\{e_1,...,e_m\} E={e1,...,em},记 ∣ V ∣ = n , ∣ E ∣ = m |V|=n,|E|=m ∣V∣=n,∣E∣=m。
邻接矩阵表示法
- 邻接矩阵记为 W = ( w i j ) n × n W=(w_{ij})_{n\times n} W=(wij)n×n,当 G G G为赋权图时,有
w i j = { 权 值 , 当 v i 与 v j 之 间 有 边 时 权 值 , 当 v i 与 v j 之 间 有 边 时 w_{ij}=\begin{cases} 权值,&当v_i与v_j之间有边时\\ 权值,&当v_i与v_j之间有边时\\ \end{cases} wij={权值,权值,当vi与vj之间有边时当vi与vj之间有边时
- 当 G G G为非赋权图时,有
w i j = { 1 , 当 v i 与 v j 之 间 有 边 时 0 , 当 v i 与 v j 之 间 有 边 时 w_{ij}=\begin{cases} 1,&当v_i与v_j之间有边时\\ 0,&当v_i与v_j之间有边时\\ \end{cases} wij={1,0,当vi与vj之间有边时当vi与vj之间有边时
- 当图的边数远小于顶点数时,邻接矩阵表示法表示会造成很大的空间浪费。
稀疏矩阵表示法
- 系数矩阵是指矩阵中零元素很多,非零元素很少的矩阵。稀疏矩阵存放非零元素的行标、列表、值。
- Matlab中,有向图的邻接矩阵转稀疏矩阵直接使用sparse命令,反过来用full命令
>> a=[1 0 0;0 5 0;3 0 0]
a =
1 0 0
0 5 0
3 0 0
>> b=sparse(a)
b =
(1,1) 1
(3,1) 3
(2,2) 5
>> full(b)
ans =
1 0 0
0 5 0
3 0 0
- 对于无向图,邻接矩阵是对称阵,只需要使用下三角元素。
>> a=[1 0 3 ;0 0 1;3 1 0]
a =
1 0 3
0 0 1
3 1 0
>> tril(a)
ans =
1 0 0
0 0 0
3 1 0