रेखा दो बिंदुओं को अलग करती है


19

यदि दो तरीकों के बिंदुओं को एक रेखा द्वारा अलग किया जा सकता है तो पहचानने का कोई तरीका है?

हमारे पास बिंदु और दो सेट हैं यदि कोई रेखा है जो और अलग करती है जैसे कि सभी बिंदु और रेखा के एक तरफ केवल और दूसरी तरफ और केवल सभी बिंदु हैं ।बी बी बी बीABABAABB

सबसे भोली एल्गोरिथ्म मैं और लिए उत्तल बहुभुज का निर्माण कर रहा हूं और उन्हें चौराहे के लिए परीक्षण कर रहा हूं। ऐसा लगता है कि इस समय के लिए समय जटिलता एक उत्तल बहुभुज के निर्माण के लिए होनी चाहिए । वास्तव में मैं समय जटिलता में किसी भी सुधार की उम्मीद नहीं कर रहा हूं, मुझे यकीन नहीं है कि इसे बिल्कुल सुधार किया जा सकता है। लेकिन कम से कम यह निर्धारित करने के लिए एक अधिक सुंदर तरीका होना चाहिए कि क्या ऐसी कोई रेखा है।बी ( एन लॉग एच )ABO(nlogh)

जवाबों:


19

औली और डेव क्लार्क दोनों सही ढंग से मानते हैं कि यह एक रैखिक प्रोग्रामिंग समस्या है, यहां तक ​​कि उच्च आयामों में (क्या इन दो बिंदु सेटों को हाइपरप्लेन द्वारा अलग किया जा सकता है?) और इसलिए इसे बहुपद समय में हल किया जा सकता है। लेकिन क्योंकि आपके बिंदु विमान में स्थित हैं, इसलिए आपकी समस्या को वास्तव में समय में हल किया जा सकता है , जहाँ कुल अंकों की संख्या है।एनO(n)n

सबसे सरल समाधान शायद सेडेल का यादृच्छिक एल्गोरिदम है। यादृच्छिक पर समान रूप से एक इनपुट पॉइंट चुनें , और को छोड़कर सभी बिंदुओं के लिए एक अलग लाइन गणना करें ।p p

  • यदि ऐसी कोई रेखा मौजूद नहीं है, तो मूल बिंदु अलग नहीं हैं।

  • यदि ओर है , तो मूल बिंदुओं को अलग करता है।p

  • यदि के गलत पक्ष पर , तो या तो मूल बिंदु p के माध्यम से एक पंक्ति द्वारा अलग किए जा सकते हैं , या मूल बिंदु बिल्कुल अलग नहीं हैं। इस स्थिति को ओ (एन) समय [व्यायाम] में जांचना आसान है ।पी ( n )pपीहे(n)

यह एल्गोरिथ्म समय में उच्च संभावना (एल्गोरिथम के यादृच्छिक विकल्पों के संबंध में साथ चलता है । अधिक जानकारी के लिए, मूल पेपर या ऑनलाइन व्याख्यान नोट्स की संख्या देखें।हे(n)


बहुत-बहुत धन्यवाद, मैं इस पत्र में तल्लीन होने जा रहा हूं।
कॉम

अपने तीसरे मामले में, आप कहते हैं कि ऐसा हो सकता है कि लाइन से गुजरती है , यह जानने में कैसे मदद करता है? पी
वृषभ

10

आपके दो डेटा सेटों की संपत्ति रैखिक पृथक्करण की है , बस, कि एक पंक्ति है जो उन्हें अलग करती है। मशीन सीखने का एक बड़ा हिस्सा रैखिक क्लासिफायरियर को खोजने के लिए समर्पित है , जो कि आपके द्वारा अलग किए जाने वाले अलगाव को प्रदर्शित करने वाली रेखाएं हैं।

जैसा कि आप लाइनों के बारे में बात कर रहे हैं, मैं मान लूंगा कि आपके बिंदु विमान में हैं। आप क्या करना चाहते हैं मूल्यों है , और , ऐसा है कि सभी बिंदुओं के लिए सेट में , और सभी बिंदुओं के लिए में , । इस प्रकार, असमानता को सेट लिए एक क्लासिफायरियर के रूप में देखा जा सकता है ।डब्ल्यू 2 डब्ल्यू 3 ( एक 1 , एक 2 ) एक डब्ल्यू 1 एक 1 + डब्ल्यू 2 एक 2डब्ल्यू 3 ( 1 , बी 2 ) बी डब्ल्यू 1 1 + डब्ल्यू 2 2 < डब्ल्यू 3 डब्ल्यू 1 एक्स + डब्ल्यू 2 y डब्ल्यू 3w1w2w3(1,2)w11+w22w3(1,2)बीw11+w22<w3w1एक्स+w2yw3

एक इष्टतम रेखा (रैखिक प्रतिगमन, लॉजिस्टिक प्रतिगमन, और इसके बाद) का निर्धारण करने के लिए मशीन लर्निंग एल्गोरिदम का भार है। इन्हें कुछ त्रुटि मीट्रिक के आधार पर मान । फिर आप परीक्षण कर सकते हैं कि क्या सभी बिंदुओं को सही ढंग से वर्गीकृत किया गया है। यही है, चाहे में सभी मान ऊपर के समीकरण को संतुष्ट करते हैं और इसी तरह ।बीw1,w2,w3बी

जैसा कि आप केवल इस बात में रुचि रखते हैं कि क्या इस तरह की रेखा मौजूद है, आपको मौजूदा तकनीकों का उपयोग करने की आवश्यकता है (हालांकि यह संभवतः सरल होगा)। बस मुफ्त चर संदर्भ में समानता के निम्नलिखित संग्रह को सेट करें ।w1,w2,w3

मैं = 1 , , | | एक = { ( एक 1 1 , एक 1 2 ) , ... , ( एक | एक | 1 , एक | एक | 2 ) }w1a1i+w2a2iw3 प्रत्येक, जहाँ |i=1,..,|A|A={(a11,a21),,(a1|A|,a2|A|)}

j = 1 , , | B | बी = { ( 1 1 , बी 1 2 ) , ... , ( | बी | 1 , बी | बी | 2 ) }w1b1j+w2b2j<w3 प्रत्येक, जहां |j=1,..,|B|B={(b11,b21),,(b1|B|,b2|B|)}

यदि ये बाधाएं सुसंगत हैं, तो एक रेखा मौजूद है।


5

अगर मुझे सही ढंग से याद है कि वेक्टर मशीनें सैपरेटिंग हाइपरप्लेन का समर्थन करती हैं । यदि आप आयाम चुनते हैं तो हाइपरप्लेन निश्चित रूप से एक पंक्ति बन जाती है। आपको जांच करनी पड़ सकती है कि क्या मिलने के लिए अतिरिक्त धारणाएं हैं। दो आयामों में संपूर्ण दृष्टिकोण काफी सरल हो सकता है इसलिए सामान्य दृष्टिकोण की तुलना में रनटाइम बेहतर हो सकता है।2

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.