一.概述
1.图的概念:
对于平面上的 n n n个点,把其中一些点用线连接起来,不考虑点的位置与连线的形状长短,这样形成的1个关系结构就是1个图,记为 G ( V , E ) , V G(V,E),V G(V,E),V为以上述点为元素的顶点集, E E E为以上述连线为元素的边集.图中的顶点可用于表示某个具体事务,边则表示其2个端点代表的事物间的某个特定联系.这样,图就可为任何1个包含1种二元关系的离散系统提供1个数学模型
2.图的分类:
①各条边都有方向的图称为有向图;各条边都没有方向的图称为无向图;有的边有方向,有的边没有方向的图称为混合图
②关联1对顶点的无向边如果多于1条,且这些边的方向相同(如果有),则称这些边为平行边.含平行边的图称为多重图;不含平行边且每条边的2个端点均不重合的图称为简单图
③如果图的2个顶点间有边相连,则称这2个顶点相邻.每对顶点都相邻的图称为完全图,记为 K ∣ V ∣ K_{|V|} K∣V∣;否则称为非完全图
④若 V = X ∪ Y , X ∩ Y = Ø , ∣ X ∣ ⋅ ∣ Y ∣ ≠ 0 ( ∣ X ∣ V=X∪Y,X∩Y=Ø,|X|\,·|Y|≠0\,(|X| V=X∪Y,X∩Y=Ø,∣X∣⋅∣Y∣=0(∣X∣表示 X X X中元素的个数 ) ) ),且 X X X中无相邻的顶点对, Y Y Y中亦然,则称图 G G G为二分图.特别地,若对 ∀ u ∈ X , u ∀u∈X,u ∀u∈X,u与 Y Y Y中每个顶点相邻,则称图 G G G为完全二分图,记为 K ∣ X ∣ , ∣ Y ∣ K_{|X|,|Y|} K∣X∣,∣Y∣
3.其他概念:
①设 v ∈ V v∈V v∈V是 e ∈ E e∈E e∈E的端点,则称 v v v与 e e e相关联.与 v v v相关联的边的数目称为 v v v的度,记为 d ( v ) d(v) d(v).度为奇数的顶点称为奇顶点,度为偶数的顶点称为偶顶点.可以证明 ∑ v ∈ V ( G ) d ( v ) = 2 ∣ E ∣ \displaystyle\sum_{v∈V(G)}d(v)=2|E| v∈V(G)∑d(v)=2∣E∣,由此可知奇顶点的总数为偶数
②设 W = v 0 e 1 v 1 e 2 . . . e k v k W=v_0e_1v_1e_2...e_kv_k W=v0e1v1e2...ekvk,其中 e i ∈ E ( 1 ≤ i ≤ k ) , v j ∈ V ( 0 ≤ j ≤ k ) , e i e_i∈E\,(1≤i≤k),v_j∈V\,(0≤j≤k),e_i ei∈E(1≤i≤k),vj∈V(0≤j≤k),ei与 v i − 1 , v i v_{i-1},v_i vi−1,vi关联,称 W W W是图 G G G的1条道路, k k k为路长, v 0 v_0 v0为起点, v k v_k vk为终点.各边相异的道路称为迹,各顶点相异的道路称为轨道,记为 P ( v 0 , v k ) P(v_0,v_k) P(v0,vk).起点与终点重合的道路称为回路,起点与终点重合的轨道称为圈.图中任意2顶点之间都存在道路的图称为连通图.图中含有所有顶点的轨道称为Hamilton轨,闭合的Hamilton轨称为Hamilton圈,含有Hamilton圈的图称为Hamilton图
③称以顶点 u , v u,v u,v为起点和终点的最短轨道之长为 u , v u,v u,v的距离.在完全二分图 K ∣ X ∣ , ∣ Y ∣ K_{|X|,|Y|} K∣X∣,∣Y∣中, X X X中任意2顶点的距离为偶数, X X X中任意顶点与 Y Y Y中任意顶点的距离为奇数
④赋权图是指每条边都与1或多个实数相对应的图,这个/些实数称为该边的权或权数或权值(1条边可以有多个权).
4.图与网络的数据结构
设 G ( V , E ) G(V,E) G(V,E)是1个简单无向图, V = { v 1 , v 2 . . . v n } , E = { e 1 , e 2 . . . e m } V=\{v_1,v_2...v_n\},E=\{e_1,e_2...e_m\} V={v1,v2...vn},E={e1,e2...em},从而 ∣ V ∣ = n , ∣ E ∣ = m |V|=n,|E|=m ∣V∣=n,∣E∣=m
(1)邻接矩阵表示法:
邻接矩阵是表示顶点间相邻关系的矩阵,记为 W = ( w i j ) n W=(w_{ij})_n W=(wij)n.当 G G G为赋权图时,有 w i j = { 权 值 , 当 v i , v j 相 邻 0 或 ∞ , 当 v i , v j 不 相 邻 w_{ij}=\begin{cases}权值,当v_i,v_j相邻\\0或∞,当v_i,v_j不相邻\end{cases} wij={权值,当vi,vj相邻0或∞,当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,当vi,vj相邻0,当vi,vj不相邻采用邻接矩阵表示图,直观方便,可以很容易地查看图中任意2个顶点是否相邻以及边的权.但当 m < < n m<<n m<<n时,该方法会造成很大的空间浪费
(2)稀疏矩阵表示法:
稀疏矩阵是指包含很多零元素的矩阵.对于稀疏矩阵,只需存储非零元素的行标/列标/值即可,如采用下述格式: [ ( 行 标 , 列 标 ) , 值 ] [(行标,列标),值] [(行标,列标),值]
(3)MATLAB中的存储与转换:
①可使用
sparse()
将邻接矩阵转换为稀疏矩阵,使用full()
将稀疏矩阵转换为邻接矩阵
②对于无向图,由于邻接矩阵为对称矩阵,MATLAB只存储邻接矩阵下三角元素中的非零元素
二.最短路径问题
三.最小生成树问题
四.网络最大流问题
五.最小费用最大流问题
六.旅行商问题
七.计划评审方法与关键路线法