Çokgen genelleme probleminde çokgen


9

Aşağıdaki yazılardan özür dilemek istiyorum. Bunu başlangıçta göndermek için yanlış forumu seçtiniz. Ancak bunu tam bir israf haline getirmek yerine, gerçek bir "Teorik Bilgisayar Bilimi" problemi olmak için soruyu elden geçirdim.

Sorun: 2B düzlemde içbükey olabilen veya olmayabilen basit bir çokgen A'nın konturunu oluşturan n sıralı nokta alan bir algoritma oluşturun ve m noktaları olan yeni bir çokgen B oluşturur:

  1. A'daki tüm noktalar B içinde bulunur
  2. 3 <= m <n
  3. B, en küçük alana sahip tüm Bs setindeki çokgendir
  4. B basit bir çokgen olmalıdır (yani kendiliğinden kesişme olmamalıdır).
  5. Algoritmaya giriş çokgen A ve "m" dir.
  6. B'deki segmentlerin ve A'daki segmentlerin çakışmasına izin verilir.

Bazı örnek girdiler ve beklenen çıktılar:

  1. A bir kare ve m 3 ise B, A içeren en küçük yüzey alanına sahip üçgen olacaktır.
  2. A bir altıgen ve m 4 ise, B, A içeren en küçük yüzey alanına sahip bir dörtgen olacaktır.

Bu sorunu deneyen herkese iyi şanslar. Özellikle çözümün optimal olması gerektiği için bunun çok zor olacağına söz verebilirim.


1
@Joe: Doğru değil: A bir kare ise, Thirian A içeren minimum alan üçgeni ister. Öte yandan, A bir üçgen ise (n=3) o zaman gerçekten geçerli bir çözüm yoktur.
Jeffε

3
İlk yorumuma 17 ekle, sanırım. Neden 20?
Jeffε

3
FFT "karmaşık" için düşük bir eşik değil mi?
Sasho Nikolov

2
Eğer m = 3 ayarladıysanız, sorunun hiç değişmediğinin tamamen doğru olduğunu düşünmüyorum. ancak m girişin bir parçasıysa iyi değildir.
Suresh Venkat

5
“herkes sorunun ne olduğunu biliyor” doğru değil. Soruyoruz çünkü belirtilmeyen seçimler bir fark yaratıyor.
Suresh Venkat

Yanıtlar:


10

Çokgenlerinizin nasıl göründüğünü bilmiyorum, ancak belki de Ramer-Douglas – Peucker algoritmasının basitleştirilmiş bir sürümü yeterlidir:

  • her dışbükey kısım için alanı hesaplayınAj üçgenlerin PiPi+1Pi+2 üç ardışık noktadan oluşur;
  • her içbükey kısım için alanı hesaplayınBk iki üçgenin PiPiPi+1 ve Pi+1Pi+2Pi+2 iki noktanın uzatılması ile oluşturulmuştur Pi,Pi+2 ve orta nokta Pi+1
  • hesapla min{Aj,Bk} ve karşılık gelen noktayı (ve işlem içbükey kısımda yapılırsa kaydırma noktalarını) silin;
  • döngüye kadar nm puan silindi.

resim açıklamasını buraya girin
Çokgenin kenarlığı (Aj yeşil üçgenler, Bkkırmızı üçgenler). Sağda, sınır iki nokta ortadan kaldırıldıktan sonra.

Daha karmaşık algoritmalar için " çokgen genelleme teknikleri " için arama yapabilirsiniz, ancak ilk koşulunuz (A'daki noktalar B'de bulunur) bazı ek ölçeklendirme işlemleri anlamına gelir.


@Suresh: Mevcut 4 upvote'un saydamlık için olduğundan eminim (neredeyse önemsiz) algoritması için değil :)
Marzio De Biasi

1
Bu, Ramer-Douglas-Peucker algoritmalarıyla aynı sorundan muzdariptir: Çıktının basit bir çokgen olduğu garanti edilmez!
Jeffε

1
@Jeffe: haklısınız, ancak (çokgen karmaşıksa optimal olmaktan uzak), çatışmaya yol açan basitleştirmelerden kaçınılabilir . Sonunda, kaldırılması gereken ancak basit olmayan çokgenlerden kaçınılması gereken başka noktalar varsa, bir çakışma çözümleme yöntemi kullanın (örneğin kesişim noktalarını hesaplayın ve "delikleri" tamamen atın). Ancak OP'den gerçek bir örnek görmek istiyorum.
Marzio De Biasi

1
@MarzioDeBiasi Bu işe yarayabilir. Ama olmayabilir. Açıkladığınız her basitleştirme için kendi kendine kesişmeye neden olabileceğini düşünüyorum . Ve "döngüler fırlatmak" işleri daha da kötüleştirebilir, daha iyi değil. Bu muhtemelen pratikte iyi bir çözümdür, ancak nerede olduğumuzu unutmayın!
Jeffε

Teşekkürler Marzio, en azından şimdi bu tür problemlerin ne dediğini biliyorum! Ne yazık ki verdiğiniz çözüm, önerilen çözümlerimde (3) ve (4) 'ün ne olduğu ve (4)' ün bir sorunu var. Çok gerilmiş ve bu nedenle kabaca 30 derece ve daha az açıya sahip keskin uçlara sahip elipsler, gereksinimi kolayca ihlal edecektir (1).
Thirlan

6

Uzun zaman önce bir nokta kümesini (ya da bir çokgeni) çevreleyen en küçük alan üçgenini bulmak için doğrusal zaman algoritmasını ayrıntılı olarak anlatan bir makale yazdım:

J. O'Rourke, Alok Aggarwal, Sanjeev Maddila, Michael Baldwin, "Asgari çevreleyen üçgenleri bulmak için en uygun algoritma," J. Algorithms , 1986, 7 : 258-269. Bağlantı .

Çalışmalarımızı genel bir algoritma takip etti:

"Çokgenleri çevreleyen minimum alan," Alok Aggarwal, JS Chang ve Chee K. Yap, Görsel Bilgisayar , Cilt 1, Sayı 2 (1985), 112-117. Bağlantı .

Google Scholar'ı, iyileştirmeler ve ilgili işler bulmak için bunlara atıfta bulunan sonraki makaleleri izlemek için kullanabilirsiniz.

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.