根据归纳假设,必存在从v至v′的基本路径。
n阶图中的基本路径的长度小于n。
(因为基本路径中的结点互不相同,即最多仅含n个结点,
所以所经过的边数必定小于n。
)
可达集(reachableset)的概念用于安全性证明。
无向图:
若从v1可达v2,则从v2必可达v1。
有向图:
从v1可达v2不能保证从v2必可达v1。
定理7.3.3
设图G=〈V,E,Ψ〉,v1,v2V。
从v1可达v2iff存在从v1至v2的基本路径
戴克斯特拉(Dijkstra)算法
算法(求从结点s至t的加权距离)
1)λ(s)←0,且v∈V–{s},λ(v)←∞;
2)T←V;
3)任取u∈{u′|若v′∈T,则λ(u′)≤λ(v′)};
4)如果u=t,则算法结束。
5)对于以u为起点的每条边e,如果e的终点v∈T并且λ(v)>λ(u)+W(e),则λ(v)←λ(u)+W(e);
6)T←T–{u},且转向3)。
当算法结束时,λ(t)即为从s至t的加权距离。
算法(求从结点s至t的加权距离)
1)λ(s)←0,且v∈V–{s},λ(v)←∞;{p←#}
2)T←V;
3)任取u∈{u′|若v′∈T,则λ(u′)≤λ(v′)};
4)如果u=t,则{p←pt#},算法结束。
5)对于以u为起点的每条边e,如果e的终点v∈T并且λ(v)>λ(u)+W(e),则λ(v)←λ(u)+W(e);
6)T←T–{u},{p←pu},且转向3)。
当算法结束时,λ(t)即为从s至t的加权距离。
p即为从s至t的最短路径。
定理7.3.4
连通无向图恰有一个分支。
非连通无向图有一个以上分支。
定理7.3.5
强连通(单向连通,弱连通)有向图恰有一个强分支(单向分支,弱分支)。
非强连通(非单向连通,非弱连通)有向图有一个以上强分支(单向分支,弱分支)。
有向图G中的路径一定是G中的半路径,
但G中的半路径未必是G中的路径。
定理7.3.6
设图G=〈V,E,Ψ〉,vV。
G是回路或有向回路当且仅当G的阶与边数相等,并且在G中存在这样一条从v到v的闭路径,使得除了v在该闭路径中出现两次外,其余结点和每条边都在该闭路径中恰出现一次。
证明:
充分性显然,必要性:
i) 证明G的阶与边数相等。
G是回路或有向回路
|V|=|E|
ii)对G的阶用第一归纳法。
定理7.3.7
如果有向图G有子图G′满足:
对于G′的任意结点v,dG+(v)>0,则G有有向回路。
定理7.3.8
如果有向图G有子图G′满足:
对于G′中的任意结点v,dG-(v)>0,则G有有向回路。
证明:
设G′=〈V′,E′,Ψ′〉,v0e1v1…vn-1envn是G′中最长的基本路径。
由于dG-(v0)>0,必可找到e∈E′和v∈V′,使vev0e1v1…vn-1envn是G′中的简单路径,且v=vi(0≤i≤n)。
G的以{v0,…,vi}为结点集合,以{e,e1,…,ei}为边集合的子图是有向回路。
v0e1v1…vn-1envn是最长的基本路径
W-过程
判断一个有向图是否有有向回路的方法:
W—过程
从G中去掉v和与之关联的边得到有向图G-{v}的过程(其中v是有向图的结点,dG-(v)=0或dG+(v)=0)。
•G有有向回路当且仅当G–{v}有有向回路;
•若n阶有向图G没有有向回路,则经过n–1次W—过程得到平凡图。
定理7.3.9
图G不是非循环图iff
G有子图G′满足:
对于G′的任意结点v,dG′(v)>1。
(证明方法与定理7.3.8类似)
类似方法:
G0,G1,…,Gm,其中0≤m≤n–1,G0=G,Gi+1=Gi–{vi}(其中dGi(vi)1)。
若Gm是平凡图,则G是非循环图,否则不然。
欧拉定理
设G是连通无向图,G是欧拉图iffG有欧拉闭路。
证明:
充分性)显然,只证必要性)。
对G的边的数目n用第二归纳法:
i)若n=0,则G为平凡图,必要性显然成立。
ii)令n∈I+,设任意边数少于n的连通欧拉图均有欧拉闭路。
若G有n条边,
连通、偶结点
G是连通欧拉图G的任意结点的度大于1(大于等于2)
定理7.3.9
G有回路。
设G有长度为m的回路C
定理7.3.6
在C中存在闭路径v0e1v1…vm-1emv0,其中
v0,v1,…,vm-1各不相同,并且{v0,v1,…,vm-1}和
{e1,e2,…,em}分别是C的结点集合和边集合。
令G=G–{e1,…,em},设G有k个分支G1,…,Gk。
G是连通的
G的每个分支Gi与C都有公共结点。
设vni为G的分支Gi(1ik)与C的一个公共结点,并假定0n1…nkm–1。
显然,Gi为边数小于n的连通欧拉图(Gi为分支且每个结点仍为偶结点)。
由归纳假设:
Gi有一条从vni到vni的欧拉闭路径Pi。
因此,以下的闭路径:
v0e1v1…en1P1en1+1…enkPkenk+1…vm-1emv0
就是G的一条欧拉路径。
定理7.4.2
设G=〈V,E,Ψ〉为连通无向图,v1,v2∈V且v1v2。
则G有一条从v1至v2的欧拉路径iff
G恰有两个奇结点v1和v2。
证明:
任取eE,并令Ψ′={〈e,{v1,v2}〉},则
G有一条从v1至v2的欧拉路径iff
G′=G+{e}Ψ′有一条欧拉闭路iff
G′是欧拉图iff
G′中每个结点都是偶结点iff
G中恰有两个奇结点v1和v2
定理7.4.3
设G为弱连通的有向图。
G是欧拉有向图iffG有欧拉闭路。
证明过程与定理7.4.1类似
定理7.4.4
设G为弱连通的有向图。
v1和v2为G的两个不同结点。
G有一条从v1至v2的欧拉路径iff
dG+(v1)=dG-(v1)+1,dG+(v2)=dG-(v2)–1
且对G的其它结点v,均有dG+(v)=dG-(v)
证明过程与定理7.4.2类似。
定理7.4.5
如果G1和G2是可运算的欧拉图,则G1G2是欧拉图。
证明:
G1=<V1,E1,Ψ1>,G2=<V2,E2,Ψ2>,
G1G2=<V,E,Ψ>
设v是G1G2的任意结点,则有以下三种可能:
i)vV1但vV2;ii)vV2但vV1;
这两种情况下,与v相连的边在G1G2中不变,v仍是G1G2的偶结点。
iii)vV1且vV2。
设G1和G2有k条公共边与l个公共自圈与v关联,
则dG1G2(v)=dG1(v)+dG2(v)–2(k+2l),
故v仍是G1G2的偶结点。
G1G2是欧拉图(图中所有结点均为偶结点)。
G的邻接矩阵X(G)为n×n矩阵(xij),其中xij为分别以vi和vj为起点和终点的边的数目。
i)如果G1和G2是两个同构的图,则首先交换X(G1)的一些行,然后交换相应的列,就可由X(G1)得到X(G2);
ii)对于结点的不同排列顺序,可以得到同一个图的不同邻接矩阵;
iii)对于同构的图不加区别。
因此,不关心矩阵中结点和边的顺序是合理的。
n阶图G和X(G)之间的联系
1.无向图G的邻接矩阵X(G)是对称的。
2.图G没有平行边iffX(G)的元素都是0和1。
3.图G有自圈iffX(G)的对角线有非0元素。
4.图G是简单图iffX(G)的元素都是0和1,并且对角线元素都为0。
5.图G是零图iffX(G)是零矩阵(即所有元素都是0的矩阵)。
6.若图G是无向图,dG(vi)=xii+(i=1,2,…,n)。
7.若图G是有向图,dG+(vi)=,dG-(vi)=,
dG(vi)=(i=1,2,…,n)。
8.无向图(有向图)G有k个分支(弱分支)G1,G2,…,Gkiff
顺序排列G1,G2,…,Gk的结点可使
方阵X,mN,xij(m)表示Xm的第i行第j列元素。
在X(G)中,若xij=r,则说明从vi至vj存在r条长度为1的路径。
该结果可推广到X的任意正整数次幂
定理7.5.1
设m∈I+,n阶图G的V={v1,v2,…,vn},若X是G的邻接矩阵且1≤i,j≤n,则xij(m)等于G中从vi至vj的长度为m的路径数。
证明:
对m用第一归纳法,
i) 当m=1时,定理显然成立。
ii) 假设当m=k(k≥1)时,定理成立。
当m=k+1时,根据归纳假设,若1≤l≤n,则
xil(k)等于G中从vi至vl长度为k的路径数,
xlj等于从vl至vj长度为1的路径数,
因此,
xil(k)xlj等于从vi至vj长度为k+1且倒数第二个结点为vl的路径数。
所以
xij(k+1)=即为G中从vi至vj长度为k+1的路径数。
由邻接矩阵求路径矩阵
1pij=1iff从vi可达vj
iff存在从vi到vj的路径
iff存在从vi到vj的基本路径(定理7.3.3)
iff存在从vi到vj长度小于n的路径(定理7.3.2)
2去掉自圈和平行边不会改变结点间的可达性。
定理7.5.2
设X和P分别是n阶简单图G的邻接矩阵和路径矩阵,记X(0)=In(In是n阶单位矩阵)。
Xk+1=X(k)X(k=0,1,2,…,n),
则
。
其中,的定义参见P143。
由图的邻接矩阵可以求得它的距离矩阵。
定理7.5.3
设D=(dij)和X=(xij)分别是n阶图G的距离矩阵和邻接矩阵,则
图的路径矩阵和距离矩阵不能给出图的全部信息;
图的邻接矩阵可以给出图的全部信息;
无自圈图的关联矩阵可以给出无自圈图的全部信息。
无自圈有m条边的n阶图G和A(G)之间的联系
1.G是零图iffA(G)是空矩阵(即没有任何元素的矩阵)。
2.无向图G的关联矩阵A(G)的每列元素之和为2。
3.有向图G的关联矩阵A(G)的每列元素之和为0。
4.ei和ej是G的平行边iffA(G)的第i列与第j列相同。
5.若G是无向图,dG(vi)=(i=1,2,…,n)。
6.若G是有向图,dG+(vi)为A(G)的第i行中值为1的元素个数,
dG-(vi)为A(G)的第i行中值为-1的元素个数,
dG(vi)为A(G)的第i行中非零元素个数(i=1,2,…,n)。
7.vi是孤立点iffA(G)的第i行全为0。
8.无向图(有向图)G有k个分支(弱分支)G1,G2,…,Gkiff
顺序排列G的结点和边的顺序,可使
定理7.6.1
设G是n阶无向图。
可用以下六种等价的办法来定义树:
i) G是连通的,又是非循环的。
ii)G没有自圈,并且对于G的任意两结点v和v′,在G中
存在唯一的一条从v至v′的基本路径。
iii) G是连通的,如果v和v′是G的两结点,e不是G的边,当令Ψ′={〈e,{v,v′}〉}时,则G+{e}Ψ′有唯一的一条回路。
iv)G是连通的,并且对于G的任意边e,G–e非连通。
v)G是连通的,并且有n–1条边。
vi)G是非循环的,并且有n–1条边。
证明参见P145–146。
定理7.6.2
阶大于1的树至少有两个端点。
定理7.6.3
如果森林F有n个结点,m条边和k个分支,则m=n–k。
找连通图的生成树方法
找连通图G的生成树的方法:
“避圈法”与“破圈法”
1、避圈法:
添加e1,…,ei,在添加的每一步均保证:
ei+1不与{e1,…,ei}的任何子集构成回路。
2、破圈法:
在G0(即G),G1,G2,…中去掉e1,e2,e3,…,其中ei为Gi-1中某条回路中的边。
即把G中的所有回路均挑破!
!
!
最小生成树求法(避圈法、破圈法)
按“避圈法”求最小生成树:
设G是有m条边的n阶连通无向图,
1把G的m条边按加权长度递增的顺序排成e1,e2,…,em;
2T←;
3j←1,i←1;
(i记录正在扫描的边的下标;j记录T中边数是否已达n-1)
4若j=n则算法结束。
5若G的以T∪{ei}为边集合的子图没有回路,
则T←T∪{ei}且j←j+1;
6i←i+1,转向4
算法结束时,T即为所求的最小生成树的边集。
定理7.6.5
设G是有m条边的n阶连通无向图,则对于G的任何生成树T,都有n–1个枝和m–n+1个弦。
定理7.6.6
设T是连通无向图G的任意生成树。
i)基本回路的数目等于G的圈秩μ;
ii)对于G的任意回路C,总可以找到若干个基本回路C1,C2,…,
Ck,使C与C1C2…Ck的差别仅在于孤立点。
证明:
i)显然。
ii)设C是G的任意回路,C包含k条弦,显然k>0,设这k条弦是e1,e2,…,ek,Ci是包含ei的基本回路(i=1,2,…,k)。
令C=C1C2…Ck,则C包含的弦也是e1,e2,…,ek。
因此,CC中的边都是枝,则CC是非循环的。
下面证明CC是零图。
若CC不是零图,必有一分支是阶大于1的树,根据定理7.6.2,CC有端点。
另一方面,因为C和C都是欧拉图,所以CC是欧拉图。
这与CC有端点矛盾,故CC必为零图,即C与C的差别仅在于孤立点。
定理7.6.7及其证明
设v0是有向图D的结点。
D是以v0为根的有向树iff
从v0至D的任意结点恰有一条路径。
证明:
)设D=〈V,E,Ψ〉是有向树,v0是D的根。
因为D是弱连通的,任取v′∈V,则存在从v0至v′的半路径P,
设P为v0e1v1…vp-1epvp,其中vp=v′。
因为dD-(v0)=0,所以e1是正向边,因为dD-(v1)=1,所以e2也是正向边。
由归纳法可以证明:
每个ei(1ip)均是正向边。
故P为有向路径。
若从v0至v′有两条路径P1和P2,则P1和P2至少有一个公共点的入度大于1,与D是有向树矛盾。
证明:
)若dD-(v0)>0,则存在边e以v0为终点(D弱连通),
设v1是e的起点,P是从v0至v1的路径,则在D中存在两条不同的从v0至v0的路径Pv1ev0和v0,与已知条件矛盾,所以dD-(v0)=0。
若dD-(v)>1,其中v是D的结点,则存在两条边e1和e2以v为终点。
设e1和e2的起点分别是v1和v2,从v0至v1和从v0至v2的路径分别是P1和P2,则P1e1v和P2e2v是两条不同的从v0至v的路径,与已知条件矛盾。
所以,D是有向树,且v0是D的根。