强连通分支、桥和割点
- 格式:ppt
- 大小:762.50 KB
- 文档页数:87
连通图的割点、割边(桥)、块、缩点,有向图的强连通分量一、基本概念无向图割点:删掉它之后(删掉所有跟它相连的边),图必然会分裂成两个或两个以上的子图。
块:没有割点的连通子图割边:删掉一条边后,图必然会分裂成两个或两个以上的子图,又称桥。
缩点:把没有割边的连通子图缩为一个点,此时满足任意两点间都有两条路径相互可达。
求块跟求缩点非常相似,很容易搞混,但本质上完全不同。
割点可以存在多个块中(假如存在k个块中),最终该点与其他点形成k个块,对无割边的连通子图进行缩点后(假设为k个),新图便变为一棵k个点由k-1条割边连接成的树,倘若其中有一条边不是割边,则它必可与其他割边形成一个环,而能继续进行缩点。
有割点的图不一定有割边,如:3是割点,分别与(1,2)和(4,5)形成两个无割点的块有割边的图也不定有割点,如:w(1,2)为割边,有向图强连通分量:有向图中任意两点相互可达的连通子图,其实也相当于无向图中的缩点二、算法无向图借助两个辅助数组dfn[],low[]进行DFS便可找到无向图的割点和割边,用一个栈st[]维护记录块和“缩点”后连通子图中所有的点。
dfn[i]表示DFS过程中到达点i的时间,low[i]表示能通过其他边回到其祖先的最早时间。
low[i]=min(low[i],dfn[son[i]])设 v,u之间有边w(v,u),从v->u:如果low[u]>=dfn[v],说明v的儿子u不能通过其他边到达v的祖先,此时如果拿掉v,则必定把v的祖先和v的儿子u,及它的子孙分开,于是v便是一个割点,v和它的子孙形成一个块。
如果low[u]>dfn[v]时,则说明u不仅不能到达v的祖先,连v也不能通过另外一条边直接到达,从而它们之间的边w(v,u)便是割边,求割边的时候有一个重边的问题要视情况处理,如果v,u之间有两条无向边,需要仍视为割边的话,则在DFS的时候加一个变量记录它的父亲,下一步遇到父结点时不扩展回去,从而第二条无向重边不会被遍历而导致low[u]==dfn[v] ,而在另外一些问题中,比如电线连接两台设备A,B 如果它们之间有两根电线,则应该视为是双连通的,因为任何一条电线出问题都不会破坏A和B之间的连通性,这个时候,我们可以用一个used[]数组标记边的id,DFS时会把一条无向边拆成两条有向边进行遍历,但我们给它们俩同一个id号,在开始遍历v->u前检查它的id是否在上一次u->v 时被标记,这样如果两点之间有多条边时,每次遍历都只标记其中一条,还可以通过其他边回去,形成第二条新的路求割点的时候,维护一个栈st 每遍历到一个顶点v则把它放进去,对它的子孙u如果dfn[u]为0,则表示还没有遍历到则先DFS(u),之后再判断low[u]和dfn[v],如果low[u]>=dfn[v],则把栈中从栈顶到v这一系列元素弹出,这些点与v 形成一个块,如果u的子孙x也是一个割点,这样做会不会错把它们和v,u放在一起形成一个块呢,这种情况是不会发生的,如果发现x是一个割点,则DFS 到x那一步后栈早就把属于x的子孙弹出来了,而只剩下v,u的子孙,它们之间不存在割点,否则在回溯到v之前也早就提前出栈了!画一个图照着代码模拟一下可以方便理解。
连通分支的定义一、引言连通分支是图论中的一个重要概念,用于描述图中的连通性。
在图中连接在一起的节点构成一个连通分支。
在本文中,我们将详细讨论连通分支的定义、性质以及如何在图中找到连通分支,旨在帮助读者更深入地了解和理解这一概念。
二、定义连通分支是指图中的节点集合,其中的任意两个节点之间都存在一条路径。
换句话说,对于连通分支中的任意两个节点,我们可以通过边来沿路径相互到达。
连通分支是图中的一个最大连通子图,因为它包含了图中所有可以通过路径相互到达的节点。
三、性质连通分支具有以下性质:1. 最大性质连通分支是一个最大连通子图,即它不包含在其他的连通分支中。
换句话说,如果我们将连通分支中的任意一个节点添加到该分支外的节点中,将会破坏连通性。
2. 无向图中的连通分支对于无向图而言,连通分支是无向图中的极大连通子图。
一个无向图可以包含多个连通分支,每个连通分支都是一个独立的连通子图。
3. 有向图中的连通分支对于有向图而言,连通分支是有向图中的极大强连通子图。
强连通子图是指其中的所有节点之间互相可达,即对于连通分支中的任意两个节点,存在一条有向路径可以从一个节点到达另一个节点。
四、寻找连通分支的算法在图中寻找连通分支的算法是一项基本的图算法,下面介绍两种常见的算法:广度优先搜索(BFS)和深度优先搜索(DFS)。
1. 广度优先搜索(BFS)广度优先搜索是一种用于遍历或搜索图中节点的算法。
它从一个起始节点开始,逐层地遍历其邻接节点,直到遍历完所有连通的节点。
在遍历过程中,我们可以记录下每个连通分支的节点。
以下是广度优先搜索的基本步骤: 1. 创建一个队列,并将起始节点放入队列中。
2. 从队列中取出一个节点,并标记为已访问。
3. 遍历该节点的所有邻接节点,并将未访问的邻接节点放入队列中。
4. 重复步骤2和步骤3,直到队列为空。
5. 如果还存在未访问的节点,重复步骤2到步骤4。
2. 深度优先搜索(DFS)深度优先搜索也是一种用于遍历或搜索图中节点的算法。
考研数学知识点总结一、高等数学1. 极限与连续极限:数列极限、函数极限、无穷极限、极限的性质和运算法则连续:函数连续性、连续函数的性质、间断点、闭区间连续性定理2. 导数与微分导数的概念:函数的导数、导数的性质微分:函数的微分、微分的性质、高阶微分3. 微分方程微分方程的解法:可分离变量、一阶线性微分方程、二阶线性微分方程微分方程的应用:常微分方程的物理应用、生物应用、经济应用4. 重积分二重积分:累次积分、极坐标系下的二重积分三重积分:累次积分、柱坐标系、球坐标系下的三重积分5. 线性代数行列式与矩阵:行列式的性质、矩阵的性质和运算线性方程组:线性方程组的解法、线性方程组的应用特征值与特征向量:矩阵的特征值和特征向量、对角化、相似矩阵二、离散数学1. 集合与命题逻辑集合:集合的基本概念、集合的运算、集合的应用命题逻辑:命题的联结词、等值命题、蕴含命题、充分必要条件2. 图论图的基本概念:图的定义、图的性质、图的应用连通性:连通图、强连通图、连通度、割点、桥图的着色问题:平面图的着色、四色定理3. 组合数学排列组合:排列、组合、二项式定理生成函数:普通生成函数、指数型生成函数容斥原理:二项式系数的应用、排列组合的应用4. 概率论随机事件与概率:随机试验、随机事件的概率、概率的性质随机变量与概率分布:随机变量的概念、离散型随机变量、连续型随机变量随机过程:马尔可夫链、泊松过程、布朗运动三、数学分析1. 泛函分析赋范空间:线性空间的内积、希尔伯特空间的定义线性算子:紧算子、自共轭算子巴拿赫空间:巴拿赫空间的性质和定理2. 复变函数复数和复变函数:复数的基本性质、复变函数的连续性和可导性积分定理:柯西积分定理、留数定理解析函数:正实部函数、调和函数、齐纯函数3. 实变函数度量空间:度量空间的性质、完备度量空间勒贝格积分:勒贝格积分的性质、勒贝格积分的应用广义积分:广义积分的收敛性、绝对收敛四、概率论与数理统计1. 随机变量随机变量的概念:离散型随机变量、连续型随机变量、随机变量的分布函数随机变量的数字特征:数学期望、方差、协方差2. 大数定律与中心极限定理大数定律:切比雪夫不等式、辛钦大数定律、伯努利大数定律中心极限定理:林德贝格-列维中心极限定理、中心极限定理的其他形式3. 参数估计与检验参数估计:点估计、区间估计假设检验:假设检验的基本思想、参数假设检验方差分析:单因素方差分析、双因素方差分析五、数理逻辑与模糊数学1. 数理逻辑命题逻辑:命题的联结词、等值命题、蕴含命题、充分必要条件谓词逻辑:一阶谓词逻辑、量词、谓词逻辑的推理规则2. 模糊数学模糊集合:模糊集合的基本概念、模糊集合的运算模糊关系:模糊关系的合成、模糊关系的反对称性模糊逻辑:模糊逻辑的蕴含、摩根定律、模糊逻辑的合取和析取以上是考研数学的知识点总结,希望对大家有所帮助。
图的割点、桥与双连通分支[点连通度与边连通度]在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。
一个图的点连通度的定义为,最小割点集合中的顶点数。
类似的,如果有一个边集合,删除这个边集合以后,原图变成多个连通块,就称这个点集为割边集合。
一个图的边连通度的定义为,最小割边集合中的边数。
[双连通图、割点与桥]如果一个无向连通图的点连通度大于1,则称该图是点双连通的(point biconnected),简称双连通或重连通。
一个图有割点,当且仅当这个图的点连通度为1,则割点集合的唯一元素被称为割点(cut point),又叫关节点(articulation point)。
如果一个无向连通图的边连通度大于1,则称该图是边双连通的(edge biconnected),简称双连通或重连通。
一个图有桥,当且仅当这个图的边连通度为1,则割边集合的唯一元素被称为桥(bridge),又叫关节边(articulation edge)。
可以看出,点双连通与边双连通都可以简称为双连通,它们之间是有着某种联系的,下文中提到的双连通,均既可指点双连通,又可指边双连通。
[双连通分支]在图G的所有子图G'中,如果G'是双连通的,则称G'为双连通子图。
如果一个双连通子图G'它不是任何一个双连通子图的真子集,则G'为极大双连通子图。
双连通分支(biconnected component),或重连通分支,就是图的极大双连通子图。
特殊的,点双连通分支又叫做块。
[求割点与桥]该算法是R.Tarjan发明的。
对图深度优先搜索,定义DFS(u)为u在搜索树(以下简称为树)中被遍历到的次序号。
定义Low(u)为u或u的子树中能通过非父子边追溯到的最早的节点,即DFS序号最小的节点。
根据定义,则有:Low(u)=Min { DFS(u) DFS(v) (u,v)为后向边(返祖边) 等价于DFS(v)<DFS(u)且v 不为u的父亲节点Low(v) (u,v)为树枝边(父子边) }一个顶点u是割点,当且仅当满足(1)或(2) (1) u为树根,且u有多于一个子树。
初期:一.基本算法:(1)枚举. (poj1753,poj2965)(2)贪心(poj1328,poj2109,poj2586)(3)递归和分治法.(4)递推.(5)构造法.(poj3295)(6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法:(1)图的深度优先遍历和广度优先遍历.(2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra)(poj1860,poj3259,poj1062,poj2253,poj1125,poj2240)(3)最小生成树算法(prim,kruskal) (poj1789,poj2485,poj1258,poj3026)(4)拓扑排序 (poj1094)(5)二分图的最大匹配 (匈牙利算法) (poj3041,poj3020)(6)最大流的增广路算法(KM算法). (poj1459,poj3436)三.数据结构.(1)串 (poj1035,poj3080,poj1936)(2)排序(快排、归并排(与逆序数有关)、堆排) (poj2388,poj2299)(3)简单并查集的应用.(4)哈希表和二分查找等高效查找法(数的Hash,串的Hash)(poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503)(5)哈夫曼树(poj3253)(6)堆(7)trie树(静态建树、动态建树) (poj2513)四.简单搜索(1)深度优先搜索 (poj2488,poj3083,poj3009,poj1321,poj2251)(2)广度优先搜索(poj3278,poj1426,poj3126,poj3087.poj3414)(3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129)五.动态规划(1)背包问题. (poj1837,poj1276)(2)型如下表的简单DP(可参考lrj的书 page149):1.E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533)2.E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列) (poj3176,poj1080,poj1159)3.C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题)六.数学(1)组合数学:1.加法原理和乘法原理.2.排列组合.3.递推关系.(POJ3252,poj1850,poj1019,poj1942)(2)数论.1.素数与整除问题2.进制位.3.同余模运算.(poj2635, poj3292,poj1845,poj2115)(3)计算方法.1.二分法求解单调函数相关知识.(poj3273,poj3258,poj1905,poj3122)七.计算几何学.(1)几何公式.(2)叉积和点积的运用(如线段相交的判定,点到线段的距离等). (poj2031,poj1039)(3)多边型的简单算法(求面积)和相关判定(点在多边型内,多边型是否相交)(poj1408,poj1584)(4)凸包. (poj2187,poj1113)中级:一.基本算法:(1)C++的标准模版库的应用. (poj3096,poj3007)(2)较为复杂的模拟题的训练(poj3393,poj1472,poj3371,poj1027,poj2706)二.图算法:(1)差分约束系统的建立和求解. (poj1201,poj2983)(2)最小费用最大流(poj2516,poj2516,poj2195)(3)双连通分量(poj2942)(4)强连通分支及其缩点.(poj2186)(5)图的割边和割点(poj3352)(6)最小割模型、网络流规约(poj3308, )三.数据结构.(1)线段树. (poj2528,poj2828,poj2777,poj2886,poj2750)(2)静态二叉检索树. (poj2482,poj2352)(3)树状树组(poj1195,poj3321)(4)RMQ. (poj3264,poj3368)(5)并查集的高级应用. (poj1703,2492)(6)KMP算法. (poj1961,poj2406)四.搜索(1)最优化剪枝和可行性剪枝(2)搜索的技巧和优化 (poj3411,poj1724)(3)记忆化搜索(poj3373,poj1691)五.动态规划(1)较为复杂的动态规划(如动态规划解特别的施行商问题等) (poj1191,poj1054,poj3280,poj2029,poj2948,poj1925,poj3034)(2)记录状态的动态规划. (POJ3254,poj2411,poj1185)(3)树型动态规划(poj2057,poj1947,poj2486,poj3140)六.数学(1)组合数学:1.容斥原理.2.抽屉原理.3.置换群与Polya定理(poj1286,poj2409,poj3270,poj1026).4.递推关系和母函数.(2)数学.1.高斯消元法(poj2947,poj1487, poj2065,poj1166,poj1222)2.概率问题. (poj3071,poj3440)3.GCD、扩展的欧几里德(中国剩余定理) (poj3101)(3)计算方法.1.0/1分数规划. (poj2976)2.三分法求解单峰(单谷)的极值.3.矩阵法(poj3150,poj3422,poj3070)4.迭代逼近(poj3301)(4)随机化算法(poj3318,poj2454)(5)杂题. (poj1870,poj3296,poj3286,poj1095)七.计算几何学.(1)坐标离散化.(2)扫描线算法(例如求矩形的面积和周长并,常和线段树或堆一起使用).(poj1765,poj1177,poj1151,poj3277,poj2280,poj3004)(3)多边形的内核(半平面交)(poj3130,poj3335)(4)几何工具的综合应用.(poj1819,poj1066,poj2043,poj3227,poj2165,poj3429)高级:一.基本算法要求:(1)代码快速写成,精简但不失风格(poj2525,poj1684,poj1421,poj1048,poj2050,poj3306)(2)保证正确性和高效性. poj3434二.图算法:(1)度限制最小生成树和第K最短路. (poj1639)(2)最短路,最小生成树,二分图,最大流问题的相关理论(主要是模型建立和求解) (poj3155, poj2112,poj1966,poj3281,poj1087,poj2289,poj3216,poj2446) (3)最优比率生成树. (poj2728)(4)最小树形图(poj3164)(5)次小生成树.(6)无向图、有向图的最小环三.数据结构.(1)trie图的建立和应用. (poj2778)(2)LCA和RMQ问题(LCA(最近公共祖先问题) 有离线算法(并查集+dfs) 和在线算法(RMQ+dfs)).(poj1330)(3)双端队列和它的应用(维护一个单调的队列,常常在动态规划中起到优化状态转移的目的).(poj2823)(4)左偏树(可合并堆).(5)后缀树(非常有用的数据结构,也是赛区考题的热点). (poj3415,poj3294)四.搜索(1)较麻烦的搜索题目训练(poj1069,poj3322,poj1475,poj1924,poj2049,poj3426)(2)广搜的状态优化:利用M进制数存储状态、转化为串用hash表判重、按位压缩存储状态、双向广搜、A*算法. (poj1768,poj1184,poj1872,poj1324,poj2046,poj1482)(3)深搜的优化:尽量用位运算、一定要加剪枝、函数参数尽可能少、层数不易过大、可以考虑双向搜索或者是轮换搜索、IDA*算法.(poj3131,poj2870,poj2286)五.动态规划(1)需要用数据结构优化的动态规划. (poj2754,poj3378,poj3017)(2)四边形不等式理论.(3)较难的状态DP(poj3133)六.数学(1)组合数学.1.MoBius反演(poj2888,poj2154)2.偏序关系理论.(2)博奕论.1.极大极小过程(poj3317,poj1085)2.Nim问题.七.计算几何学.(1)半平面求交(poj3384,poj2540)(2)可视图的建立(poj2966)(3)点集最小圆覆盖.(4)对踵点(poj2079)八.综合题.(poj3109,poj1478,poj1462,poj2729,poj2048,poj3336,poj3315,poj2148,poj1263) 以及补充Dp状态设计与方程总结1.不完全状态记录<1>青蛙过河问题<2>利用区间dp2.背包类问题<1> 0-1背包,经典问题<2>无限背包,经典问题<3>判定性背包问题<4>带附属关系的背包问题<5> + -1背包问题<6>双背包求最优值<7>构造三角形问题<8>带上下界限制的背包问题(012背包)3.线性的动态规划问题<1>积木游戏问题<2>决斗(判定性问题)<3>圆的最大多边形问题<4>统计单词个数问题<5>棋盘分割<6>日程安排问题<7>最小逼近问题(求出两数之比最接近某数/两数之和等于某数等等)<8>方块消除游戏(某区间可以连续消去求最大效益)<9>资源分配问题<10>数字三角形问题<11>漂亮的打印<12>邮局问题与构造答案<13>最高积木问题<14>两段连续和最大<15>2次幂和问题<16>N个数的最大M段子段和<17>交叉最大数问题4.判定性问题的dp(如判定整除、判定可达性等)<1>模K问题的dp<2>特殊的模K问题,求最大(最小)模K的数<3>变换数问题5.单调性优化的动态规划<1>1-SUM问题<2>2-SUM问题<3>序列划分问题(单调队列优化)6.剖分问题(多边形剖分/石子合并/圆的剖分/乘积最大)<1>凸多边形的三角剖分问题<2>乘积最大问题<3>多边形游戏(多边形边上是操作符,顶点有权值)<4>石子合并(N^3/N^2/NLogN各种优化)7.贪心的动态规划<1>最优装载问题<2>部分背包问题<3>乘船问题<4>贪心策略<5>双机调度问题Johnson算法8.状态dp<1>牛仔射击问题(博弈类)<2>哈密顿路径的状态dp<3>两支点天平平衡问题<4>一个有向图的最接近二部图9.树型dp<1>完美服务器问题(每个节点有3种状态)<2>小胖守皇宫问题<3>网络收费问题<4>树中漫游问题<5>树上的博弈<6>树的最大独立集问题<7>树的最大平衡值问题<8>构造树的最小环转一个搞ACM需要的掌握的算法.要注意,ACM的竞赛性强,因此自己应该和自己的实际应用联系起来.适合自己的才是好的,有的人不适合搞算法,喜欢系统架构,因此不要看到别人什么就眼红, 发挥自己的长处,这才是重要的.第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来.1.最短路(Floyd、Dijstra,BellmanFord)2.最小生成树(先写个prim,kruscal要用并查集,不好写)3.大数(高精度)加减乘除4.二分查找. (代码可在五行以内)5.叉乘、判线段相交、然后写个凸包.6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简)7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式.8. 调用系统的qsort, 技巧很多,慢慢掌握.9. 任意进制间的转换第二阶段:练习复杂一点,但也较常用的算法。
图的割点、桥与双连通分支[点连通度与边连通度]在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。
一个图的点连通度的定义为,最小割点集合中的顶点数。
类似的,如果有一个边集合,删除这个边集合以后,原图变成多个连通块,就称这个点集为割边集合。
一个图的边连通度的定义为,最小割边集合中的边数。
注:以上定义的意思是,即有可能删除两个或两个以上点的时候才能形成多个连通块![双连通图、割点与桥]如果一个无向连通图的点连通度大于1,则称该图是点双连通的(point biconnected),简称双连通或重连通。
一个图有割点,当且仅当这个图的点连通度为1,则割点集合的唯一元素被称为割点(cut point),又叫关节点(articulation point)。
如果一个无向连通图的边连通度大于1,则称该图是边双连通的(edge biconnected),简称双连通或重连通。
一个图有桥,当且仅当这个图的边连通度为1,则割边集合的唯一元素被称为桥(bridge),又叫关节边(articulation edge)。
可以看出,点双连通与边双连通都可以简称为双连通,它们之间是有着某种联系的,下文中提到的双连通,均既可指点双连通,又可指边双连通。
[双连通分支]在图G的所有子图G’中,如果G’是双连通的,则称G’为双连通子图。
如果一个双连通子图G’它不是任何一个双连通子图的真子集,则G’为极大双连通子图。
双连通分支(biconnected component),或重连通分支,就是图的极大双连通子图。
特殊的,点双连通分支又叫做块。
[求割点与桥]该算法是R.Tarjan发明的。
对图深度优先搜索,定义DFS(u)为u在搜索树(以下简称为树)中被遍历到的次序号。
定义Low(u)为u或u的子树中能通过非父子边追溯到的最早的节点,即DFS序号最小的节点。
第3章图的基本概念与性质一、概念图——图可以用集合的形式表示,即图可以表示为一个三元组,包含结点集、边集,以及边与结点对集间的映射.如果用结点对来表示边,则图可以表示成一个由结点集与边集组成的二元组.定义3.1.1图G是一个三元组<V(G),E(G),ϕG>,其中V(G)是一个非空的结点集(或称顶点集),E(G)是边集,ϕG是从边集E(G)到结点偶对(无序偶或有序偶)集上的函数.图定义中的结点偶对可以是有序的,也可以是无序的.有向边、端点——若图中的边e所对应的结点偶对是有序的,记为<a,b>,则称e是有向边(简称弧).a,b分别称为弧的始点与终点,并均称为e的端点.称e是关联于结点a 和b的,结点a和结点b是相、邻的,或称结点a和结点b是邻接的.无向边、端点——若图中的边e所对应的结点偶对是无序的,记为(a,b),则称e是无向边(简称棱).a,b称为e的端点.称e是关联于结点a和b的,结点a和结点b是相、邻的,或称结点a和结点b是邻接的.有向图——每一条边均为有向边的图称为有向图.无向图——每一条边均为无向边的图称为无向图.底图——如果把有向图中每条有向边都看作无向边,就得一个无向图,此无向图称为原有向图的底图.底图只表示出结点间的连接关系而没有表示出连接边的方向.弧立结点——图中不与任何相邻的结点称为弧立结点.零图——全由孤立结点构成的图称为零图.自回路(环)——关联于同一结点的一条边称为自回路或环.重边(平行边)——在有向图中,两结点间(包括结点自身间)若多于一条边,则称这几条边为重边或平行边.多重图——含有重边的图称为多重图.线图——非多重图称为线图.定义3.1.2(简单图)无自回路的线图称为简单图.定义3.1.3(结点的度数、最大度、最小度)图G=<V,E>中,与V中结点v(v∈V)相关联的边数,称为该结点的度数,记作为deg(v).记∆(G)= max{deg(v)| v∈V(G)},δ(G)= min{deg(v)| v∈V(G)},分别称为G=<V,E>的最大度和最小度.定义3.1.4(出度、入度、度数)在有向图中,对于任何结点v,以v为始点的边的条数称为结点v的引出次数(或出度);以v为终点的边的条数称为结点v的引入次数(或入度);结点v的引出次数和引入次数之和称为v的次数(或度数).定义3.1.5(二部图)设G=〈V,E>是n阶无向图,若能将V分成两个互不相交的子集V1与V2使得G中任一边的两端点都不在同一个V i(i=1,2)中,则称G为二部图.记G=<V1,V2,E>.定义3.1.6(完全图)简单图G=<V,E>中,若每一对结点间都有边相连,则称该图为完全图.有n个结点的无向完全图记为K n.定义3.1.7(k-正则图)若无向简单图中,每个结点的度均为某个固定整数k,则称该图为k-正则图.定义3.1.8(赋权图)赋权图G是一个三重组<V,E,g>或四重组<V,E,f,g>,其中V是结点集合,E是边的集合,f是定义在V上的函数,g是定义在E上的函数.定义3.1.9(补图)设图G=<V,E>有n个顶点,图H=<V,E’>也有同样的顶点,而E’是由n个结点的完全图的边删去E所得,则图H称为图G的补图,记为H=G,显然,G=H.定义3.1.10(子图、真子图、生成子图)设G=<V,E>和G’=<V’,E’>是两个图.(1)若V’⊆V且E’⊆E,则称G’是G的子图;(2)若V’⊂V或E’⊂E,则称G’是G的真子图;(3)若V’=V和E’⊆E,则称G’是G的生成子图;(4)若子图G’中没有孤立结点,G’由E’唯一确定,则称G’为由边集E’导出的子图;(5)若子图G’中,对V’中的任意两个结点u,v,当u,v∈V’时有[u,v]∈E’,则G’由V’唯一确定,则称G’为由结点集V’导出的子图.定义3.1.11(补图) 设G’=<V’,E’>是G=<V,E>的子图,若给定另外一个图G’’=<V’’,E’’>,使得E’’=E-E’,且V’’中仅包含E’’的边所关联的结点,则称G’’是子图G’的相对于G 的补图.定义3.1.12(同构) 设G=〈V,E>和G’=<V’,E’>是两个图,若存在从V到V’的双射函数f,使对任意[a,b]∈E,当且仅当[f(a),f (b)]∈E’,并且[a,b]和[f(a),f (b)]有相同的重数,则称G和G’是同构的.定义3.1.13(路径) 在图G=<V,E>中,设v0,v1,…,v n∈V,e1,e2,….,e n∈E,其中e i是关联于结点v i-1,v i的边,交替序列v0 e1 v1 e2…e n v n称为联结v0到v n的路径(或称路).v0与v n分别称为路的起点与终点,边的数目n称为路的长度.孤立点——长度为0的路定义为孤立点.简单路径——若序列中所有的边e1,e2,…., e n均互不相同,则称此路径为简单路径.基本路径——若序列中所有的点v0,v1,…,v n均互不相同,则称此路径是基本路径.回路——若v0=v n,即路径中的终点与始点相重合,则称此路径为回路.简单回路——没有相同边的回路称为简单回路.基本回路(圈)——各结点均互不相同的回路称为基本回路(或圈).奇圈(偶圈)——长度为奇(偶)数的圈称为奇(偶)圈.定义3.2.1(可达、连通)在图G=<V,E>中,设有结点v j与v k,若从v j到v k存在任何一条路径,则称结点v k从结点v j可达,也称结点v j与v k是连通的.定义3.2.2(连通图、非连通图、分离图)若G是平凡图或G中任意两个结点都是连通的,则称G是连通图,否则称G为非连通图或分离图.定义3.2.3(连通分支)设G=<V,E>是图,连通关系的商集为{V1,V2,…,V m},则其导出的子图G(V i)(i=1,2,…m)称为图G的连通分支(图),将图G的连通分支数记作W(G).定义3.2.4(短程线)设u与v是图G的两个结点,若u与v连通,则称u与v之间的长度最短的路为u与v之间的短程线,短程线的长度可作为结点u与v间的距离,记作d(u,v),其满足下列性质:d(u,v) ≥ 0,u=v时,d(u,v) =0 (非负性)d(u,v) = d(v,u) (对称性)d(u,v) + d(v,w) ≥d(u,w) (三角不等式)若u与v不连通,则通常记d(u,v) = ∞.定义3.2.5(单向连通、强连通、弱连通)在简单有向图中,如果在任何结点偶对中,至少从一个结点到另一个结点可达的,则称图G是单向(侧)连通的;如果在任何结点偶对中,两结点对互相可达,则称图G是强连通的;如果图的底图(在图G中略去边的方向,得到无向图)是连通的,则称图G是弱连通的.定义3.2.6(极大强连通子图、极大单向连通子图、极大弱连通子图、强分图、单向分图、弱分图) 在简单有向图G =<V ,E >中,G’是G 的子图,如G’是强连通的(单向连通的,弱连通的),且没有包含G’的更大的子图G’’是强连通的(单向连通的,弱连通的),则称G’是极大强连通子图(极大单向连通子图,极大弱连通子图)又叫强分图(单向分图,弱分图).定义3.2.7(点割集、割点) 设无向图G =<V ,E >为连通图,若有点集V 1⊂V ,使图G 删除了V 1的所有结点后,所得的子图是不连通图,而删除了V 1的任何真子集后,所得的子图是连通图,则称V 1是G 的一个点割集.若某个结点构成一个点割集,则称该结点为割点.定义3.2.8(点连通度) 若G 为无向连通图且不含Kn 为生成子图,则称k (G )=min{|V 1| ∣V 1是G 的一个点割集}为G 的点连通度(简称连通度).规定:完全图Kn 的点连通度为n ,n ≥1.非连通图的点连通度为0.若k (G ) ≥k ,则称G 为k -连通图.定义3.2.9(边割集、割边、桥) 设无向图G =<V ,E >为连通图,若有边集E 1⊂E ,使图G 删除了E 1的所有边后,所得的子图是不连通图,而删除了E 1的任何真子集后,所得的子图是连通图,则称E 1是G 的一个边割集.若某个边构成一个边割集,则称该结点为割边(或桥). 定义3.2.10(连通度) 若G 为无向连通图,则称λ(G )=min{|E 1| ∣E 1是G 的一个边割集}为G 的边连通度.规定:非连通图的边连通度为0.若λ(G ) ≥k ,则称G 为k 边-连通图.定义3.3.1(邻接矩阵) 设G =<V ,E >是一个简单图,其中V ={v 1,v 2,…, v n },则n 阶方阵A (G )=(a ij )称为G 的邻接矩阵.其中各元素⎪⎩⎪⎨⎧==ji v v v v a j i j i ij 不相邻或与相邻与01 定义3.3.2(可达性矩阵) 设G =<V ,E >是一个简单图,|V |=n ,假定G 的结点已编序,即V ={v 1,v 2,…, v n },定义一个n ⨯n 方阵P =(p ij ).其中⎪⎩⎪⎨⎧=不存在一条路与从至少存在一条路到从j i j i ij v v v v p 01 则称矩阵P 为图G 的可达性矩阵.最短路径的数学模型——给定一个网络N (有向或无向赋权图),u 0与v 0是N 中指点的两个顶点,在N 中找一条从u 0到v 0且权最小的路.规定N 中的一条路P 的权w (P )称为p 的长度.若N 中存在从u 到v 的路,则将N 中从u 到v 且权最小的路称为u 到v 的最短路,其长度称为u 到v 的距离,记为d N (u ,v ).二、定理定理3.1.1(握手定理) 设G 是一个图,其结点集合为V ,边集合为E ,则∑∈=V v E v ||2)deg(定理3.1.2 图中次数为奇数的结点有偶数个.定理3.1.3 在任何有向图中,所有的入度之和等于所有结点的出度之和.定理3.1.4 有n 个结点的无向完全图K n 的边数为n (n -1)/2.定理3.1.5 在具有n 个结点的简单图G =<V , E >中,若从结点v j 到结点v k 有一条路,则从结点v j 到结点v k 有一条长度不大于n -1的路.定理3.1.5推论在一个具有n个结点的图G=<V, E>中,如果从结点v j到结点v k有一条路,则从结点v j到结点v k必有一条长度小于n的通路.定理3.1.6在具有n个结点的图G=<V,E>中,如果经v有一条回路,则经v有一条长度不超过n的回路.定理3.1.6推论在具有n个结点的图G=<V,E>中,如果经v有一条简单回路,则经v 有一条长度不超过n的基本回路.定理3.2.1一个有向图是强连通的,当且仅当G中有一个回路,其至少包含每个结点一次.定理3.2.2在有向图G=〈V,E〉中,G的每一结点都在也只在一个强(弱)分图中.定理3.2.3在有向图G=〈V,E〉中,G的每一结点都处在一个或一个以上的单向分图中.定理3.2.4(Whitney)对于任何一个图G,有k(G) ≤λ (G) ≤δ(G)其中k(G)、λ (G)、δ(G)分别为G的点连通度、边连通度和最小度.定理3.2.5一个连通无向图G中的结点v是割点的充分必要条件是存在两个结点u与w,使得结点u与w的每一条路都通过v.三、方法1.两图同构的必要条件:(1)结点数相等;(2)边数相等;(3)度数相同的结点数相等.2.邻接矩阵运算特征(1)图G=<V,E>的邻接矩阵不唯一,而与V中的元素标定次序有关.对V中各元素不同的标定次序可得到同一图G的不同邻接矩阵.但这些邻接矩阵经过适当地交换行和列的次序,就从一个邻接矩阵变到另一个邻接矩阵.根据不同邻接矩阵所作的有向图都是同构的.因此,可选V元素的任一种标定次序所得出的邻接矩阵.(2)当有向线图代表关系时,邻接矩阵就可看作是一种关系矩阵.有向图是自反的,矩阵的对角线元素全为1.有向图是非自反的,矩阵的对角线元素全为0.有向图是对称的,对所有i和j,矩阵是对称的.有向图是反对称的,对所有i和j,矩阵是以主对角线对称的元素不可能同时为1.(3)零图的邻接矩阵的元素全为零,并称其为零矩阵.(4)图的每一顶点都有自回路而再无其它边时,图的邻接矩阵是单位矩阵.(5)设有向线图G=<V,E>的邻接矩阵是A,则A的逆图的邻接矩阵是A的转置矩阵.3.可达性矩阵的计算方法一般地,可以由图G的邻接矩阵A得到可达性矩阵P.即令B n=A+A2+…+A n,在从B n中将不为0的元素改为1,而为零的元素不变,这样改换的矩阵即为可达性矩阵P.也可以将矩阵A,A2,…,A n分别改为布尔矩阵A,A(2),…,A(n),简化计算,故P= A∨A(2)∨…∨A(n),其中A(i)表示在布尔运算下A的i次方.4.求最短路径的Dijkstra算法步骤(1)置l(u0)=0,对v∈V-{ u0},l(v)= +∞,S0 ={ u0},i=0.(2)对每个v∈ N G-Si(u i),用min{ l(v),l(u i)+ w(u i,v)}代替l(v).若l(v)取到l(u i)+w(u i,v),则在v旁边记下(u i).计算min(v∈G- S i ){ l(v)},并将达到最小值的这个顶点记为u i+1.置S i+1= S i⋃{ u i+1}.(3)若i=|G|-1,则算法停止,否则用置i 为i+1,并转入第(2)步.算法结束时,从u0到v的距离由最终的标号给出l(v),并且可根据各个顶点旁边的(u i)追回出从u0到v的最短路径.若为求某个特定的顶点v时,则可以在u j= v时使算法停止即求得结果.。