当前课程知识点:计算几何 > 07. Geometric Range Search > H. Range Tree: Performance > 07-H-01. Storage
刚才我们已经介绍了
利用多层搜索树
来顺利的回答二维
甚至高维的空间中的range query问题
我们已经看到了
这个算法确实是可行的
而且我们大致也感受到了
它确实有这种可能
能够使得效率
至少相对原来的kd树
有很大的提高
因为它运用了一种
普遍大家都用到的策略
也就是该粗的地方就可以粗
只有有必要细的地方
才去细致化处理
那么
准确的讲
它的复杂度是多少
我们马上就会看到
这其中最最重要的那个核心的
query time
可以做到(logn)^d
在d维空间是如此
我们首先来考察
就是这种方法所需要占用的空间量
也就是所谓的空间复杂度
消耗在哪
我们知道这个算法
所依赖的数据结构
无非就是刚才那样一个
多层的搜索树
它首先是一棵x-tree
还有一系列的y-tree
仅此而已
对于x-tree来说
非常的简明
我们前面分析过
它存储的数据量是n
所以它的空间复杂度
也自然的就是O(n)
现在比较讨厌的是y
其实我们发现
y有很多
刚才我们讲过y本身就有多达n棵
这么多棵y树
虽然可能有的大
有的小
有的多有的少
但是总的点数
每一个都是要花一个空间的
总共点数是多少
这个是一个问题
你不妨先暂停一下
自己来思考一下
如何来估算这个结果
我不知道你的估算结果是什么样的
但是至少我们简明的会有一个解
是多少
就是n^2
我们来说明一下为什么是n^2
因为无非刚才说了就是n棵树
而每一个节点在同一个树中
是不会重复存放的
所以n,n,..,n n个n
我们说很自然可以得到
n^2这个结论
但是我们要说的是
这个结论虽然是对的
但是并不是紧的
它不够紧凑
不够准确
准确的解是多少
准确的解我们说应该是这个
也就是nlogn
所以如果有必要的话
你不妨在这里
再暂停一下
来试图说服一下自己
你能否证明这一条
也就是所有的这些树加在一起
它们的空间复杂度
总体也不超过nlogn
我不知道你是怎么具体的思考的
或许你已经说服自己了
但是我想说的是
往往第一眼并不容易看到是什么样的
因为直觉会告诉我们一种方法
试图去真的将这些树的size
加在一起
那么我想告诉你的是说
据我自己当年尝试的经验来看
这条路其实是很曲折的
不容易得到最终的结果
尤其是这么紧凑的一个结果
怎么办
同样是计算几何中
经常告诉你的一个方法
也就是我们要变换一个视线
具体来说
也就是我们要换一个角度
来统计这个量
我们知道在输入的点集中
总共不过是n个点
我们刚才实际上是来统计
在每一个树中
它们出现了多少次
然后把它们加起来
这固然是最终的结果
但是我们如果换一个角度
或许可以这样考评
也就是我们来问一下
在输入的平面上的那n个点中
每一个点在这棵树
这棵树这棵树所有这些树中
分别会被存放多少次
不要忘了
所有的点的总数无非是n
所以我们现在
只不过要来估计一下这个界
每一个点
最多会在所有这些树
或者整体这个数据结构中
被重复的存放多少个拷贝叫呢
这是一个新的思路
新的角度看的问题
但是它会更加的容易一些
现在你知道答案了吗
没错
确实对于每一个这样的点来说
我们宣称它最多会被存放
logn个副本
为了看出这一点
我们实际上只要再去深入的
考察一下就可以了
我们要注意到
这么样一个事实
任何一个点
如果在某一棵树中
被存放过的话
那么它就必然会在它的
历代祖先所对应的那些树中
比如说像这些树中
也会被存放一次
反过来
如果有一个点
要能够这样存放的话
那么它们之间
它们所对应的那个y-tree之间
它们所对应的那个y-tree
所对应的那个顶点之间
必然有这样的一个
祖先和后代的血缘关系
现在我们就基于这个考察
就可以得出一个结论
任何一个输入点集中的点
如果它要重复存放的话
只可能存放在沿着祖先关系
所对应的在这棵树中的某一条
通往树根的路径上
或者更准确的讲
它会被存放在沿着这个路径上
每一个点所对应的y-tree中
它存放的副本数目
不会超过这条路径的长度
而这条路径的长度是多少
无论如何也是不会超过
logn的
现在我们就可以得出结论了
按照这样的一个推论
我们自然的就可以得到
这里所宣称的那个nlogn的结果
这样的一个结果
相对于一维的BBST
虽然多了一个logn的尾巴
但是我们前面多次讲过
logn其实并不是很大
如果从多项式来讲
它比任何的多项式都要渐进的小
或者说接近于常数
所以我们说
这样的一个膨胀
这样的一个复杂度的扩大
其实还是能够承受的
还是我们足以负担得起的
-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