当前课程知识点:计算几何 > 07. Geometric Range Search > I. Range Tree: Optimization > 07-I-04. Fractional Cascading
我们现在就来介绍
使得刚才那种多层搜索树
能够进一步改进性能的一个技术
这个名词也是属于
翻译起来比较麻烦的一个名词
我们不妨借助它的原文
叫fractional cascading
待会我会大致来试图翻译和讲解一下
它到底是什么意思
我们首先还是沿承刚才那样的一个视角
也就是将每一棵y-tree
变换成等价的一个y-sorted-list
所以不同的在于
我们这里要把每一个孩子
所对应的这些y-list
也给它画出来
所以我们可以看到
父亲有一个list
孩子无论是左还是右
也有各自的一个list
我们来对照空间中的那个分布
验证一下
同样是刚才那样的八个点
依然在父亲节点中
是按照0 1 2 3 4
按高度依次排列的
构成一个完整的列表
左边这个节点
我们讲过是假设对应于
沿着这个方向
我们做了一次切分
从而使得原来那个点集
变成左和右
均匀的匀称的两部分
当然准确的讲
各自就包含四个点
尽管它们的点数少了
但是这里的组织原则依然是不变的
也就是它们依然要排成一个list
而且也需要按顺序来排
这里为了演示方便
我们在这中间留出了缝
其实作为一个数据结构来说
一个完整的列表来说是没有缝的
好在这个不妨碍你的理解
我们主要是为了让它能够对齐
我们就会看到
确实有这么样一个途径
需要强调的是
表面上来看
左孩子这个列表
和右孩子这个列表
是由它们的父亲
分割而成的
就像分割遗产一样
分成两份
但实际上我们讲这里
同样存在一个视角变换的过程
我们认为其实是反过来
父亲的这个列表
也可以等效的认为
是由两个孩子所对应的列表
合并起来的
就像你在数据结构算法的
基础部分所学的两路归并一样
由这一路和这一路
二路归并以后得到的
等效的
那么这个结构中的核心
最关键的地方
其实就是这些绿线
我们看到
正因为它们的存在
父亲节点所对应的这个列表
与孩子节点所对应的这些列表之间
就不再是互不搭接
彼此独立的了
而是变成有紧密联系
比如我们看到
这个0号就会指向这个0号
而这个1号就会指向这里的1号
其余的也都是如此
这些指定的方法
包括这个过程
是基于什么样的一个原理
其实这背后的原理
非常简单
如果你能联想到
我们查找算法所有那些数据结构的
接口语义的话
你就会发现
其实一样的
也就是说对于父节点那个列表中的
任何一个元素而言
它所指向的
都同时有左和右两个指针
或者叫引用
它们所指向的其实就是在孩子节点
所对应的那些列表中
不大于它的那个尽可能大的(应为不小于它的尽可能小的)
或者说最大的那个元素
我们可以来看一下
以3为例
在左孩子中因为有一个3的副本
它就被划分到这来了
所以这是一条直线
直接3指向3
这是简单的情况
而对于右孩子所对应的这个列表来说
这个节点所指向的
应该是在y坐标上
不大于这个3(应为不小于)
最大的那个点(应为最小)
是谁
自然的也就是4
我们可以看到
其实不光是3
对于这个列表来说
2 3和4
其实都是指向4的
原因也是如此
其他的所有的节点的指向
也都是如此
这种连接关系
这样的编排有什么作用
我们说其实就是为了帮助
我们来做查找
也就是说
如果我们确实像刚才那样
需要按照同一个y_1 y_2
这样的标定的同一个区间
来对一系列的y-list
来做查找的话
那么其实我只要在上层
找到了某一个点
不管你花费了多少成本
那么接下来
如果我还要试图到下层去找的话
就可以虽然不是不费吹灰之力
但是你至多只需要O(1)的时间
通过这样的一个short cut
直接的就可以短路的
跳转到对应的位置
无论是像刚才这样的
向左还是这样的向右
都只需要O(1)的时间
所以概括起来
如果我们能够运用这种技巧的话
我们就能够充分利用
在父节点乃至于更高的
祖先节点处
所已经得到的
搜索的结果
比如它
从而在O(1)的时间
而不是O(logn)时间之内
就快速的短路的跳转到
孩子节点所对应的那个entry
无论是像刚才这样的向左
亦或是这样的向右
都只需要O(1)的时间
现在我们来体会一下
为什么这种技术称作为
fractional cascading
需要有些想象力
我们只要想像
将这样的一个模式
反复的运用到整个那个x-tree中就可以了
也就是说
对于x-tree中的任何的一个节点
我们都可以做这样的处理
那样的话
这个局部就会变成全局的一个什么样子
我们就会发现
对于根节点来说
这个还是一个主流的东西
那么随着下降到深度为一的那一层
它就会变成两个稍微细一些的支流
如果在往下去
又会在碎在碎在碎一片
直到最后
变成一系列的小碎片
我想你应该去看过瀑布
在风景区瀑布往往是很重要的
很有意思的一个场景
瀑布难道不就是这样吗
最上边是一个完整的一张表
随着瀑布由顶而下
不断的下降
那个溪流
就最开始的那个主流
会不断的被分割 分割
直到最后变成一个一个的
小小的浪花
所以这样的一个过程
我们说cascading
大家都知道
层叠一层一层的叠起来
fractional呢
指的就是它们的规模
越来越小
越来越小
不断的划分
所以合在一起叫fractional cascading
其实是再形象不过的了
只是限于我的语言水平
我不知道应该把它怎么翻译过来
在我曾经翻译的那本计算几何
算法和应用中
我强行的把它翻译成分散层叠
实际上我自己是非常不满意的
这种照字面的翻译
其实是多少有一些蹩脚的
-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