Voronoi图(二):基本概念和性质

  • 1. 基本概念
  • 2. Voronoi的性质
  • 3. 参考资料
  • 4. 免责声明


1. 基本概念

这里我们着重介绍和实现关联比较大的概念和性质,其余内容有兴趣的朋友可以参考邓俊辉老师在edX上面的视频课程或教材上面的详解。同样这里给到必要观看的视频课程章节,这些内容对理解Voronoi图算法至关重要,标记有绿色√为必看章节,大家可以结合文章的内容,加深理解:

docvalues 数据结构图 voronoi数据结构_算法


接下来,我们就先来看看Voronoi图的概念。就笔者自己的理解来说,Voronoi Diagrams(Voronoi图)主要由两部分组成:1)四个数据结构;2)一个基本性质。四个数据结构依次为:

  1. Voronoi Site;
  2. Voronoi Edge;
  3. Voronoi Vertex;
  4. Voronoi Cell;

一个基本性质为:

Cell里面任意一点到该Cell所属的Site的直线距离,比这点到其他Site的直线距离都短;

基本性质我们在上一节塞尔达的例子里面,已经给大家展示过了。这里我们还是用之前的例子,给大家展示一下上述四种数据结构:

docvalues 数据结构图 voronoi数据结构_数据结构_02

大家可以看到,Voronoi Site就是输入点(传送点),Voronoi Vertex就是Voronoi Edge的交汇点,Voronoi Cell就是由包含某个Site的Voronoi Edge围成的区域(可封闭,可开放),但这里需要着重提一下Voronoi Edge的概念:

Voronoi Edge落在相邻两个Site的垂直平分线(Bisector)上,并不是相邻两个Site之间随意的一条直线上;

比如上图例中的初始之塔(S1)和双子山之塔(S2),它们的Voronoi Edge落在以这两个点建立的垂直平分线上:

docvalues 数据结构图 voronoi数据结构_docvalues 数据结构图_03

也就是说Voronoi Vertex是Site之间垂直平分线的交点,这个性质大家需要特别注意。在熟悉Voronoi图的结构之后,我们就来看看它有哪些重要的性质。

2. Voronoi的性质

首先,我们给到Voronoi图最重要的性质:

〖定理7.4〗1
对于任一点集P 所对应的Voronoi 图Vor( P ),下列命题成立:

  1. 点q 是Vor( P )的一个顶点,当且仅当在其最大空圆CP(q)的边界上,至少有三个基点;
  2. pi 和pj 之间的平分线确定了Vor( P )的一条边,当且仅当在这条线上存在一个点q,CP(q)的边界经
    过pi 和pj,但不经过其它基点。

什么意思呢?我们通过图例来进行理解:

docvalues 数据结构图 voronoi数据结构_计算几何_04

通过上述图例,想必大家就能理解上面关于Voronoi图最重要的性质,后面代码实现的时候,会用到这条定理来验证计算结果的正确性。最后,我们给到其他关于Voronoi图的性质,但不对它们做过多的解释,因为对代码实现不太重要,只是后面我们验证实现的时间复杂度的时候,会用到,所以大家先混个眼熟即可:

〖定理7.2〗1
给定由平面上任意n 个点构成的集合P。若所有点都共线,则Vor( P )由n-1 条平行直线构成;否则,
Vor( P )将是连通的,而且其中的边不是线段就是射线。

〖定理7.3〗1
若n ≥ 3,则在与平面上任意n 个基点相对应的Voronoi 图中,顶点的数目不会超过2n-5,而且边的
数目不会超过3n-6。


3. 参考资料

  1. Computational Geometry: Algorithms and Applications
  2. 计算几何 ⎯⎯ 算法与应用, 邓俊辉译,清华大学出版社

4. 免责声明

※ 本文之中如有错误和不准确的地方,欢迎大家指正哒~
※ 此项目仅用于学习交流,请不要用于任何形式的商用用途,谢谢呢;


docvalues 数据结构图 voronoi数据结构_voronoi图_05


  1. 计算几何 ⎯⎯ 算法与应用, 邓俊辉译,清华大学出版社 ↩︎ ↩︎ ↩︎