当前课程知识点:计算几何 > 08. Windowing Query > I. 2D-GRQ Using PST > 08-I-01. Algorithm (1/2)
我们刚才经过了
精心的构思和设计
终于引出了一种精妙的数据结构
priority search tree
这种结构不只是一个摆设
最关键的是要发挥作用
什么时候发挥作用呢
当然就是查询
我们这里来看一看
它的相应的查询算法
是怎么样执行的
这里给出的
就是相对应于PST这种结构的
一个grounded range search的相应的算法
这是它的形式化的描述
为了使得你更好的能够
理解这个算法的原理和过程
我建议我们一起来对照
右边的这幅动态的插图
首先跟一维的情况一样
我们也需要通过一个节点v
来指示当前递归搜索到的
这棵子树的入口
也就是那个树根
当然我们待会儿就看到
这个算法的确是递归的
接下来我们就需要来给出
这个查询的这个grounded range
既然是个grounded range
它在x方向上
只需要一个量来表示就够了
而在y方向上
因为它是一个一般的range query
所以它需要的是一对元素
两个数来描述
好 在这个图上我们来对照一下
这就是一个典型的
这样的一个场景
我们搜索到了以v为根的
这样一棵子的PST
而我们的查询的那个范围呢
也就是那个半开放的那个范围呢
是在这儿
确认一下
它的左和右
是分别由y1和y2来界定的
而它的x方向 高度上
向上是通天的
这个接地的部分
grounded
接地的那个位置
是由这个参数x来确定的
对应的是一条水平的线
所以我们的感兴趣的范围
我们的查询范围就是这样的一个
grounded rectangle
广义的一个这样的一个矩形
好 不要忘了
我们这里还有一个量
就是这个相对于这个v来说
当年在构造和划分
它的左右子树的时候
采用的那个ym
在这里我们采用的形式
我们可以认为左子树中
所有的点都不大于这个ym
而右子树中所有的这些点
比如我们一般性的来讲
都严格的大于这个ym
所以我们这里画的这个
ym这条蓝色的线
是正好穿过
这棵子树最右侧的这个部分
好 我们熟悉了这个以后
接下来我们就来
可以来读这段算法了
首先依然是安全带
我们要来判断一下
递归出口
是不是已经到了平凡的情况
如果这种情况
直接毅然的剪枝
不用做任何的处理
最好不过
否则那么这个v
就是真实存在的一个节点
所以相应的它也有它的关键码
在这里既然是二维
它有x y两套关键码
我们首先采用的是它的x
那个关键码
我们将它取出来
并且做一个比较
和谁比较呢
和 也就是刚才的那个
输入的那个x
这个grounded
那个最下边的那个底部
来做一个比较
我们来看它是否已经大于
这个底部了
这意味着什么呢
如果它大于底部
就说明它会
这个v已经落在这个x以下了
比如在那个位置
这个时候很显然
它已经落到了我们这里的
查询区域之外去了
因为不管它的y坐标是如何的
它的x坐标已经越界了
在这种情况下
当然再自然不过的就是
我们直接去做一个剪枝
因为它的x坐标很糟糕
把它剪掉
好 这是两个平凡的情况
那么一般的情况呢
当然如果我们需要
将当前的这个v报告出来
也就是接收它的话
你可以想象到
因为它x坐标已经符合条件了
所以接下来只需要
它的y坐标符合条件就可以了
所以正因为这个缘故
我们的判断式就是
v的这个y坐标
是否恰好是介于y1
也就是最左边那个边界
和y2
也就是最右边的那个边界之间
当且仅当它位于这二者之间
它才是一个合法的
需要报告的点
在这种情况下
我们才需要接收它
否则就意味着
尽管这个时候的这个v
在x方向上还是合法的
但是它的y坐标
却是非法的
在这种情况下
我们就需要将它剔除掉
当然这里的剔除的意思
就是我不去报告它就完了
我将它忽略就完了
所以你也可以看到
这里实际上隐含着
是有一个else
尽管我们没有把它
显示的写出来
好了
这里我们貌似
对于这个v来说
有两种处理结果
一个是if也就是接受
一个是else
也就是抛弃它忽略它拒绝它
但是无论哪一个分支
对于它的后代来说
其实都是无关的
因为我们刚刚讲过
虽然一个结点和它的后代之间
是通过高度
也就是x坐标来界定的
但是它们的y坐标之间
没有任何的约束
彼此是完全独立的
正因为这个缘故
我们接下来
对它的左右孩子的递归搜索
是需要独立的来进行判断的
而不取决于
刚才对它的父亲v的判断结果
那么好 我们来看
接下来怎么来判断
它的左孩子和右孩子
是否有必要去进行递归呢
-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