当前课程知识点:计算几何 > 08. Windowing Query > I. 2D-GRQ Using PST > 08-I-02. Algorithm (2/2)
那么好
我们来看
接下来怎么来判断
它的左孩子和右孩子
是否有必要去进行递归呢
我们来看判断的条件就是
比如对于左孩子来说
我们要取出这个range的
左边界y1
然后和刚才的那个
预先划分的时候
采用的那个ym
来进行一个比较
如果y1还不大于这个median
我们就需要对左孩子进行递归
请注意这是一个充要条件
按照刚才的这个表述
只要左边界y1不大于ym
就像现在这种情况这样
那么左子堆就有必要
进行递归搜索
你能够从这个图中
读出这个必要条件吗
如果你还不能读出
我们不妨颠倒过来来看一下
在什么情况下
它会去执行那个
实际上什么都不做的else分支
也就是剪枝
既然这里是不大于
反过来那就是应该大于
所以在那种情况下
应该与这里画的这个情况相反
也就是y1并不是在ym的左侧
而恰恰相反
y1是在ym的右侧
二者颠倒了一个界限
为了做到这一点
我们有两种等效的方法
要么将这个query range向右移
使得它的左边界
能够移过这条蓝色线
或者反过来等效的
将这个整个这个L subtree
向左侧移
从而整体的移到这个range的
左边界的左侧
二者都一样的
好 无论是怎么移
它们的相对位置
都是y1会跑到ym的右边去
在那种情况下你应该看得很清楚了
那个时候说明
整个这个tree
在横向上都完全的落在了
这个range的外面
准确的讲是左边
好 既然它位于左边
或者说位于外边
当然这个tree
也就没有任何继续搜索的价值了
所有的搜索
如果要做的话
都注定是徒劳的
好
如果理解了这一条的话
我们现在再来理解
针对右子树的那个判断条件
就很自然了
完全是将刚才的那个话
对称的再表述一次
从算法上从程序上讲都是如此
刚才我们看到的是y1
要不超过ym
所以反过来y2呢
就必须严格的超过ym
这个图所画的
就是这样一个需要继续递归的情况
我们来确认一下
在这种情况下ym
也就是那个切分点
是小于y2
也就是这个区域的右端点的
所以的话呢
这个右子树就有可能
会和这个区域有染
它有嫌疑
所以这种情况下
我们的确需要对它进行
递归的搜索
好 对于这样的一个推理
如果你还不是很理解的话
我们不妨跟刚才一样
颠倒过来
从它的等效的角度来做一个理解
我们来看看什么时候
它会执行对应的这个隐式的
其实并不会执行的else
剪枝
当然条件刚才是ym要小于y2
所以现在反过来ym
也就是在这个图中
我们刚才说的这个median
就不能像这样
位于y2的左侧
而应该位于它的右侧
同样的这里有两个等效的方法
要么我们将这个range
随同这个y2往左移
以至于移到ym的严格的左边
要么当然将这个ym向右移
以至于整个的移到
这个range的右边界
y2的右边去
无论如何你都会发现在那个时候
这个右子树会严格的位于
这个range的右侧
或者说在它的外边
这是最重要的
所以在这种情况下
对它的搜索
也将变得没有任何的意义
是徒劳的
所以在这个地方做剪枝
也是再恰当不过的了
在我们接下来
要对这个算法的复杂度
做界定之前
我们不妨来约定一下
这样一些记号
也就是说我们要对刚才的
所有这些情况
分别用不同的颜色
将对应的那个结点
染上标记
我们看到这里
确实只有四种情况
第一种情况也就是
刚才我们说的
一进来就因为一个非法的x
被剪枝的情况
要么它是空的
要么它落在很下边
从而非法
在这种情况下
我们将这种结点
或者这一类结点
都染成绿色
记住
好 接下来反过来有些结点
将会被经过判断之后
像这个某一个V
经过了判断之后
它会被接收 被输出
或者被存起来
好 这种结点我们染成红色
还有第三类结点
也就是刚才说的
我虽然经过了这样的一个判断
但是我最终还是将它给拒绝掉了
因为就像这个结点一样
它的x坐标虽然是合法的
但是它的y坐标
却落在了区间的外面 是非法的
它因为这种情况被剪枝掉的
我们将它标记为蓝色
剩下的所有的点
也就是在刚才的那一下
整体的作为一个界外的左子树
或者整体的作为一个
右侧界外的右子树
被剪枝掉的
所有的那些后代们
子树
我们将它们里头的结点的颜色
都染成黄色
好 记住这四种颜色
绿色 红色 蓝色和黄色
-Before we start
--html
-Evaluation
--html
-Online Judge
--html
-Lecture notes
--html
-Discussion
--html
-A. History of This Course
--00-A. History of This Course
-B. What's Computational Geometry
--00-B. What's Computational Geometry
-B. What's Computational Geometry--作业
-C. How to Learn CG Better
--00-C. How to Learn CG Better
-C. How to Learn CG Better--作业
-D. Why English
-A. Convexity
-A. Convexity--作业
-B. Extreme Points
-B. Extreme Points--作业
-C. Extreme Edges
-C. Extreme Edges--作业
-D. Incremental Construction
--01-D-01. Decrease and Conquer
--01-D-02. In-Convex-Polygon Test
--01-D-03. Why Not Binary Search
-D. Incremental Construction--作业
-E. Jarvis March
--01-E-06. Lowest-Then-Leftmost
-E. Jarvis March--作业
-F. Lower Bound
--01-F-02. CAO Chong's Methodology
-F. Lower Bound--作业
-G. Graham Scan: Algorithm
-G. Graham Scan: Algorithm--作业
-H. Graham Scan: Example
-H. Graham Scan: Example--作业
-I. Graham Scan: Correctness
-I. Graham Scan: Correctness--作业
-J. Graham Scan: Analysis
-J. Graham Scan: Analysis--作业
-K. Divide-And-Conquer (1)
-K. Divide-And-Conquer (1)--作业
-L. Divide-And-Conquer (2)
--01-L-03. Topmost + Bottommost ?
--01-L-07. More Considerations
-L. Divide-And-Conquer (2)--作业
-M. Wrap-Up
-0. Introduction
-0. Introduction--作业
-A. Preliminary
-A. Preliminary--作业
-B. Interval Intersection Detection
-B. Interval Intersection Detection--作业
-C. Segment Intersection Reporting
-C. Segment Intersection Reporting--作业
-D. BO Algorithm: Strategy
--02-D-01. Proximity & Separability
--02-D-02. Comparability & Ordering
-D. BO Algorithm: Strategy--作业
-E. BO Algorithm: Implementation
--02-E-03. Events & Operations
-E. BO Algorithm: Implementation--作业
-F. BO Algorithm: Analysis
--02-F-04. Complexity of Event Queue
--02-F-05. Complexity of Status Structure
-F. BO Algorithm: Analysis--作业
-G. Convex Polygon Intersection Detection
--02-G-01. Problem Specification
--02-G-02. Monotone Partitioning
--02-G-04. Decrease-And-Conquer
-G. Convex Polygon Intersection Detection--作业
-H. Edge Chasing
--02-H-01. Eliminating Sickles
-H. Edge Chasing--作业
-I. Plane Sweeping
-I. Plane Sweeping--作业
-J. Halfplane Intersection Construction
-J. Halfplane Intersection Construction--作业
-0. Methodology
-0. Methodology--作业
-A. Art Gallery Problem
--03-A-02. Lower & Upper Bounds
--03-A-04. Approximation & Classification
-A. Art Gallery Problem--作业
-B. Art Gallery Theorem
--03-B-01. Necessity of floor(n/3)
--03-B-02. Sufficiency by Fan Decomposition
-B. Art Gallery Theorem--作业
-C. Fisk's Proof
--03-C-04. Pigeon-Hole Principle
-C. Fisk's Proof--作业
-D. Orthogonal Polygons
--03-D-01. Necessity of floor(n/4)
--03-D-02. Sufficiency by Convex Quadrilateralization
-D. Orthogonal Polygons--作业
-E. Triangulation
-E. Triangulation--作业
-F. Triangulating Monotone Polygons
--03-F-02. Monotonicity Testing
--03-F-04. Stack-Chain Consistency
-F. Triangulating Monotone Polygons--作业
-G. Monotone Decomposition
-G. Monotone Decomposition--作业
-I. Tetrahedralization
--03-I-01. Polyhedron Decomposition
--03-I-02. Schonhardt's Polyhedron
-I. Tetrahedralization--作业
-A. Introduction
--04-A-02. Dining Halls on Campus
--04-A-03. More Analogies & Applications
-A. Introduction--作业
-B. Terminologies
--04-B-02. Intersecting Halfspaces
--04-B-04. Planar Voronoi Diagram
-B. Terminologies--作业
-C. Properties
--04-C-03. Nearest = Concyclic
--04-C-04. Number of Nearest Sites = Degree
-C. Properties--作业
-D. Complexity
-D. Complexity--作业
-E. Representation
-E. Representation--作业
-F. DCEL
-F. DCEL--作业
-G. Hardness
--04-G-03. Voronoi Diagram In General Position
-G. Hardness--作业
-H. Sorted Sets
--04-H-01. Convex Hull Made Easier
--04-H-02. Convex Hull As A Combinatorial Structure
--04-H-03. Voronoi Diagram As A Geometric Structure
-H. Sorted Sets--作业
-I. VD_sorted
--04-I-06. Sorting Not Made Easier
-I. VD_sorted--作业
-J. Naive Construction
-J. Naive Construction--作业
-K. Incremental Construction
-K. Incremental Construction--作业
-L. Divide-And-Conquer
--04-L-09. Intersecting with Cells
-L. Divide-And-Conquer--作业
-M. Plane-Sweep
--04-M-09. Circle Event: What, When & Where
-M. Plane-Sweep--作业
-A. Point Set Triangulation
-A. Point Set Triangulation--作业
-B. Delaunay Triangulation
-B. Delaunay Triangulation--作业
-C. Properties
-C. Properties--作业
-D. Proximity Graph
--05-D-02. Relative Neighborhood Graph
-D. Proximity Graph--作业
-E. Euclidean Minimum Spanning Tree
-E. Euclidean Minimum Spanning Tree--作业
-F. Euclidean Traveling Salesman Problem
-G. Minimum Weighted Triangulation
-G. Minimum Weighted Triangulation--作业
-H. Construction
--05-H-03. Maximizing The Minimum Angle
--05-H-04. Evolution By Edge Flipping
-H. Construction--作业
-I. RIC With Example
-I. RIC With Example--作业
-J. Randomized Incremental Construction
--05-J-01. Recursive Implementation
--05-J-02. Iterative Implementation
-J. Randomized Incremental Construction--作业
-K. RIC Analysis
--05-K-04. Types Of Edge Change
--05-K-05. Number Of Edge Changes
--05-K-07. Number Of Rebucketings
--05-K-08. Probability For Rebucketing
--05-K-10. Further Consideration
-0. Online/Offline Algorithms
--06-0. Online/Offline Algorithms
-0. Online/Offline Algorithms--作业
-A. Introduction
--06-A-03. Assumptions For Clarity
--06-A-05. Performance Measurements
-A. Introduction--作业
-B. Slab Method
--06-B-02. Ordering Trapezoids
-B. Slab Method--作业
-C. Persistence
--06-C-01. Ephemeral Structure
--06-C-02. Persistent Structure
-C. Persistence--作业
-D. Path Copying
--06-D-03. Storage Optimization
-D. Path Copying--作业
-E. Node Copying
-E. Node Copying--作业
-F. Limited Node Copying
-G. Kirkpatrick Structure
--06-G-01. Optimal And Simpler
--06-G-06. The More The Better
--06-G-07. The Fewer The Better
--06-G-09. Existence Of Independent Subset
--06-G-10. Construction Of Independent Subset
-G. Kirkpatrick Structure--作业
-H. Trapezoidal Map
--06-H-03. Properties & Complexity
--06-H-04. Search Structure: Example
--06-H-05. Search Structure: Nodes
--06-H-06. Search Structure: Performance
-H. Trapezoidal Map--作业
-I. Constructing Trapezoidal Map
--06-I-04. Case 1: Two Endpoints
--06-I-05. Case 2: One Endpoint
--06-I-06. Case 3: No Endpoints
-J. Performance Of Trapezoidal Map
--06-J-03. Number Of Ray Trimmed
--06-J-04. Number Of Trapezoidals Created (1)
--06-J-05. Number Of Trapezoidals Created (2)
--06-J-06. Time For Point Location
--06-J-07. Size Of Search Structure
--06-J-08. Fixed Query Point + Randomly Created Maps
--06-J-10. Probability Of Enclosing Trapezoid Changed
-A. Range Query
--07-A-01. 1-Dimensional Range Query
-A. Range Query--作业
-B. BBST
--07-B-02. Lowest Common Ancestor
-B. BBST--作业
-C. kd-Tree: Structure
-C. kd-Tree: Structure--作业
-D. kd-Tree: Algorithm
-D. kd-Tree: Algorithm--作业
-E. kd-Tree: Performance
--07-E-01. Preprocessing Time + Storage
-E. kd-Tree: Performance--作业
-F. Range Tree: Structure
--07-F-03. x-Query * y-Queries
-F. Range Tree: Structure--作业
-G. Range Tree: Query
-G. Range Tree: Query--作业
-H. Range Tree: Performance
-H. Range Tree: Performance--作业
-I. Range Tree: Optimization
--07-I-04. Fractional Cascading
-A. Orthogonal Windowing Query
-A. Orthogonal Windowing Query--作业
-B. Stabbing Query
-C. Interval Tree: Construction
-C. Interval Tree: Construction--作业
-D. Interval Tree: Query
-D. Interval Tree: Query--作业
-E. Stabbing With A Segment
--08-E-03. Query Algorithm (1)
--08-E-04. Query Algorithm (2)
-F. Grounded Range Query
--08-F-03. 1D-GRQ Using Range Tree
--08-F-04. 1D-GRQ By Linear Scan
-G. 1D-GRQ Using Heap
-G. 1D-GRQ Using Heap--作业
-H. Priority Search Tree
--08-H-03. Sibling Partitioning
-H. Priority Search Tree--作业
-I. 2D-GRQ Using PST
-I. 2D-GRQ Using PST--作业
-J. Segment Tree
--08-J-01. General Windowing Query
--08-J-02. Elementary Interval
--08-J-06. Solving Stabbing Query
--08-J-11. Constructing A Segment Tree
--08-J-12. Inserting A Segment (1)
--08-J-13. Inserting A Segment (2)
--08-J-14. Inserting A Segment (3)
-K. Vertical Segment Stabbing Query