* M+ K z5 W0 ?3 X$ E( L4 K2 图与网络的基本概念 . _5 \* a, @5 D1 }" l2.1 无向图9 G4 s$ z0 O' q3 o ' F. O2 m( \" {* ]6 E8 [+ ]! P7 a+ ?/ C. @, m
边上赋权的无向图称为赋权无向图或无向网络(undirected network)。我们对图和 网络不作严格区分,因为任何图总是可以赋权的。* e) u' W2 C7 F& t5 ^% f
' @/ W/ R7 S( \1 Q1 G9 r0 S一个图称为有限图,如果它的顶点集和边集都有限。图G 的顶点数用符号|V | 或 ν (G) 表示,边数用| E |或ε (G)表示。 0 D# h; \6 u7 B k$ }' B, P* b: D$ p% f
当讨论的图只有一个时,总是用G 来表示这个图。从而在图论符号中我们常略去 字母G ,例如,分别用V,E,ν 和ε 代替V (G),E(G),ν (G) 和ε (G)。 5 W8 d2 X0 S* b4 n- s0 t , E8 i5 b" Y" R, L7 A端点重合为一点的边称为环(loop)。 一个图称为简单图(simple graph),如果它既没有环也没有两条边连接同一对顶点。 ' `1 v% A" z( y+ e7 f 2 |/ y' M7 |( \" }2 |! m2.2 有向图( F1 K% c( f( U8 M % c) W# Q! |1 b w5 k) P . F! r; D7 @, p/ [对应于每个有向图 D ,可以在相同顶点集上作一个图G ,使得对于 D 的每条弧, G 有一条有相同端点的边与之相对应。这个图称为 D 的基础图。反之,给定任意图G , 对于它的每个边,给其端点指定一个顺序,从而确定一条弧,由此得到一个有向图,这 样的有向图称为G 的一个定向图。 以下若未指明“有向图”三字,“图”字皆指无向图。 4 F1 ?& u9 s: A, O: F7 b4 [2 W$ Y: I9 n) Q5 x# U2 g" n
2.3 完全图、二分图$ h9 G6 q9 w/ a3 J
每一对不同的顶点都有一条边相连的简单图称为完全图(complete graph)。n 个顶点 的完全图记为 。 , B% ^4 f1 Y6 ], P3 _! z: x) \/ x( j% i! V$ V ( j2 {4 S9 G3 K8 p2 i
1 A' g) @+ K, y$ }8 p! Z2.4 子图& `% u* f4 z! ?" A2 \
图 H 叫做图 G 的子图(subgraph),记作 H ⊂ G ,如果 V (H ) ⊂V (G) , E(H) ⊂ E(G) 。若 H 是G 的子图,则G 称为 H 的母图。 G 的支撑子图(spanning subgraph,生成子图)是指满足V(H) =V(G) 的子 图 H 。3 b3 g; ~( A; L) n. R5 |. o
' r1 [& O" X6 H) D3 x4 k& d
2.5 顶点的度 & L4 `4 c5 Z) x& V2 X2 D- m% M设v ∈V (G) ,G 中与v 关联的边数(每个环算作两条边)称为v 的度(degree),记 作d(v)。若d(v)是奇数,称v 是奇顶点(odd point);d(v)是偶数,称v 是偶顶点(even point)。0 i4 @$ d9 a- I4 W
2 I' {5 C( U1 U, F
关于顶点的度,我们有如下结果:! e% \0 d1 E h" ]8 S
( b0 \' Z$ B% m7 g& g(i) 8 S& D! J1 l( D# b- c8 S
. W& @; u5 f0 f' @% n, T
(ii) 任意一个图的奇顶点的个数是偶数。9 X6 q4 v& U2 U5 b: @
& U# x* V9 I3 I; H0 x* }/ `8 d4 L7 d& j
2.6 图与网络的数据结构8 T& I9 j- G+ R1 x
网络优化研究的是网络上的各种优化模型与算法。为了在计算机上实现网络优化的 算法,首先我们必须有一种方法(即数据结构)在计算机上来描述图与网络。一般来说, 算法的好坏与网络的具体表示方法,以及中间结果的操作方案是有关系的。这里我们介 绍计算机上用来描述图与网络的 5 种常用表示方法:邻接矩阵表示法、关联矩阵表示法、 弧表表示法、邻接表表示法和星形表示法。 : g( o: K' n. {! r% p, @- a : Y g' Z8 j7 F3 z7 y* K8 |在下面数据结构的讨论中,我们首先假设 G = (V, A)是一个简单有向图,|V |= n,| A |= m ,并假设V 中的顶点用自然数1,2,....,n 表示或编号, A 中的弧用自然数1,2,...,m 表示或编号。对于有多重边或无向网络的情 况,我们只是在讨论完简单有向图的表示方法之后,给出一些说明。 & b# }0 p; T) o( T# Y/ H0 M s7 p) m, g # }3 `! U$ l7 u8 j/ n5 }$ u( z: U(i)邻接矩阵表示法 % H1 a6 B3 O# A6 M Q {邻接矩阵表示法是将图以邻接矩阵(adjacency matrix)的形式存储在计算机中。图 G = (V, A)的邻接矩阵是如下定义的:C 是一个n × n 的0 −1矩阵,即) `9 i, T0 J" J6 y0 E
6 Z( L7 u0 A$ C7 i' |$ i3 ?. M/ Y$ B/ Y
8 m6 O2 Q1 v. Y$ ^/ M也就是说,如果两节点之间有一条弧,则邻接矩阵中对应的元素为 1;否则为 0。 可以看出,这种表示法非常简单、直接。但是,在邻接矩阵的所有 个元素中,只有m 个为非零元。如果网络比较稀疏,这种表示法浪费大量的存储空间,从而增加了在网络 中查找弧的时间。 , }* I5 I6 m% l# R5 L - g) q; X8 e; A( _5 p. t9 s例7 对于图 2 所示的有向图,可以用邻接矩阵表示为7 i x' S' @5 E ) O1 D& g/ X. U , N% u# j( m! a5 M/ J O! V! G, @9 q- b* T! ~3 _9 @7 U$ t
同样,对于网络中的权,也可以用类似邻接矩阵的n × n 矩阵表示。只是此时一条 弧所对应的元素不再是 1,而是相应的权而已。如果网络中每条弧赋有多种权,则可以 用多个矩阵表示这些权。+ e! {' |. @! f7 p, v9 F. X) W
% w! |! G! E- J$ R S, x(ii)关联矩阵表示法9 B$ W$ k3 Y8 [1 c
关联矩阵表示法是将图以关联矩阵(incidence matrix)的形式存储在计算机中.图 G = (V, A)的关联矩阵 B 是如下定义的: B 是一个n × m 的矩阵,即 # Q4 t, D" N9 \/ a9 m 9 A$ S2 L' K; Z4 k v & L! I6 _3 l3 y, o" O- X# d! j3 K' ^4 C# A