图论中的圈与块课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《图论中的圈与块课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中的 课件
- 资源描述:
-
1、绍兴县柯桥中学 黄劲松2023-1-9浙江省2006年集训讲义2基本概念w圈(环)w割点w割边(桥)w块w强连通子图(强连通分量(支,块)2023-1-9浙江省2006年集训讲义3圈及其相关知识wMST(最小生成树)另类算法w最小环问题2023-1-9浙江省2006年集训讲义4MST另类算法w任意构造一棵原图的生成树,然后不断的添边,并删除新生成的环上的最大边。1017253算法证明算法证明?2023-1-9浙江省2006年集训讲义5水管局长(1)w给定一张带权无向连通图,定义max(p)为路径p上的最大边,min(u,v)为连接u和v的所有路径中,max(p)的最小值。动态的做如下两个操作:
2、1:询问某两个点之间的min(u,v)2:删除一条边w你的任务是对于每个询问,输出min(u,v)的值。(WC2006)2023-1-9浙江省2006年集训讲义6水管局长(2)w数据范围约定结点个数N1000图中的边数M100000询问次数Q100000删边次数D50002023-1-9浙江省2006年集训讲义7水管局长(3)w根据kruskal算法可以知道,最小生成树上的连接两点之间的唯一路径一定是最大边最小的w那么,只要维护一棵图的最小生成树,那么就可以在O(N)的时间内回答每一个min(u,v)的询问w不断的删边然后维护最小生成树?2023-1-9浙江省2006年集训讲义8水管局长(4)
3、w通过删边的形式我们似乎很难维护一张图的最小生成树w根据刚才提到的MST的另类做法,我们反向处理它的每个操作,也就是先删除所有要删的边,然后再逆向添边并回答min(u,v)w于是该问题就可以用另类MST算法解决了2023-1-9浙江省2006年集训讲义9水管局长(5)w这里涉及到一些图与树的存储操作,如何在O(N)的时间内找到环上最大边,并维护一棵最小生成树呢?w如果采取邻接表的存储方式来记录一棵最小生成树,从添加的边的某个点开始遍历整棵树,寻找出环上的最大边,虽然理论复杂度是O(N)的,但是有很多的冗余2023-1-9浙江省2006年集训讲义10水管局长(6)w这里我们采取父亲表示法来存储一
4、棵最小生成树,如图所示:现在添加入一条红色的边AB我们根据被删边所在的位置来决定AB的定向如果被删边在B到LCA(A,B)A和B的最近公共祖先的那条路径上,则定义AB的方向为B-A,即A是B的父亲,并将被删边到B的这条路径上的所有边反向(同理可得被删边在A到LCA(A,B)的那条路径上的情况)AB2023-1-9浙江省2006年集训讲义11小H的聚会(1)w给定每个节点的度限制,求在满足所有度限制的条件下的最大生成树。(NOI2005)w这是一道提交答案式的题目,对于后面的几个较大的数据,用另类MST算法对你的解进行调整也能取得不错的效果!2023-1-9浙江省2006年集训讲义12最小环问题
5、w虽然涉及到要求最小环的题目并不多(Ural1004 Sightseeing trip),但是下面介绍的一些求最小环的算法也会对你有一定的启示意义有向带权图的最小环问题(直接用floyd算法可解)无向带权图的最小环问题2023-1-9浙江省2006年集训讲义13朴素算法w令e(u,v)表示u和v之间的连边,再令min(u,v)表示,删除u和v之间的连边之后,u和v之间的最短路w最小环则是min(u,v)+e(u,v)w时间复杂度是EV22023-1-9浙江省2006年集训讲义14一个错误的算法w预处理出任意两点之间的最短路径,记作min(u,v)w枚举三个点w,u,v,最小环则是min(u,w
6、)+min(w,v)+e(u,v)的最小值w如果考虑min(u,w)包含边u-v的情况?w讨论:是否有解决的方法?2023-1-9浙江省2006年集训讲义15改进算法w在floyd的同时,顺便算出最小环gij=i,j之间的边长dist:=g;for k:=1 to n dobegin for i:=1 to k-1 do for j:=i+1 to k-1 do answer:=min(answer,distij+gik+gkj);for i:=1 to n do for j:=1 to n do distij:=min(distij,distik+distkj);end;算法证明?2023-
7、1-9浙江省2006年集训讲义16块及其相关知识wDFS算法w割点(一般对于无向图而言)w割边(一般对于无向图而言)w块(一般对于无向图而言)w强连通子图(一般对于有向图而言)2023-1-9浙江省2006年集训讲义17DFS算法w1973年,Hopcroft和Tarjan设计了一个有效的DFS算法wPROCEDURE DFS(v);wbeginwinc(sign);wdfnv:=sign;/给v按照访问顺序的先后标号为signwfor 寻找一个v的相邻节点uwif 边uv没有被标记过 thenwbeginw 标记边uv;w给边定向vu;w 如果u被标记过,记uv为父子边,否则记uv为返祖边w
8、if u未被标记 then DFS(u);wend;wend;2023-1-9浙江省2006年集训讲义18DFS算法w父子边用黑色标记,返祖边用红色标记w如下图,除掉返祖边之后,我们可以把它看作一棵DFS树12345672023-1-9浙江省2006年集训讲义19割点wG是连通图,vV(G),G v 不再连通,则称v是G的割顶。2023-1-9浙江省2006年集训讲义20求割点的算法w我们通过DFS把无向图定向成有向图,定义每个顶的一个lowlink参数,lowlinkv表示沿v出发的有向轨能够到达的点u中,dfnu的值的最小值。(经过返祖边后则停止)1.12.13.24.25.26.17.7
9、2023-1-9浙江省2006年集训讲义21三个定理w定理1:DFS中,e=ab是返祖边,那么要么a是b的祖先,要么a是b的后代子孙。w定理2:DFS中,e=uv是父子边,且dfnu1,lowlinkvdfnu,则u是割点。w定理3:DFS的根r是割点的充要条件是:至少有2条以r为尾(从r出发)的父子边证明?证明?证明?2023-1-9浙江省2006年集训讲义22程序代码wPROCEDURE DFS(v);wbeginwinc(sign);dfnv:=sign;/给v按照访问顺序的先后标号为signwlowlinkv:=sign;/给lowlinkv赋初始值wfor 寻找一个v的相邻节点uwi
10、f 边uv没有被标记过 thenwbeginw标记边uv;w给边定向vu;wif u未被标记过 thenwbeginwDFS(u);/uv是父子边,递归访问wlowlinkv:=min(lowlinkv,lowlinku);wif lowlinku=dfnv then v是割点是割点 wendwelselowlinkv:=min(lowlinkv,dfnu);/uv是返祖边end;wend;2023-1-9浙江省2006年集训讲义23割边wG是连通图,eE(G),G e 不再连通,则称e是G的割边,亦称做桥。2023-1-9浙江省2006年集训讲义24求割边的算法w与割点类似的,我们定义low
11、link和dfn。父子边e=uv,当且仅当lowlinkv dfnu的时候,e是割边。w我们可以根据割点算法的证明类似的证明割边算法的正确性。2023-1-9浙江省2006年集训讲义25程序代码wPROCEDURE DFS(v);wbeginwinc(sign);dfnv:=sign;/给v按照访问顺序的先后标号为signwlowlinkv:=sign;/给lowlinkv赋初始值wfor 寻找一个v的相邻节点uwif 边uv没有被标记过 thenwbeginw标记边uv;w给边定向vu;wif u未被标记过 thenwbeginwDFS(u);/uv是父子边,递归访问wlowlinkv:=m
12、in(lowlinkv,lowlinku);wif lowlinku dfnv then vu是割边是割边 wendwelselowlinkv:=min(lowlinkv,dfnu);/uv是返祖边wend;wend;2023-1-9浙江省2006年集训讲义26割点与割边w猜想:两个割点之间的边是否是割边?割边的两个端点是否是割点?w都错!2023-1-9浙江省2006年集训讲义27嗅探器(1)w在无向图中寻找出所有的满足下面条件的点:割掉这个点之后,能够使得一开始给定的两个点a和b不连通,割掉的点不能是a或者b。(ZJOI2004)ab2023-1-9浙江省2006年集训讲义28嗅探器(2)
13、w数据范围约定结点个数N100边数MN*(N-1)/22023-1-9浙江省2006年集训讲义29嗅探器(3)w朴素算法:w枚举每个点,删除它,然后判断a和b是否连通,时间复杂度O(NM)w如果数据范围扩大,该算法就失败了!2023-1-9浙江省2006年集训讲义30嗅探器(4)w题目要求的点一定是图中的割点,但是图中的割点不一定题目要求的点。如上图中的蓝色点,它虽然是图中的割点,但是割掉它之后却不能使a和b不连通w由于a点肯定不是我们所求的点,所以可以以a为根开始DFS遍历整张图。w对于生成的DFS树,如果点v是割点,如果以他为根的子树中存在点b,那么该点是问题所求的点。2023-1-9浙江
14、省2006年集训讲义31嗅探器(5)w时间复杂度是O(M)的w如图,蓝色的点表示问题的答案,黄色的点虽然是图的割点,但却不是问题要求的答案ab2023-1-9浙江省2006年集训讲义32关键网线(1)w无向连通图中,某些点具有A属性,某些点具有B属性。请问哪些边割掉之后能够使得某个连通区域内没有A属性的点或者没有B属性的点。(CEOI2005)w数据范围约定结点个数N100000边数M10000002023-1-9浙江省2006年集训讲义33关键网线(2)w朴素算法:w枚举每条边,删除它,然后判断是否有独立出来的连通区域内没有A属性或者没有B属性。复杂度O(M2)w当然,这个复杂度太大了!20
15、23-1-9浙江省2006年集训讲义34关键网线(3)w正如嗅探器一样,题目要求的边一定是原图中的割边,但是原图中的割边却不一定是题目中要求的边。w设A种属性总共有SUMA个,B中属性总共有SUMB个。和嗅探器类似的,如果边e=uv是割边,且以v为根的子树中,A种属性的数目为0或者为SUMA,或者B种属性的数目为0或者为SUMB,那么e就是题目要求的边。2023-1-9浙江省2006年集训讲义35关键网线(4)w下图中,蓝色的边表示题目要求的边,黄色的边表示虽然是图中的割边,但不是题目要求的边。ABAAAAAAABB2023-1-9浙江省2006年集训讲义36块w没有割点的图叫2-连通图,亦称
16、做块,G中成块的极大子图叫做G的块。把每个块收缩成一个点,就得到一棵树,它的边就是桥。2023-1-9浙江省2006年集训讲义37求块的算法w在求割点的算法中,当结点u的所有邻边都被访问过之后,如果lowlinku=dfnu,我们把u下方的整块和u导出作为图中的一个块。w这里需要用一个栈来表示哪些元素是u代表的块。2023-1-9浙江省2006年集训讲义38程序代码wPROCEDURE DFS(v);wbeginwinc(sign);dfnv:=sign;/给v按照访问顺序的先后标号为signwlowlinkv:=sign;/给lowlinkv赋初始值winc(tot);stacktot:=v
17、;/v点进栈wfor 寻找一个v的相邻节点uwif 边uv没有被标记过 thenwbeginw标记边uv;w给边定向vu;wif u未被标记过 thenwbeginwDFS(u);/uv是父子边,递归访问2023-1-9浙江省2006年集训讲义39程序代码wlowlinkv:=min(lowlinkv,lowlinku);wendwelselowlinkv:=min(lowlinkv,dfnu);/uv是返祖边wend;wif lowlinkv=dfnv thenwbeginw块数目number+1;wrepeatw标记stacktot这个点为number;wdec(tot);/点出栈wunt
18、il stacktot+1=v;wend;wend;2023-1-9浙江省2006年集训讲义40新修公路(1)w给出一张简单无向图,问最少添加几条边能够使得原图中没有割边。(CEOI2000)w数据范围约定结点个数N2500边数M200002023-1-9浙江省2006年集训讲义41新修公路(2)w为了简化数据关系,我们先将原图收缩,变成一棵树,容易知道的是,剩下的任务就是添最少的边,使得树成为一个块。(树中的两个结点之间连边相当于原图中两个块中分别任意取点连在一起)w猜想猜想:每添一条边,就选择树中的两个叶子结点,将它们连起来,于是最少的添边数目就是(叶子结点个数+1)/22023-1-9浙
19、江省2006年集训讲义42新修公路(3)w如图所示,点代表了原图中的一个块,它们之间的连边是割边。连接a与c,b与d之后,图中就没有割边了。abcd2023-1-9浙江省2006年集训讲义43新修公路(4)w但并不是任意连接两个叶子结点就可以达到目标。假如连接了a与b,c与d,原图并没有变成一个块。abcd2023-1-9浙江省2006年集训讲义44新修公路(5)w进一步分析刚才的算法,每次连接两个叶子结点之后,把新生成的圈压缩成为一个点,以前和圈上的点关联的点,都和新生成的这个“压缩点”相关联。于是原来的树在添加一条边之后,又变回了一棵树。2023-1-9浙江省2006年集训讲义45新修公路
展开阅读全文