当前课程知识点:计算几何 > 05. Delaunay Triangulation > D. Proximity Graph > 05-D-01. Gabriel Graph
实际上从图论的角度来看
我们所说的Delaunay triangulation
是一系列的非常重要的
需要计算的图的超图
这说明什么呢
这意味着我们或许可以通过
首先去得到Delaunay triangulation
然后以此为基础
再来计算其它的那些重要的图
我们获得了一系列的
新的计算这些图的一个方法
那么其中首先需要介绍的是两个图
它们因为反映的都是
元素之间的这种邻近性
所以我们也称之为proximity graphs
我们来看一下
到底有哪几个图
首先是所谓的Gabriel graph
这个图的定义
如果从数学上来看
我们会多少会觉得很困惑
因为它的表述形式是这样的
我想在几分钟之内
你是很难搞清楚
它到底意味着什么的
那么我们来看一看几何
几何是很直观的
你可以事后再去验证
我先把几何的解释告诉你
那么在给定了一系列点之后
什么样的边
才能够被Gabriel graph所采用
条件其实很简单
就是对于任何两个点p q
如果它们之间的那个连边
是属于Gabriel graph的话
那么充要条件是在几何上
以它们的连边
为直径的这个圆是空的
里头不含第三个点
就像我们这里所画的这样
现在我们再反过头来
体会一下这公式
就会看的很明白了
因为比如说
相对于其它的
任何一个第三个点r而言
r到p和q的距离的平方总和
在什么意义下是会
在什么时候是会大于
这条直径平方的总和呢
中学的初等几何的知识
就告诉我们
在一个圆中
如果这是个直径的话
那么到这个
直径两个端点的距离平方和
与这个直径的平方相等的
那些点的轨迹是这个圆的圆周
以这个圆周为界
所有在外面的点
比如这个r
它到这两个端点的距离的平方和
就会大于直径的平方
那就是说为什么
直径会在这个意义上讲
相对于最小
反之 那些会使得它
不是最小的那些点
比如说在这个圆内部的那些点
就会使得这个圆变的脏了
把它弄脏
里头不再是空的
不再是干净的
所以反过来
如果这个地方是干净的
当然这条直径
也会在这个意义上讲去掉最小
所以我们这里可以看得出来
几何是多少的简明和扼要
以及高明
好 当然相应的回顾一下
中学的知识
我们还是可以知道
另一条以前已经熟知的性质
也就是一个点
如果是落在这个圆的外面
那么它相对于这个直径
所支撑的那个角
所张开的那个角
就会小于90°
这也就是我们所谓的锐角
如果在圆周上是直角
你应该记得的
如果在内部的话呢
大于90°的我们叫做钝角
好 就是这么一个性质
那么你可以注意到
我们这里关于一条边
是否会属于Gabriel graph被它选用
给出了三个等价的重要条件
其中第三个条件
就是根据我们刚才
前面讲过的Voronoi图而言的
我们说如果一条边
能够被Gabriel graph所采用
它的充分必要条件是
在同样这个点集
所对应的那个Voronoi图中
在p和q之间
必然有一段非空的边界
公共边界
而且它们的这个连线
必然会和那个实际上存在
但是在这看不见的
那条公共边界
会有一个实在的交点
为什么这样的呢
我们来说明一下
如果确实p和q中间的连边
会和p和q
这两个cell的公共边界
相交于一点
那么当然肯定就是它们的中点x
我们说这个既然是
Voronoi edge上的一个点
所以它必然以它为中心
会存在一个空圆
而且这个空圆会经过p和q
反过来 如果p和q之间的这条边
的确会被Gabriel graph采用
并且相应的有一个空圆
那么也说明
这个圆心是具有
Voronoi edge的必要条件的一个点
那也说明
这个圆心就在某一条Voronoi edge上
而且这条edge
就是介于p和q所对应的
cell之间的
那一段公共边界上
所以两个方向都是成立的
好了 从这个角度来看
我们也马上就可以得出一个结论
那么Gabriel graph中的任何一条边
既然都存在这么一个空圆
那么它当然也就应该是属于
同样的一个点集所对应的
Voronoi图中的一条边了
所以很自然的
我们就可以知道
Gabriel graph必然是
Delaunay triangulation的一个子图
那么Gabriel graph
又当如何具体的构造出来呢
我们为此又需要多少时间成本呢
在此我们先给出结论
也就是说
我们只要已经拥有了Voronoi图
就可以以它为基础
进而在花费O(n)的时间得到它
所以看得出来
整个这个算法的复杂度实体
当然是在Voronoi图的
这个构造的过程中
所需要的时间了
我们知道这个成本是个大头
但也不超过O(nlogn)
为什么是这样的呢
回忆我们刚才所说的
第三个等价的定义
第三个定价的定义
我们刚讲过
在这个定义里头是说
任何一条边
它是一条Gabriel graph中的边
仅当它是来自Voronoi diagram中的
某一条边所对偶的那条边
它和那条边而且有相交
所以的话呢
确实我们按照
刚才所说的那个思路
先去构造出Voronoi图
然后去逐一的检查
Voronoi图的每一条边
判断一下
以它们各自为公共边界的
每一对site
它们的连线
是否真的与它相交
如果相交
那么这就是Gabriel graph的一部分
如果不是
它也自然又不是它的一部分
因为刚才我们讲过
这是个充要条件
不要忘了
Voronoi图筛选出来的边
只有线性条
所以在这个基础上再做筛选
也确实只需要O(n)的时间
好了 现在我们可以得出结论
我们可以借助以前的方法
只需要累计O(nlogn)的时间
就可以把Gabriel graph给构造出来
这是很好的一个结论
-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