Çizgi iki nokta kümesini ayırır


19

İki nokta kümesinin bir çizgi ile ayrılıp ayrılamayacağını belirlemenin bir yolu varsa?

A ve B'yi , A'nın ve A'nın tüm noktaları çizginin bir tarafında ve B'nin tüm noktaları ve sadece B'nin diğer tarafında olacak şekilde ayıran bir çizgi varsa iki ve B noktası var .birBbirBbirbirBB

Geldiğim en saf algoritma ve B için dışbükey çokgen oluşturmak ve bunları kesişme için test etmektir . Dışbükey bir çokgen oluşturmak için zaman karmaşıklığının O ( n log h ) olması gerektiği zaman gibi görünüyor . Aslında zaman karmaşıklığında herhangi bir gelişme beklemiyorum, hiç geliştirilebileceğinden emin değilim. Ama en azından böyle bir çizgi olup olmadığını belirlemenin daha güzel bir yolu olmalı.birBÖ(ngünlükh)

Yanıtlar:


19

Hem uli hem de Dave Clarke, bunun daha yüksek boyutlarda bile (bu iki nokta seti bir hiper düzlem ile ayrılabilir mi?) Doğrusal bir programlama problemi olduğunu doğru bir şekilde gözlemler ve böylece polinom zamanında çözülebilir. Ancak puanlarınız düzlemde olduğu için, probleminiz aslında zamanında çözülebilir , burada n toplam puan sayısıdır.O(n)n

En basit çözüm muhtemelen Seidel'in rastgele algoritmasıdır. Bir giriş noktasını rastgele olarak eşit olarak seçin ve p hariç tüm noktalar için tekrar eden bir ayırma çizgisini hesaplayın .p p

  • Böyle bir çizgi yoksa, orijinal noktalar ayrılamaz.

  • Eğer doğru tarafında , daha sonra orijinal kredi ayırır.p

  • Eğer yanlış tarafında , o zaman, her iki orjinal noktaları ile bir çizgi ile ayrılmış olabilir , p , ya da orijinal noktalar hiç ayrılabilir değildir. Bu durumun O ( n ) zamanında [egzersiz] kontrol edilmesi kolaydır .ppO(n)

Bu algoritma zamanında yüksek olasılıkla çalışır (algoritmanın rastgele seçimlerine göre). Daha fazla ayrıntı için orijinal belgeye veya herhangi bir sayıda çevrimiçi ders notuna bakın.O(n)


Çok teşekkür ederim, bu makaleyi inceleyeceğim.
com

Üçüncü durumda, çizginin geçebileceğini söyleyebilirsiniz, bunu bilmek nasıl yardımcı olur? p
Tarrasch

10

İki veri kümenizin özelliği doğrusal ayrılabilirliktir , basitçe, onları ayıran bir çizgi olmasıdır. Birçok makine öğrenimi, ilgilendiğiniz ayrılığı gerçekleştiren çizgiler olan doğrusal sınıflandırıcılar bulmaya adanmıştır .

Çizgiler hakkında konuşurken, puanlarınızın düzlemde olduğunu varsayacağım. Yapmak istediğiniz şey , w 2 ve w 3 değerlerini bulmaktır , öyle ki A kümesindeki tüm noktalar ( a 1 , a 2 ) , w 1 a 1 + w 2 a 2w 3 ve tüm noktalar ( b 1 , b 2 ) içinde B , w 1 b 1 +w1w2w3(a1,a2)Aw1a1+w2a2w3(b1,b2)B . Bu nedenle, eşitsizlik w 1 x + W 2 y w 3 grubu bir sınıflandırıcı olarak görülebilir A .w1b1+w2b2<w3w1x+w2yw3A

Optimal çizgiyi (doğrusal regresyon, lojistik regresyon vb.) Belirlemek için çok sayıda makine öğrenme algoritması vardır. Bunlar bazı hata ölçülerine dayalı olarak değerlerini bulur . Ardından tüm noktaların doğru sınıflandırılıp sınıflandırılmadığını test edebilirsiniz. Yani, A'daki tüm değerlerin yukarıdaki denklemi ve benzer şekilde B'yi karşılayıp karşılamadığı .w1,w2,w3AB

Sadece böyle bir çizginin var olup olmadığıyla ilgilendiğiniz için, mevcut teknikleri kullanmanız gerekiyordu (ancak bu muhtemelen daha basit olurdu). Sadece serbest değişkenleri açısından aşağıdaki eşitlik koleksiyonunu ayarlayın .w1,w2,w3

her biri için i = 1 , . . , | A | Nerede bir = { ( a 1 1 , bir 1 2 ) , ... , ( a | A |w1a1i+w2a2iw3i=1,..,|A|.A={(a11,a21),,(a1|A|,a2|A|)}

her biri için j = 1 , . . , | B | burada B = { ( b 1 1 , b 1 2 ) , , ( b | B | 1 , b | B | 2 ) } .w1b1j+w2b2j<w3j=1,..,|B|B={(b11,b21),,(b1|B|,b2|B|)}

Bu kısıtlamalar tutarlıysa, bir çizgi vardır.


5

Doğru hatırlıyorsam, vektör makinelerini ayıran hiper uçaklar inşa edin. Boyut seçerseniz , hiper düzlem elbette bir çizgi haline gelir. Karşılanması gereken ek varsayımlar olup olmadığını kontrol etmeniz gerekebilir. İki boyutta tüm yaklaşım önemli ölçüde basitleşebilir, böylece çalışma zamanı genel yaklaşımdan daha iyi olabilir.2

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.