Kaba kuvvet Delaunay nirengi algoritması karmaşıklığı


16

Mark de Berg ve arkadaşlarının "Hesaplamalı Geometri: Algoritmalar ve Uygulamaları" kitabında Delaunay üçgenlemlerini hesaplamak için çok basit bir kaba kuvvet algoritması var. Algoritma, geçerli bir Delaunay üçgenlemesinde görünmeyebilecek ve başka bazı kenarlarla değiştirilmesi gereken yasadışı kenarlar kavramını kullanır . Her adımda, algoritma yalnızca bu yasadışı kenarları bulur ve yasadışı kenarlar kalmayana kadar gerekli yer değiştirmeleri ( kenar döndürme olarak adlandırılır ) gerçekleştirir .

Algoritma Yasal Üçgenleştirme ( T )

Giriş . Bazı nirengi T noktası seti P .
Çıktı . yasal bir üçgenlemesi P.

ise yasadışı kenar içerir s ı s j doTpipj

Let ve p i s j p l bitişik iki üçgen olması s ı s j .pipjpkpipjplpipj
Kaldır den T ve eklemek p k p l yerine. geri T .pipjTpkpl
T

Bu algoritmanın en kötü durumda zamanda çalıştığını duydum ; ancak bu ifadenin doğru olup olmadığı bana açık değil. Evetse, bu üst sınırı nasıl ispatlayabiliriz?O(n2)


5
Yukarıda belirttiğiniz biçimde zamanı alır. Bununla birlikte, bu yapılabilir bir istifini kullanarak O ( n, 2 ) süresi. Bu ders notlarındaki son sayfaya bakabilirsiniz . Temel argüman, en fazla ( nO(n3)O(n2) kenar döndürür. (n2)
rizwanhudda

2
@rizwanhudda: Bunu neden cevap vermiyorsun?
Raphael

Yanıtlar:


8

Bir Delaunay üçgenlemesi, paraboloide kaldırılan 2d noktasının alt dışbükey gövdesi olarak düşünülebilir. Böylece, 2d nokta setinizi alır ve her noktaya bir z koordinatı z i = x 2 i + y 2 1 atarsanız , alt dışbükey gövdenin x y- düzlemine izdüşümü Delaunay üçgenlemesini veriyor.(xi,yi)zzi=xi2+y12xy

Bu bakış açısını kullanarak, bir kenarın yasadışı olması ne anlama gelir ? Her şeyden önce, her nirengi için T biz 3d (üçgen) yüzeyini almak için parabolik haritayı kullanabileceği projeler için aşağı T . Tabii ki, bu yüzey mutlaka dışbükey değildir, dışbükey olsaydı, T Delaunay üçgenleme olurdu. Basitçe söylemek gerekirse, kenar ( p i , p j ) yüzeyin dışbükeyliği, içbükey bir kenar için bir engeldir . Bu kenarı çevirirken kaldırılan yüzeydeki durumu sadece yerel olarak değiştiriyoruz. 4 noktaya bakalım(pi,pj)TTT(pi,pj) . 3D'de dörtgenlere doğru uzanan bir tetrahedron oluştururlar. İki üçgen p i p j p k ve p i p j p l içbükey kenarı ( p i , p j ) tanımladığından, p k p l p i ve p k p l p j üçgenleridışbükey bir kenarı tanımlar (pi,pj,pk,plpipjpkpipjpl(pi,pj)pkplpipkplpj . Bu nedenle, yasadışı bir kenarın çevrilmesi, içbükey bir kenarın, kaldırmadaki dışbükey bir kenarla değiştirilmesine karşılık gelir. Bu döndürmelerin diğer dışbükey kenarları içbükey kenarlara çevirebileceğine dikkat edin.(pl,pk)

3D Flip interpretation Not: Görüntü geometrik olarak doğru değildir ve sadece taslak olarak kabul edilmelidir.

Kapaktan sonra üçgenleme olsun . Kalkık yüzeyi T ' yüzeyini "içerir" T . Bununla, aralarından iki yüzeye izlemek durumunda anlamına x y görmek düzlem sadece yüzeyinden üçgenler T ' (her iki yüzeye de veya üçgenler). Ayrıca yüzey söyleyebiliriz T ' daha fazla hacim kaplamaktadır. Ayrıca, kenar ( s ı , s j ) kaldırılmış yüzeyi tarafından uyarılan "arkasında" hemen yatmaktadır T ' den izlerken x y düzleminde.TTTxyTT(pi,pj)Txy

Döndürme dizisi sırasında, hacmi oldukça artan bir dizi yüzey elde ederiz. Böylece, kenar tüm bu yüzeylerin "arkasında" yatar. Dolayısıyla, çevirme işlemi sırasında asla tekrar ortaya çıkamaz. Sadece n 2 olası kenar seçtiği için en fazla O ( n 2 ) döndürür.(pi,pj)nO(n2)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.