算法设计与分析(十).ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与分析(十)

扫除线的数据结构定义 扫除线一般要维护下列两组数据: 1)扫除线状态(sweep-line status):即与扫除线相交的物体之间的关系; 2)事件点(event-point schedule):是一个从左向右的x坐标的排列,这些x坐标记录了扫除线状态发生变化的位置。 e f g h i w z v o 在本问题中,每条线段的端点都是事件点,因为当扫除线进入(离开)任何端点处,都将引起扫除线状态的改变。而这,通过增加x坐标,从左向右对线段的端点进行排序即可得线段问题的所有事件点。 如果两个或多个端点位于同一条垂直线上,若y坐标不同,则有坐标小的排在前面,若y坐标也相同(即相交于同一点),则看另一端点的x坐标,小的放在前面。 a b c d e f a b a b db c d c d c e e h f h f 基于上述定义,根据事件点调度序列检查线段。 当扫除线遇到线段的左端点时,就把该线段插入到扫除线状态中; 当扫除线遇到线段的右端点时,就把它从扫除线状态中删去; 当两条线段在全序中第一次变为连续(连续排列在一起)时,就检查它们是否相交(注:非连续排列在一起的线段是不会相交的)。 扫除线状态是一个全序T,定义T上的操作如下: INSERT(T,s):把线段s插入T中; DELETE(T,s):把线段s从T中删除; ABOVE(T,s):返回T中紧靠线段s上面的线段; BELOW(T,s):返回T中紧靠线段s下面的线段。 输入n条线段,运用红黑树,可以在O(logn)的时间内执行上述操作。 判断线段集合中线段相交的过程 ANY-SEGMENTS-INTERSECT(S) //S为n个线段的集合,如果找到S中任一对线段相交就返回TRUE;否则,若S中没有任何线段相交,则返回FALSE。全序T由一棵红黑树实现。// T←Φ sort the endpoints of the segments in S from left to right,breaking ties by puting left endpoint before right endpoints and breaking further ties by putting points with lower y-coordinates first for each point p in the sorted list of endpoints do if p is the left endpoint of a segment s then INSERT(T,s) if(ABOVE(T,s) exists and intersects s) or (BELOW(T,s) exists and intersects s) then return TRUE endif if p is the right endpoint of a segment s then if(both ABOVE(T,s) and BELOW(T,s) exists and ABOVE(T,s) intersects BELOW(T,s) then return TRUE DELETE(T,s) endif endfor return FALSE END ANY-SEGMENTS-INTERSECT a b c d e f a b a b db c d c d c e e h f h f 例: a b c d e f a a b a c b da c b d c b e d c b e d b time ANY-SEGMENTS-INTERSECT的执行过程。每条虚线都是一个事件点处的扫除线,每条扫除线下的线段名排序为for循环结束时的全序T,在该循环中,要对各对应的事件点进行处理。当线段c被删除时,即可发现线段d和b相交。 10.3 凸包问题 1.关于多边形的概念 1)多边形:是平面上一组首尾相连的折线段所构成的封闭曲线称为多边形。 2)边:构成多边形的折线段称为多边形的边。 3)顶点:连接两条连续边的点称为顶点。 。 边 顶点 4)简单多边形:内部没有交叉的多边形称为

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档