第3/次习题课习题课 单老师例1 图11.3.8给定加权连通图<V,E,W>,其中V={v 1,v 2,v 3,v 4,v 5,v 6},E={[v 1,v 2],[v 1,v 5], [v 2,v 3],[v 2,v 6],[v 2,v 5],[v 3,v 4],[v 3,v 6],[v 4,v 5],[v 4,v 6],[v 5,v 6]}和W={3,1,2,1,3,2,3,4,1,2}。
解 令x 0=v 1,按G.Dantzig 算法可得到下面的结点和边序列:v 1,v 5,v 6,v 2,v 4,v 3[v 1,v 5], [v 5,v 6], [v 1,v 2], [v 6,v 4], [v 2,v 3]所求生成树如图11.3.9所示。
前面讨论的树,都是无向图中的树,即无向树;下面将简单地介绍有向图中的树即有向树。
定义11.3.6 如果一个有向图的基础图是一棵树,则该有向图称为有向树。
其图形表示法常采用倒置树表示之,且为方便计,有时略去边之方向。
例2 图11.2.2中(a)的一个最大匹配是{[v 1,v 2],[v 3,v 9],[v 5,v 6],[v 7,v 8]};(b)的一个完全匹配是{[v 1,v 2],[v 3,v 4],[v 5,v 6],[v 7,v 8]}。
例题 3 设A 为简单图G 的邻接矩阵,则A l 中的i 行j 列元素a l ij 等于G 中联结v i 到v j 的长度为l 的链(或路)的数目。
证明 对l 施行归纳证明之。
当l=1时,A l =A 1=A ,定理显然为真。
假设当l=k 时定理成立,考察l=k+1的情形。
由于A k+1=A k ·A即有1+k ij a=∑=nr rj k ira a1(1)根据归纳假设和邻接矩阵的定义可知,kir a 是联结vi 到v r 长度为k 的链(或路)的数目,a rj 是联结v r 到v j 长度为1的链(或路)的数目(实际上这是从v r 到v j 的一条边(或弧)。
因此,(1)式右图11.3.8图11.3.9端的每项表示由v i 经过一条长度为k 的链(或路)到v r ,再由v r 经过一条边(或弧)到v j 的总长度为k+1的链(或路)的数目。
对r 求和,即得1+k ij a ,它是所有从v i 到v j 长度为k+1的链(或路)的数目。
故定理得证。
例4 已知简单有向图G=<V ,E>如图10.3.3所示,G 的邻接矩阵A 是A =⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡010001000000010001010001试求A 1,A 2,A 3,A 4,A 5。
v v 3v v v 5图10.3.3解A 2=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡010001000000010001010001·⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡0100010000000100010100010=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡1000001000001010002000101A 3=A 2·A =⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡1000001000001010002000101·⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡0100010000000100010100010=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡0100010000000200020200020A 4=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡1000001000002020004000202A 5=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡0100010000000400040400040利用定理10.3.1,从上面计算邻接矩阵A 的乘幂可知许多信息。
如v 1到v 2有2条长度为3的路,v 2到v 3有2条长度为3的路,v 3到v 4没有一条长度小于5的路,v 4到v 5有一条长度为5的路,在结点v 2有2条长度为2的回路并且有4条长度为4的回路,但没有长度为3的回路,等等。
在一些实际问题中,有时要判定图中结点v i 到结点v j 是否可达,或者说v i 到v j 是否存在一要链(或路)。
如果要利用图G 的邻接矩阵A ,则应计算A 2,A 3,···,A n ,···。
当发现其中某个A r 中rij a ≥1,就表明v i 可达v j 或v i 到v j 存在一条链(或路)。
但这种计算繁琐量大,又不知计算A r 到何时为止。
根据定理10.2.2可知,对于有n 个结点的图,任何基本链(或路)的长度不大于n-1和任何基本圈(或回路)的长度不大于n 。
因此,只需考虑rij a 就可以了,其中1≤r ≤n 。
即只要计算B n =A+A 2+A 3+···+A n 。
如果关心的是结点间可达性或结点间是否有链(或路),至于结点间的链存在多少条及长度是多少无关紧要,那么便可用下面的定义图的可达矩阵来表示结点间可达性。
例5 给定图G=<V ,E>,将其结点按下标编序得V={v 1,v 2,…,v n }。
定义一个n 阶方阵P=(p ij ),其中⎩⎨⎧=否则可达到,0,1j i ij v v p则称矩阵P 是图G 的可达矩阵。
可见,可达矩阵表明了图中任意两结点间是否至少存在一条链(或路)以及在结点处是否有圈(或回路)。
从图G 的邻接矩阵A 可以得到可达矩阵P ,即令B n =A+A 2+A 3+…+A n ,再从B n 中非零元素改为1而零元素不变,这种变换后的矩阵即是可达矩阵P 。
例6 设有向图G 的邻接矩阵A 是A =⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0001101111000010试求G 的可达矩阵P 。
解 因为A 2=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0010111110121100 A 3=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡1110212211211012A 4=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡1012323332221121故B 4=A +A 2+A 3+A 4=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡2123747764553243 于是P =⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡1111111111111111由此可知,图G 中任何两结点间均为可达,并且在任一结点处都有圈(或回路),此图又是连通的。
上述计算可达矩阵的方法还是比较复杂的,但若定义布尔矩阵运算还是可以达到简化的目的。
假设矩阵中的元素是属于布尔代数<B ,∧,∨,ˉ,0,1>的B 中元素。
其中B ={0,1},则称该矩阵为布尔矩阵。
显然邻接矩阵是一个布尔矩阵,同样可达矩阵也是布尔矩阵。
下面定义两个布尔矩阵B 与C 的运算:令B 与C 的布尔和、布尔积分别记为B ∨C 和B ○∧C ,其定义为 (B ∨C )ij =b ij ∨c ij(B ○∧C )ij =∨=n1k (b ik∧c kj)i ,j =1,2,…,n 。
其中b ij ,c ij 分别为B 和C 的i 行j 列元素。
特别地,对于邻接矩阵A ,记A (1)=A ,对任何r =2,3,…,有 A(r-1)○∧A =A (r)要注意的是A r 与A (r)的差别。
A r 中r ij a 表明从v i 到v j 长度为r 的链(或路)的数目,而A (r)中)(r ij a 是指出了:若v i 到v j 至少存在一条链(或路)时, )(r ij a =1;否则, )(r ij a =0。
由上述说明,便得到可达矩阵P 为:P =A ∨A (2)∨A (3)∨…∨A (n)=∨=n1k A(k)例7 令邻接矩阵A 为A =⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0001101111000010试求A (2),A (3),A (4)和P 。
解A (2)=A ○∧A =⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0001101111000010○∧⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0001101111000010=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0010111110111100A (3)=A (2)○∧A =⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0010111110111100○∧⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0001101111000010=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡1100111111111011A (4)=A (3)○∧A =⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡1100111111111011○∧⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0001101111000010=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡1011111111111111P =A (1)∨A (2)∨A (3)∨A (4)= ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡1111111111111111 对于简单有向图G=<V ,E>,显然有E ⊆V ⨯V 。
因此,弧集合E 可解释成B 中的二元关系,而二元关系是可用矩阵表示的,通常称这种矩阵为关系矩阵,其定义如下:设两个有限集合X={x 1,x 2,···,x m }和Y={y 1,y 2,···,y n },则关系R ⊆X ⨯Y 的关系矩阵M R =(r ij ),其中1, <x i ,y i >∈Rr ij =0, 否则i=1,2,···,m ;j=1,2,···,n 。
由定义可知,关系R 与其关系矩阵M R 是一一对应的,即可以相互确定。
根据集合论可知,对于域F(R)=V 而|V|=n 的关系R 的传递闭包R +可计算如下: R +=R ∪R 2∪R 3∪…∪R k (k ≤n )于是,关系R 1和R 2的关系矩阵分别为A 1和A 2,则关系R 1∪R 2的关系矩阵为A 1∨A 2。
用归纳法可以证明R +的关系矩阵是M R +=M R ∨M R 2∨M R 3∨…∨M R k对于G=<V,E>的邻接矩阵A 是关系E 的关系矩阵,因为E 2=EoE ,即若存在一个结点v k ,使得v i Ev k ,和v k Ev j ,则必有v i E 2v j ,亦即从v i 到v j 若至少存在一条长度为2的链(或路),那么E 2的关系矩阵中的(i,j)元素值为1。
这表明矩阵A (2)是关系E 2的关系矩阵。
以此类推,A (k)是E k 的关系矩阵,k=2,3,···,n 。
因此A +=A ∨A (2)∨A (3)∨…∨A(n)亦即 A +=A ∨A (2)∨A (3)∨…∨A (n)=P可见,关系E 的传递闭包E +的关系矩阵A +与可达矩阵相同。
为了计算A +或P ,自然可先依次求得A (2),A (3),…,A (n),然后再计算∨=nk 1A(k),其结果即为所求,这是计算A +或P 的一种方法,还可介绍一种现有效的方法—Warshall 算法,它由邻接矩阵A 依下面给出的步骤便能计算A +。