当前课程知识点:计算几何 > 01. Convex Hull > L. Divide-And-Conquer (2) > 01-L-05. Zig-Zag
好了 现在回到我们刚才的那个主题
当我们明确了
这个rightmost和这个leftmost之后
并且在它们之间
联接上了、缝合了这样第一条线之后
接下来我们又应当如何做呢
在这里我们就以这条upper tangent为例
来看一看如何从我们
最开始这样一个线出发
经过一系列的操作
最终停止 并且确定这条支撑线
我们整个这个方法是这样的
依然是基于To-Left test
不要忘了
我们的这个上切点和下切点
无论是在这还是在这
都和我们此前
在Incremental Construction算法中
介绍的一样
它们都有一个相应的拐弯的方式
有自己的pattern of turns
比如对于这个凸包而言
既然这个点是在它的外部
所以它在这个位置上的这个切点
从我们前面讲过的pattern of turns来讲
必然就会出现一个R
和另外一个R
R加R的模式
这是识别它的唯一的特征
所以这个意义上讲
我们也可以通过两次To-Left测试
来判断一下我们是怎么来处理的
比如说在这样的一个情况下
我们首先来经过一次判断
就会发现这个l是不足以
成为我们所希望的
那个上切点的
因为相对于这条线而言
它的一个前驱
在左侧
而它的后继在右侧
异号的
在这种情况下怎么办呢
我们可以判断出来
如果要有一个合适的切点的话
必然是它的前驱
也就是在沿着逆时针方向
应该朝着这个方向走
所以在这种情况下
我们不妨就将这条线
以它为基础
向后边挪动这个l
将这个l挪动到这个位置
从而引入一条新的线
这条线未必就是我们最后的upper tangent
但是我们已看得到
它向upper tangent迈出了坚实的一步
接下来呢我们依然检查这条线
当然是以这个点作为外部的一个点
我们来检查这个点处的pattern of turns
我们会发现在这个地方
依然是有一个左侧的点
和一个右侧的邻居
还是左右(式)的pattern
不是同号的pattern
所以呢
这说明我们应该继续地将这个点
以它为基础向上
再行进一步
这样的话我们又缝出了第三条线
好 在这个时候
如果我没有画错的话
虽然这个角度很小
我们可以看到这里
突然我们第一次出现了一个L
和另一个L
LL的两个pattern
这样的一个LL pattern
就说明我或许已经达到了
这样的一个位置
请注意
这是或许,还未必一定是
这个时候
我们要调转头来
如果说这个时候的葫芦
已经摁下去了
我们还要来看这个瓢
是不是依然满足条件
同样对称地
如果是相对于这个点来说
它是对于这个子凸包而言
是外部的点
所以这个点
也应该具有相对于它而言的
一个独特的pattern
也就是说
比如说我们假设是沿着这样一条线
过来的话
从右到左的话
那么它的这个局部的pattern
应该是L+L
而且这是它独特的
也应该是同号,概括而言
可是我们这里看一下
这条线固然相对于内侧而言是RR
可是相对于这个方向而言
又是一个L和R
不是同号
这说明什么呢
说明r这个点也不是极点
这个时候我们要做什么事呢
这个时候这个点已经不足以移动了
或者说如果它移动的话
已经存在风险了
那么我们不妨就调转一下方向
我们来将这个点向上移动
所以相应地呢
我们就会以刚才那条线为基础
引入新的这样一条线
好 这样我们就成功地
从这个点移到了这个点
可以看到,朝最后的目标
又迈进了一步
但是我们还需要进行检测
来判断是否已经到达了终点
当然也就是按图索骥
我们要按照这个终点的
刚才说的那个pattern来检查它
我们会发现
相对于这样一条
新的这条丝线而言
这个点处构成的
再次的又是一个L和R的pattern
不是同号了
这说明什么呢
说明它依然没有到位
我们需要依然地去移动它
所以经过了下一步移动以后
等效地我们又引入了
这样一条丝线
好 这个时候
我们再去做检查
如果我们看这个局部的话
就会发现这个地方
依然不是一个同号的pattern
所以就说明
这个点依然需要往前迈一步
正向我们所期望的那样
好 这样的话
我们已经到达了这个点
但是不要高兴太早
尽管在这个位置上
我们确实又重新
恢复了一个同号的pattern
但是在瓢摁下来的同时
我们又要反观那个葫芦
这个时候我们就发现
此前还如果说是
同号pattern的这个葫芦
经过了这样的三次的
前进之后
经过了对方的三次前进之后
它又重新变成了一个异号的pattern
不要紧
我们依然从这个位置出发
再行进一步
你可以看出来
这是最后的一步了
当我们行进到
这样一步的时候
其实我们也就抵达了upper tangent
这个时候我们无论是看葫芦
还是看瓢
我们会发现
它们都是同号
同号的pattern
-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