蛮力Delaunay三角剖分算法的复杂度


16

在马克·德·伯格等人的“计算几何:算法和应用”一书中,有一种非常简单的蛮力算法,用于计算Delaunay三角剖分。该算法使用了非法边的概念-可能不会出现在有效Delaunay三角剖分中的边,必须用其他一些边替换。在每个步骤中,该算法仅查找这些非法边缘并执行所需的位移(称为“ 边缘翻转”),直到没有非法边缘为止。

算法LegalTriangulation(T)

输入。一些三角T点集的P。
输出。的合法三角剖分P。

而 T包含非法边缘pipj
do
让pipjpk和pipjpl邻近于两个三角形pipj。
从T删除,然后添加p k p l。返回牛逼。pipjTpkpl
T

我听说这种算法在最坏的情况下会在时间内运行;但是,我不清楚这句话是否正确。如果是,如何证明这一上限?O(n2)


5
按照上面所述的形式,它需要时间。但是,使用堆栈可以在O (n 2)时间内完成。您可以查看这些讲义中的最后一页。基本论点是最多可以有( nO(n3)O(n2)边缘翻转。(n2)
— rizwanhudda 2012年

2
@rizwanhudda:为什么不回答呢?
— 拉斐尔

Answers:


8

Delaunay三角剖分可以认为是提升到抛物面的2d点集的下凸包。因此,如果你把你的2D点集,并分配给每一个点一个Ž -协调ž 我 = X 2 我 + ÿ 2 1,则所述下凸包的投影到X ÿ -平面给您Delaunay三角剖分。(xi,yi)zzi=xi2+y12xy

使用这种观点,边缘是非法的意味着什么?首先,每一个三角牛逼,我们可以使用抛物线地图获得3D(三角)的表面,向下突出到牛逼。当然,该表面不一定是凸的,如果它是凸的,则T将是Delaunay三角剖分。简而言之,边缘(p i,p j)是表面凸凹形边缘的障碍。翻转此边缘时,我们仅局部更改提升表面上的情况。因此,让我们看一下4点(pi,pj)TTT(pi,pj)。在3D中,它们形成一个四面体,向下投射到四边形。由于两个三角形 p 我p Ĵ p ķ和 p 我p Ĵ p 升限定凹边(p 我,p Ĵ),三角形 p ķ p 升p 我和 p ķ p 升p Ĵ限定一个凸边(pi,pj,pk,plpipjpkpipjpl(pi,pj)pkplpipkplpj。因此,翻转非法边缘相当于在提升中用凸边缘代替凹边缘。请注意,此翻转可能会将其他凸边变成凹边。(pl,pk)

3D Flip interpretation 备注:图像在几何形状上不正确,应仅视为草图。

令为翻转后的三角剖分。T '的抬起表面“包含” T的表面。我的意思是,如果您从x y平面观察两个表面,则只能从T '的表面看到三角形(或两个表面中的三角形)。您也可以说T '的表面包含更多的体积。而且,当从x y平面观看时,边缘(p i,p j)现在位于“ T ”引起的抬起表面的“后面” 。T′T′TxyT′T′(pi,pj)T′xy

在翻转序列期间,我们得到了一系列具有严格增加的体积的曲面。因此,边缘位于所有这些表面的“后面”。因此,它永远不会在翻转过程中重新出现。由于只有n个选择2个可能的边缘,因此最多有O (n 2)个翻转。(pi,pj)nO(n2)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.