पॉसेट के लिए द्विआधारी खोज सामान्यीकरण?


28

मान लीजिए कि मेरे पास एक पोसेट "एस" है और एस पर एक मोनोटोनिक "पी" समर्पित है। मैं एस संतोषजनक पी के एक या सभी अधिकतम तत्वों को खोजना चाहता हूं।

संपादित करें : मैं पी के मूल्यांकन की संख्या को कम करने में रुचि रखता हूं ।

इस समस्या के लिए क्या एल्गोरिदम मौजूद हैं और एस पर उन्हें कौन से गुण और अतिरिक्त संचालन की आवश्यकता है?

महत्वपूर्ण विशेष मामलों के बारे में क्या है, जैसे:

  • एस एक रैखिक क्रम है - तब तक नियमित बाइनरी खोज कार्य करता है, जब तक कि आपके पास "मध्य खोजें" ऑपरेशन होता है
  • S एक जाली है
  • S एक सबसेट जाली है
  • S एक मल्टीसेट जाली है
  • ...

बाद के दो मामले विशेष रूप से महत्वपूर्ण लगते हैं जैसे प्रयोग डिजाइन के लिए - आपके पास बूलियन या वास्तविक मापदंडों का एक सेट है, और आप उनमें से सबसे छोटे संभव संयोजन को ढूंढना चाहते हैं जो एक विशेष पैटर्न (जैसे एक असफल परीक्षा) को पुन: उत्पन्न करता है।


1
'मल्टीसेट' जाली क्या है?
सुरेश वेंकट

1
यह वह जाली है जिसके तत्व मैपिंग एक्स -> एन हैं, मीट एलिमिनेशन मिन है और जॉइन एलिमेंट वाइज मैक्स है। इसे कोडोमैन के रूप में एन के बजाय किसी भी जाली के लिए सामान्यीकृत किया जा सकता है।
जकफ

जवाबों:


15

मैंने इस बारे में बहुत सोचा नहीं है, इसलिए कृपया मुझे सही करें अगर मैं गलत हूं।

कहते हैं कि पॉस की चौड़ाई है।w

  1. पॉज़ के लिए जो असंबद्ध जंजीरों का संघ है, आपको प्रत्येक श्रृंखला में बाइनरी खोज की क्वेरी जटिलता पर मानक निचली बाउंड को लागू करके कम से कम मूल्यांकन की आवश्यकता है ।wwlognP

  2. चूंकि आप मुफ्त में तुलना देते हैं, आप मुफ्त में चेन में पॉज़ेट के एक श्रृंखला अपघटन की गणना कर सकते हैं। संतुष्ट करने वाले पहले तत्व की पहचान करने के लिए प्रत्येक श्रृंखला पर द्विआधारी खोज करें । फिर पहचाने गए तत्वों पर जाएं और किसी भी प्रभुत्व को हटा दें। के मूल्यांकन की संख्या है । यह सभी अधिकतम तत्वों की पहचान करता है, क्योंकि प्रति श्रृंखला अधिकतम एक अधिकतम तत्व हो सकता है।wPPO(wlogn)


जोड़ा गया: वास्तव में मैं सब्सेट ( EDIT : domotor ने अपने उत्तर में सामान्य रणनीति का वर्णन किया है ) की जाली के लिए बहुत बेहतर ( ) करने के लिए एक सरल पुनरावर्ती एल्गोरिथ्म देख रहा हूं । यहाँ मैं मान रहा हूँ कि नीचे की ओर मोनोटोनिक है (यानी सबसेट एक निचला सेट), जो मुझे लगता है कि आपका मतलब है। तो, यहाँ निम्न सेट के एक सदस्य को खोजने के लिए एल्गोरिथ्म है:O(n)2[n]P{X:P(X)=1}

a) टेस्ट । अगर 0 है, तो बंद करो।P()

b) टेस्ट । P({n})

द्वि) यदि 0 है, तो ठीक करें (ठीक है, क्योंकि कोई भी सेट नहीं है जिसमें कम सेट में हो सकता है)।2[n1]n

b.ii) यदि 1 है, तो उप-वर्ग में निचले सेट का एक सदस्य मौजूद है । यह उदात्तता आइसोमॉर्फिक है, इसलिए एक बार फिर हम पुनरावृत्ति कर सकते हैं। अधिक सटीक रूप से, हम एल्गोरिथ्म को लिए चला सकते हैं , लेकिन जब एल्गोरिथ्म का मूल्यांकन करने के लिए कहता है , तो हम मूल्यांकन करते हैं जहां ।{X:nX}2[n1]2[n1]P(Y)P(X)X=Y{n}

इसलिए प्रत्येक चरण में हम एक उदात्त पर पुनरावृत्ति करते हैं जो मूल एक का आधा आकार है। कुल मिलाकर, हमें सबसे अधिक बार का मूल्यांकन करने की आवश्यकता है (वास्तव में आप एल्गोरिथ्म को लागू करने के लिए विधेय बार मूल्यांकन कर सकते हैं क्योंकि योशियो बताते हैं, क्योंकि आपको केवल एक बार जांच करने की आवश्यकता है )।P2nn+1


वाह, इतना आसान विचार! धन्यवाद - मैं कुछ सोचता हूँ कि क्या यह इष्टतम लगता है या नहीं :)
jkff

यह भी कम डब्ल्यू लॉग एन से वास्तव में है, क्योंकि योग श्रृंखला लंबाई की n है। मुझे लगता है कि अधिकतम w लॉग (n / w) के आसपास है।
जकफ

ठीक है, रैखिक आदेशों के लिए यह द्विआधारी खोज देता है, एक सबसेट जाली के लिए यह C (n, n / 2) लॉग (2 ^ n / C (n, n / 2)) ~ exp (n) * n देता है। बहुत तेज नहीं है, लेकिन या तो बहुत अधिक नहीं अपनाना है, क्योंकि वास्तव में कई जवाब हो सकते हैं। हालांकि , एक अधिकतम सबसेट को खोजने के लिए , आपको बस किसी एक श्रृंखला पर द्विआधारी खोज की आवश्यकता है - यह बहुत अच्छा है और मैं अब इसे नहीं सोचने के लिए खुद को बेवकूफ कहता हूं। एक बार फिर धन्यवाद!
जकफ

2
मुझे लगता है कि संबंध तोड़ना जंजीरों आप एक कम देने के लिए बाध्य कम से कम (नियतात्मक एल्गोरिदम के लिए)। एक विरोधी के बारे में सोचें जो अंतिम श्रृंखला में एक एकल समाधान "छुपाता" है। याओमा के न्यूनतम सिद्धांत से एक यादृच्छिक रूप से निम्न बाउंड ऑफ का पालन करना चाहिए। जटिलता साथ एक एकल तत्व खोजना दिलचस्प हो सकता है। ww+lognΩ(w)w+logn
साशो निकोलेव

1
@YanKingYin एक जाली श्रृंखला (एक से अधिक) का संघ नहीं हो सकता है, क्योंकि प्रत्येक दो तत्वों का एक वर्चस्व होना चाहिए। एक पोज़ एक असम्बद्ध श्रृंखला का एक संघ है यदि इसे विभाजित किया जा सकता है ताकि विभिन्न भागों के तत्व अतुलनीय हों और एक ही भाग के भीतर के तत्व कुल क्रम को स्वीकार करते हैं।
साशो निकोलेव


8

Daskalakis एट अल द्वारा हाल ही में एक पेपर से पता चलता है कि आकार और चौड़ाई एक स्थिति के लिए , न्यूनतम तत्व समय में पाए जा सकते हैं । क्या दिलचस्प है कि उनके सार में, वे कहते हैंnwO(wn)

यह कुशल स्थिर और गतिशील डेटा संरचनाओं को खोजने के लिए भी दिलचस्प होगा जो आंशिक आदेशों के लिए एक ही भूमिका निभाते हैं जो ढेर और बाइनरी सर्च ट्री कुल आदेशों के लिए खेलते हैं।


हे, लॉग (n) की तुलना में बहुत प्रेरणादायक नहीं लगता है :) लेकिन धन्यवाद वैसे भी!
जकफ

लेकिन बात यही है। डेटा संरचनाओं के बिना आप पूरी तरह से ऑर्डर किए गए सेट के लिए भी लॉग एन नहीं प्राप्त कर सकते हैं, क्योंकि आप कर सकते हैं सभी स्कैन है। यह वास्तव में एक BST समकक्ष की कोशिश करने और खोजने के लिए एक बहुत अच्छा सवाल है।
सुरेश वेंकट

ठीक है - मैं विधेय P के मूल्यांकन की संख्या के मामले में जटिलता की बात कर रहा हूं, तुलनात्मक विधेय की नहीं।
jkff

1
एक अर्थ में हाँ, लेकिन यह पूर्ण उत्तर होने से बहुत दूर है - जैसे कि यह 1d या 2d मामलों के लिए द्विशताब्दी नहीं देता है :) आप जड़ों के साथ क्या करने का सुझाव देते हैं?
18

1
अभी तक यकीन नहीं। बहुत अधिक सोचना। लेकिन यह एक उत्कृष्ट प्रश्न है।
सुरेश वेंकट

4

यदि एस इनपुट का हिस्सा है, तो एक अधिकतम तत्व खोजने की समस्या पहले से ही `` एनपी-हार्ड 'बन जाती है (यदि हम जाली के बारे में सोचते हैं जैसे कि इसके तत्व n लंबे लंबे तार हैं), जैसे आप कह सकते हैं अगर CNF (x) सही नहीं है और CNF (y) कुछ निश्चित CNF के लिए सही है।x<y

इसके अलावा, पी को संतुष्ट करने वाले कई अधिकतम तत्व हो सकते हैं, इसलिए आउटपुट के लिए भी इन सभी में लंबा समय लग सकता है, इसलिए मुझे लगता है कि केवल एक ही मैक्सिमल मिलने की उम्मीद है।

सामान्य तौर पर, द्विआधारी खोज काम करती है यदि आप ऐसे तत्वों का पुनरावर्ती रूप से चयन कर सकते हैं जो आपके द्वारा उपरोक्त तत्वों के साथ या तो छोड़ दिए जाते हैं, या उपरोक्त तत्व हटा दिए जाते हैं, और ऐसे प्रत्येक सेट में तत्वों का एक निश्चित अनुपात हटा दिया जाता है।

उदाहरण के लिए। यदि एस एक निश्चित आयामी ग्रिड है, तो एक तेज एल्गोरिथ्म है: हमेशा दूसरों को न्यूनतम रखते हुए एक समन्वय को आधा करें, इसलिए पहले चरण में उदाहरण पूछें (एन / 2,0, ..., 0)।

एक महत्वपूर्ण संबंधित प्रमेय है टार्स्की निश्चित बिंदु प्रमेय, जहां पी के बजाय आप एक जाली से खुद के लिए एक मोनोटोन मैपिंग है। प्रमेय कहता है कि निश्चित बिंदु एक जाली बनाते हैं। हमने Jaroslaw Byrka और Paul Duetting के साथ साबित किया कि इस सेटिंग में यदि जाली एक d- आयामी ग्रिड है, तो आप समय के बारे में एक निश्चित बिंदु पा सकते हैं जहां एल्गोरिथ्म बाइनरी खोज का एक सामान्य सामान्यीकरण है।nd


मुझे डर है कि मैं पहले पैराग्राफ को नहीं समझता। आपकी कमी में, क्या आपके पास पोस S में सभी n-बिट स्ट्रिंग्स हैं और क्या उन्हें इनपुट के हिस्से के रूप में दिया गया है? यदि हां, तो हम बहुपद समय में सभी तारों से गुजर सकते हैं।
योशियो ओकामोटो

1
@ योशियोओकामोटो: मुझे लगता है कि उस पैराग्राफ में धारणा यह है कि एस की तुलना बूलियन सर्किट के रूप में दी गई है। (लेकिन ऐसा कुछ भी नहीं है, जो पोज़ेट में खोज से जुड़ा हो और इसलिए मेरे लिए दिलचस्प नहीं है।)
त्सुयोशी इतो

@ त्सुयोशी: धन्यवाद। यह काफी काम की बात है।
योशियो ओकामोटो

4

के सभी अधिक से अधिक तत्वों खोजने की समस्या के लिए सबसेट की जाली से अधिक , का एक सकारात्मक बूलियन समारोह का सही अनुमान को यह मात्रा बूलियन चर। यदि आप केवल के मूल्यांकन की संख्या (कम्प्यूटेशनल जटिलता नहीं) के बारे में परवाह करते हैं , तो आप लॉजिक-आधारित विधियों , अध्याय 10, धारा 10.2.4, या अनुभाग के अंतिम पैराग्राफ के माध्यम से डेटा माइनिंग एंड नॉलेज डिस्कवरी में एक सर्वेक्षण पा सकते हैं। इस लेख का ६.१ , जिसे मैंने इस उत्तर के द्वारा इंगित किया था (सावधान रहें, इस लेख के बाकी कम्प्यूटेशनल जटिलता से संबंधित हैं, न कि केवल के मूल्यांकन की जटिलता )।P2[n]nPP

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