当前课程知识点:计算几何 > 07. Geometric Range Search > D. kd-Tree: Algorithm > 07-D-02. Example
为了更好的理解和把握
刚才那个算法
我们不妨将刚才那个的实例
在具体的详细的回放一遍
同样是针对这样的一个查询区间
我们虽然看不到具体的
那些输入的点
但是它们无非就是分布在
整个这个空间
也就是这个平面上
这个平面已经经过预处理
被切分成了左和右
两部分
请注意
这是在第零层根节点之下
分出来的第一层的左右两个顶点
所对应的两个子区域
它们虽然只有两个
但都足够大
足以覆盖整个平面
就像这样
正因为它们比较大
所以在一般的情况下
它们都是属于刚才的那个if else
那个分支
也就是说
它们的确都会与这个区间相交
但是又没有完全的包含在其内部
所以是属于有嫌疑
待界定的那种类型
不要紧
我们刚才的那个算法
会在这个位置上
顺着它的孩子节点
递归下去
这个区域
既没有落在R的内部
也不会与它的边界有任何的相交
准确的来讲
它完全的落在了这个R的外面
这是什么情况呢
没错
这正是我们刚才在代码上
其实看不出来的那个else
else的那个分支
对于这样的一个子区域
按照我们刚才的分析
我们完全可以什么都不做
也就是说
可以将它剪除掉
很遗憾
我们现在虽然剪除掉了一个区域
但是对于其他的这些区域而言
还需要做工作
因为从图中可以看出来
它们都是属于那种
与这个R有关系
但又不是完全的
包含在其中的那些子区域
这种类型
要继续的递归
还在我们在预处理的时候
已经做好了充分的准备
因为我们已经事先预备好了
深度为2的那一层的一系列的顶点
以及它对应的子区域
比如对于左上角的这个区域
我们会在事先已经将它分解为
左和右两部分
而且经过一次递归
我们就会发现
左侧的这部分
已经完全的落到了这个R的外面来
与刚才一样
这样的一个区域
我们也同样的可以对它进行剪除
当然
对于右侧的这个子区域
我们依然需要递归
其实在这种情况下
需要递归的还有很多
我们从图中可以看到
包括它
它它和它
不要紧
算法已经写好了
预处理已经准备好了足够的信息
我们继续深入到深度为3的那一层
在这一层
我们刚才有嫌疑的两个区域
还会被细分
这两个区域
也会被细分
这些区域
都会被进一步的细分
细分以及细分
在这个层次
我们会发现
我们可以做的工作又更多了
比如我们可以发现
有某一个子区域
已经完全落在了这个查询的范围之内
所以这个区域就可以直接的报告出来
递归可以终止
而对于进一步划分出来的这个区域
这个区域以及这个区域
我们也可以判断出
它们已经跟查询的那个范围
也就是这个R
没有任何关系了
所以在这些位置上
我们也可以进行剪枝
什么都不用做
整个这个递归会持续下去
当然如果在最底层
我们确实依然是碰到这种情况的话
按照刚才那个算法
应该是属于递归基的状态
因为这个时候
既然已经到了最底层
就意味着其中的点数不多
比如说一般的情况下
只剩下一个点
这个时候
你不妨采用蛮力的方法
直接经过一个比对
来判断它究竟是
还不是属于这个查询的范围
在这里我们也给出了
刚才那个实例的另一个插图
这个插图和前面那个插图
完全是等价的
不同的是
我们可以从树的角度
来理解刚才那个查找的过程
也就是说
我们最开始是来自于这个树根
我们在这个位置上
如果对应的话
应该是整个这个平面
接下来我们会深入到这个区域
以及这个顶点
作为整个区域
和待查找的这个范围
必然是属于那种既相交
但同时又不完全
包含在其中的那种类型
在这种情况下
我们说了我们需要递归
所以我们确实需要在根节点上递归
从而将这个问题转化为
对左边这个区域
和右边这个区域的深入的搜索
在左边的这个半平面
我们很幸运的发现
它只和它的右孩子
也就是这个节点
所对应的整个平面的左上角的
那个区域相交
而整个的左下角的那个子区域
完全的可以被剪枝掉
在右边这个部分
也就是这个点所对应的那个
右侧的半平面
很不幸
在这个位置上
不仅要经过递归
而且会发现递归出来的
也就整个平面的右上部分
和右下部分
也依然是属于那种待判
没有明确的那种类型
所以在这两个位置上
也依然需要递归
那么这里需要指出的就是
在特定的最后的一个情况
也就是
当搜索到由H和F所确定的
这样一个区域的时候
我们就会发现
它所对应的那个区域
也就是这个节点所对应的那个区域
会完全的包含在这个查询的范围之内
所以这样的一个位置
也就是
我们那样一种完整的报告出来的位置
在这个位置上
我们不需要做递归
而只需要通过遍历
花费线性的时间
把其中的点
虽然这里只有两个
悉数的报告出来就可以了
更多的细节
我们留给大家在课后
自己补充进行推敲和完成
-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