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

算法设计与分析(十)

扫除线的数据结构定义 扫除线一般要维护下列两组数据: 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)

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档