当前课程知识点:计算几何 > 04. Voronoi Diagram > G. Hardness > 04-G-01. 1D Voronoi Diagram
好 在上一节
我们介绍了Voronoi图的表示方法
你应该还记得叫DCEL
我们需要强调的是
这种表现方法
其实并不只限于Voronoi图
我们讲过对于一般的子区域剖分
它都是适用的
那么好接下来这一节呢
我们将转入一个新的话题
我们向所有的研究的问题一样
在给出算法之前
首先要来界定一下
Voronoi图这个问题的难度是多少
我们分几个层次来讨论
首先来考虑一般意义上的
Voronoi图
我们来看一下
我们来表述一下就是
对于一般意义上的 最常用的
比如说我们在平面上的
这样的情况的Voronoi图
我们最快能够指望
只需要多少时间
就能把它构造出来
当然在这里呢
我们没有一上来就去讨论二维的问题
我们先考虑它的简化的一个版本
一维的情况
我们说one dimensional VD
这个问题如果要来完成它的构造的话
它的时间复杂度是多少
我们的招依然是以前惯用的方法
做一个reduction
所以最重要的是你应该记得
怎么来找到那个参照的问题
眼明手快的你
可能已经看到了
我们这里时实际上已经给出了答案
是的 要通过sorting这个问题
以它为基准
将它归约到我们的
一维Voronoi图问题
那具体是怎么来操作呢
我们可以通过下面的这个插图
来看到这一点
首先来想想sorting这个问题
它的输入是什么呢
我们讲过是一系列n个数
比如说实数
那么从几何的观点
我们已经用过多次了
都可以视作为是在数轴上的
一系列的点像这样的
一系列的点
当然既然是要做sorting
言下之意最开始的时候
它是unsorted 无序的
所以未必是按我们这里
所给的这种编号给出的
但这不要紧
在数学上它们至少是有一个顺序的
我们的任务就是把这个顺序求出来
那么好了 根据reduction这个思路
我们并不是直接去求它的排序结果
而是曲径通幽
先将这个问题的输入
转化为也就是我们待研究的
这个1D Voronoi Diagram这个问题
通过它的算法
把它的输出得出来
并且将任何的这样的一个输出
尽快的转换回来
使之成为sorting
这个问题的一个output
怎么转化呢
这里的转化是显而易见的
实际上刚才我们已经给出了这些答案
没错 把这n个数
就视作为在这么样一个数轴
其实也就是在一维的
这样的一个欧式空间中的一系列的点
注意 蓝色的这些点
虽然我们这里只举了五个点
但是实际上可以有更多的点
好 接下来调用你所能够极尽你的智力
能够设计出来的尽可能优的
或者说是最优的算法
把这样的一个一维的点集
所对应的Voronoi图构造出来
怎么构造的我不关心
构造出来
如果是能构造出来的话
不管你用的什么方法
答案都是唯一的
什么样的呢
也就是如这里这个图所示的
必然是这样的一系列的红色的点
如果你将Voronoi图的定义
降到一维来
你就会发现
其实这个时候的Voronoi图
确实是这样一系列的红色的点
它们的位置是怎么确定的呢
在定义上已经给的很明确
它应该是同时拥有两个
最近邻的那些点
这些点不出意外
都应该是所有相邻的
输入点之间的那个mid-point
广义地讲叫bisector
实际上就是中点
好了 所以红色的这个1号点
就是0和1之间的bisector
2号的这个红色的点
就应该是1号和2号
输入点之间的mid-point
以此类推都是如此
好 这样的话我们就确实得到了
Voronoi图的一维的答案
接下来我们又应该如何
将这一系列的红色的点
转换为我们最初的
原始的那个排序问题的对应输出呢
这个图也给出了答案
方法是这样
我们可以通过一次线性扫描
找到最左侧的也就是最小的那个点0号点
比如标记为
请记住 这一步的时间是O(n)
符合我们的线性归约的条件
并不超时
好 接下来既然我们已经得到了
所有的红色的点
请记住在这里
我们所定义的所谓的这个构造
意思不光是要给出这些mid-points
而是要给出它们之间的拓扑的关系
也就是它们的相邻的次序是知道的
所以我们会知道
第一个mid-point在哪儿
也就是这个1号点在哪儿
那么接下来呢
既然我们已经知道了起点
而且知道了它所对应的那个mid-point在哪儿
所以我们自然可以知道它的间距
并且以这个间距作为长度
再去就像翻跟头一样翻一下
做一个flip
就可以得到1号点
把它输出出来
虽然它输入的时候未必是1号
但是我现在知道
在0点之后1号点是谁
接下来你应该能看到了
我们应该还知道2号的mid-point在哪儿
所以同样的我们也知道
它和刚才这个1号点之间的距离是多少
以这个距离作为长度
我们再做一次flip
就可以得到下一个点
好 以下我们以此类推
根据3号这个mid-point
我们就可以知道3号这个输出点
再接下来根据4号
就可以得到4号了
如果还有5 6 7 8都是这样
这说明什么呢
说明我们确实可以只用一次遍历ON的时间
就把所有这些点的排序的次序确定好
从而完成sorting这个问题
这样的话
它们之间就构成了一个reduction
这说明什么呢
这就说明我们原来sorting问题的
那个O(nlogn)的下界
同样适用于这个Voronoi图问题
虽然它还只是一维的
尽管这只是一个一维的版本
但是不要忘了
一维的版本只是二维版本的一个特例
你可以想象得到二维的版本
不至于比一维的版本还要容易
所以既然一维的版本
已经有了这么一个下界
二维的版本自然也会
至少有这么样一个下界
这是说的通的
-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