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


16

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

算法LegalTriangulationT

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

T包含非法边缘pipj
do
pipjpkpipjpl邻近于两个三角形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 ip 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 ip j现在位于“ T 引起的抬起表面的“后面” 。TTTxyTT(pi,pj)Txy

在翻转序列期间,我们得到了一系列具有严格增加的体积的曲面。因此,边缘位于所有这些表面的“后面”。因此,它永远不会在翻转过程中重新出现。由于只有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.