Bir nokta kümesini iki en uygun alt kümeye ikiye bölme


9

Küme içindeki kareler toplamı en aza indirilecek şekilde bir dizi noktayı eşit boyutta iki alt kümeye bölmek istiyorum. Noktaların iki boyutlu Öklid uzayında olduğunu varsayabiliriz. Ben k = d = 2 göz önüne alındığında genel bir k-anlamına gelen kümeleme algoritmasından daha hızlı bir şey umuyorum. Birisi beni bunun için iyi bir algoritma yönünde gösterebilir mi?

İyi bir yaklaşımımız varsa kesin bir çözüm gerekli değildir.

Teşekkürler!

Yanıtlar:


10

Kesin bölüm üzerinde ısrar ediyorsanız, düzlemdeki bir dizi noktanın tüm dengeli bölümlerini bir çizgi ile hesaplamanız gerekir (en uygun bölüm bir Voronoi bölümüdür, bu nedenle iki nokta kümesi bir çizgi ile ayrılır). Bu tür bölümlerk-Görüntüler. Şu anda bu çalışma için bilinen en hızlı algoritmaO(n4/3logn) bu bölümleri ikili sistemde hesaplamak için [yani, k-seviye bir dizi n hatları k=n/2]. Olası tüm bölümlere sahip olduğunuzda, her birini kontrol etmeniz yeterlidir. Standart numaralar kullanarak, bu her bölüm için sabit zamanda yapılabilir.

(Güncelleme: En uygun bölümün bir k-kurmak k=n/2, tamamen önemsiz değil. İlgilenen okuyucu için sevimli bir egzersiz olarak bırakardım. İpucu: İki en uygun merkezden geçen çizgiyi ve ona dik olan yönü düşünün.)

Kesin çözümü umursamıyorsanız, bir coreset kullanmak için daha kolay bir yaklaşım olacaktır. k-kümeleme anlamına gelir. Bu sonuçO(ϵ2logn) Bu durumda toplam ağırlık ile ağırlıklı noktalar n. Ardından, ağırlıklı nokta setindeki sorunu çözmeniz yeterlidir. En kolay çözüm, merkezler için bir dizi aday yer oluşturmak ve tüm çiftleri ağırlıklı noktalarda denemek olacaktır. Coreset yapımı ve aday merkezlerin oluşturulması bu makalede açıklanmıştır:

http://sarielhp.org/p/03/kcoreset/

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.