收藏 分享(赏)

2.古楠《平面嵌入》.ppt

上传人:11xg27ws 文档编号:5851794 上传时间:2019-03-19 格式:PPT 页数:31 大小:712.50KB
下载 相关 举报
2.古楠《平面嵌入》.ppt_第1页
第1页 / 共31页
2.古楠《平面嵌入》.ppt_第2页
第2页 / 共31页
2.古楠《平面嵌入》.ppt_第3页
第3页 / 共31页
2.古楠《平面嵌入》.ppt_第4页
第4页 / 共31页
2.古楠《平面嵌入》.ppt_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、平面嵌入,四川省绵阳南山中学 古楠,应用,算法在实际中的重要应用是电路板设计.,平面嵌入的目的不过是让所有的边都不相交!,目的,3,相关定义:,平面嵌入: 在平面内将一张图转化为所有边都不相交(除开段点处相交)的图的过程. 平面图: 能够进行平面嵌入的图.,对于一张n个节点的图算法的目的:,算法可以用O(n)的时间判断一张图是不是平面图并且实现平面嵌入,但由于时间的关系,我这里只介绍O(n2)的算法.,定义,深度优先遍历,首先对图进行一次深度优先遍历. 然后每个点将拥有属于它的边.将这些边做这样的定义:,树边:在深度优先搜索树中,节点与它儿子相连的边. 回落边:节点与它非儿子后裔相连的边.,平

2、面图的边不会超过3n-5条.,定理,简略流程,建立一张空图GP,然后进行深度优先遍历,完成后按照逆向深度优先搜索序处理所有节点:,把节点的树边加入图GP中.,向下遍历, 同时将节点的回落边加入到图GP中 walkdown.,v2,加入树边,当处理节点v的时候,会首先加入节点v的树边,不过在加入树边的时候得做一个分离操作:,v1,c1,c2,v,将v1和v2称做它们所在的连通分量的根. 将v1和v2所在的分量称作v的子块.,Walkdown 向下遍历(1),向下遍历 回落边的加入过程,在处理节点v的时候,会进入它的每个子块进行顺时针和逆时针两次遍历,当回到连通分量的根节点或者遭遇终止节点时就会停

3、止遍历.,终止节点:是外部活跃节点但不是相关节点的节点.,外部活跃与相关,设当前处理节点为v, 对于原有节点,定义如下:,外部活跃节点:,与v的祖先有连接的节点 子块中有外部活跃节点的节点,相关节点:,与v有连接的节点 子块中有相关节点的节点,外部活跃与相关,u,v,v,s,w,s,w,k,e,在这张图中,当前处理节点为v,k,s为外部活跃节点,e,w为相关节点.,Walkdown 向下遍历(2),由于终止节点的存在,随机的遍历会很快遭遇终止节点而终止遍历,这将导致需要加入的边没有加入到图GP中.所以在遍历的时候有一个原则.,尽量晚的终止遍历.,有两个法则来约束遍历,从而维护这个原则.,Wal

4、kdown 向下遍历(2),法则1:,当节点有多个子块需要遍历的时候,总是先进入没有外部活跃节点的子块进行遍历.,法则2:,每次进入子块进行遍历都优先选择是走向只具有相关性节点方向,否则选择走向具有相关性的节点的方向.,Walkdown 向下遍历(2),节点是相关节点,那么加入回落边.,在满足两个法则的情况下,向下遍历时,会依次处理下面几种情况:,遇到终止节点或者块的根时,终止遍历.,节点有包含相关节点的子块,到它子块中继续遍历.,节点不是外部活跃节点,走向下一节点.,当加入回落边的以后,会将该边所连接的两个块和它们之间的块全部合并.它和分离是对应的.节点所在块与子块合并后也不再拥有该子块.,

5、分离是在加入树边的时候.,Walkdown 向下遍历(2),合并是在加入回落边以后.,翻转操作,为了将所有的回落边都顺利的加入图GP 中,图GP 必须始终满足一个性质. 这个性质就是:,外部活跃节点都必须留在外部面上.,翻转操作,我们把接触最外层空间的面,叫做外部面.(图中黄线标出的面),翻转操作,为了将所有的回落边都顺利的加入图GP 中,图GP 必须始终满足一个性质. 这个性质就是:,外部活跃节点都必须留在外部面上.,加入回落边的时候会覆盖向下遍历时经过的面,这可能导致外部活跃节点被覆盖,为了保证图GP的性质.定义一个翻转操作.,翻转操作,u,v,v,s1,Walkdown 向下遍历(3),

6、u,v,w,k,v,w,k,s2,e,e,s,信息取得,算法需要有快速取得外部活跃信息和相关信息的方法.,对于外部活跃信息可以通过预处理和以后的维护来快速取得. 对于相关节点,可以在向下遍历时查找取得.O(n)的算法有另一种取得方式(请参考论文).,接下来我们具体介绍外部活跃信息的取得.,外部活跃信息的取得,快速的取得外部活跃信息外部活跃信息.给每个节点配备一个lowpoint,表示它能直接或者间接到达的最早祖先,间接是指通过它的子孙到达.可以通过开始的深度优先搜索取得所有节点的lowpoint.,外部活跃信息的取得,给每个节点配备一个SDlist,其中记录它的所有儿子,并且是按照他们的low

7、point从小到大排序的.,维护SDlist:,在节点所在块与其子块合并后,将该儿子在该节点的SDlist中的值删除.,外部活跃信息的取得,快速的得到外部活跃信息:,节点连接的最早祖先或者SDlist中的第一个值小于v,该节点就是外部活跃节点.,虚边,在上面的图中,s到w部分以后都是不会用到的.加入边(v,w)覆盖它.,v,s,w,总览,总体流程:,取得相关信息.,按照反向深度优先搜索序依次处理每个节点.,将节点所有的树边加入图GP中.,进入v的每个子块向下遍历.,分离操作,合并操作 翻转操作,总结,复杂的问题总是能够简化的.只要我们不畏困难,勇敢攀登,它们一定都能解决.我们也不可能学完所有的

8、算法,但是只有不断的汲取,才能提高和完善自己.,谢谢!,快速翻转,当进入子块进行遍历会从新选择方向,当选择方向与原有方向不同时,就需要进行翻转操作.,对外部面O(1)的翻转:,只需要交换块根节点的两个方向的指示.,在以后的遍历中,只需要知道由哪一个节点到达,并且走向下一节点.,快速翻转,对邻接表的翻转:,对于节点的子块,如果翻转,将该节点与子块中唯一的儿子相连的树边标记为-1.,最后对图只经过树边进行一次深搜,当到达节点经过了奇数个-1,就将节点的邻接表前后颠倒.,相关信息的取得,walkup 向上遍历:,存在回落边(v,w),从w开始沿着外部面向上遍历到v.并且给每个节点配备一个proots,表示它有哪些块包含相关节点.,从外部面的两个方向同时遍历.,遇到遍历过的点就停止遍历.,在从节点的子块上升到该节点时,将该子块加入到节点的proots中.,相关信息的取得,在向proots中加入子块的时候.为了保证法则1,进行这样的操作:,不包含外部活跃节点的块所包含的节点lowpoint一定小于v的深度.所以将所包含的lowpoint都小于v的深度的子块加入节点的proots表头,否则加入表尾.,然后按顺序处理节点的proots.,相关信息的取得,v,v,s,s1,w,s2,k,w,s,k,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报