निरंतर समय में सॉल्व करने योग्य समस्याएँ?


14

लगातार समय समय जटिलता का पूर्ण निम्न अंत है। कोई भी आश्चर्य कर सकता है: क्या कोई ऐसी चीज है जो निरंतर समय में गणना की जा सकती है? यदि हम ट्यूरिंग मशीन के मॉडल से चिपके रहते हैं, तो बहुत कुछ नहीं किया जा सकता है, क्योंकि उत्तर केवल इनपुट के निरंतर लंबाई प्रारंभिक खंड पर निर्भर कर सकता है, क्योंकि इनपुट के दूर के हिस्से भी निरंतर समय में नहीं पहुंच सकते हैं।

दूसरी ओर, अगर हम कुछ अधिक शक्तिशाली (और अधिक यथार्थवादी) यूनिट-कॉस्ट रैम मॉडल को अपनाते हैं, जिसमें पर प्राथमिक संचालन को एकल चरणों के रूप में गिना जाता है, तो हम nontrivial को हल करने में सक्षम हो सकते हैं निरंतर समय में भी कार्य। यहाँ एक उदाहरण है:O(logn)

उदाहरण: Integers , प्रत्येक बाइनरी प्रारूप में O ( लॉग एन ) बिट्स द्वारा दिया गया है ।n,k,l,dO(logn)

प्रश्न: क्या नेटटेक्स ग्राफ मौजूद है , जैसे कि इसकी शीर्ष कनेक्टिविटी k है , इसकी बढ़त कनेक्टिविटी l है , और इसकी न्यूनतम डिग्री d है ?nkld

ध्यान दें कि परिभाषा से यह भी स्पष्ट नहीं है कि समस्या एनपी में है । कारण यह है कि प्राकृतिक गवाह (ग्राफ) की आवश्यकता हो सकती है , का विस्तृत वर्णन -बिट जबकि इनपुट केवल द्वारा दिया जाता है हे ( लॉग एन ) बिट्स। दूसरी ओर, निम्नलिखित प्रमेय (देखें एक्स ग्राफल थ्योरी बाय बी बोलोबस) बचाव के लिए आता है।Ω(n2)O(logn)

प्रमेय: आज्ञा दें पूर्णांक। वर्टिकल कनेक्टिविटी k , एज कनेक्टिविटी l और न्यूनतम डिग्री d के साथ n -vertex ग्राफ मौजूद है , यदि और केवल तभी यदि निम्न में से कोई एक स्थिति संतुष्ट है:n,k,l,dnkld

  • , 0kld<n/2
  • 12d+2nkl=d<n1
  • k=l=d=n1.

चूँकि ये स्थितियाँ निरंतर समय (यूनिट-कॉस्ट रैम मॉडल में) की जाँच की जा सकती हैं, प्रमेय इस मॉडल में एक निरंतर समय एल्गोरिथ्म की ओर जाता है।

प्रश्न: निरंतर समय के एल्गोरिदम के कुछ अन्य nontrivial उदाहरण क्या हैं?


6
क्या एक संभावित जांच योग्य प्रमाण की पुष्टि करता है?
डेविड एप्पस्टीन

6
मत सोचो कि आपका उदाहरण समय है। आपके इनपुट की लंबाई m = O ( लॉग एन ) है , उस स्थिति में विशिष्ट शब्द RAM केवल O ( लॉग एम ) -बिट संचालन को एक चरण में अनुमति देगा । (वैकल्पिक wordsize इनपुट लंबाई के अनुपात अनुमति देने के लिए है, लेकिन में यह मामला एक कई "निरंतर समय" एल्गोरिदम नाम कर सकते हैं ...) आप लंबाई के एक स्ट्रिंग पर जोड़ने के लिए कोशिश कर सकते n मैं उन संख्याओं के बाद, लेकिन फिर यह नहीं देखें कि O ( 1 ) में उस प्रारूप की जाँच कैसे होगीO(1)m=O(logn)O(logm)nO(1)समय: लगता है कि आप की जाँच करने के (बाइनरी खोज के माध्यम से, कहते हैं) है कि कुल स्ट्रिंग लंबाई वास्तव में है है, जो की आवश्यकता है लॉग n समय। Ω(logn)logn
रयान विलियम्स

4
मुझे लगता है कि डेविड एप्पस्टीन का सुझाव एक और दिलचस्प दिशा की ओर इशारा करता है : यादृच्छिक ओ (1)-टाइम एल्गोरिदम पर विचार करना । कम से कम उस स्थिति में, आप उम्मीद कर सकते हैं कि एल्गोरिथ्म के कम से कम एक संभव रन में प्रत्येक इनपुट बिट तक पहुंच हो।
रेयान विलियम्स

4
यादृच्छिक ओ (1)-टाइम एल्गोरिदम का एक सरल उदाहरण अनुमानित माध्यिका है (इस अर्थ में अनुमानित है कि यह इनपुट को लगभग 50-50 विभाजित करेगा)। बस यादृच्छिक रूप से इनपुट से 1000000 तत्वों को समान रूप से चुनें, उनके माध्य की गणना करें और इसे आउटपुट करें।
जुक्का सुकोला

5
x,y,zn>2xn+yn=zn

जवाबों:


6

Nguyen और Onak द्वारा स्थानीय सुधारों के माध्यम से कागजी कॉन्स्टेंट-टाइम अप्रूवल एल्गोरिदम यादृच्छिक निरंतर समय सन्निकटन योजनाओं के कई उदाहरण देता है: अधिकतम मिलान (चल रहा समय केवल ग्राफ़ की अधिकतम डिग्री पर निर्भर करता है), सेट कवर, आदि। लेखक इस तरह के एल्गोरिदम को डिजाइन करने के लिए एक विधि प्रस्तुत करें।


5

कॉम्बीनेटरियल गेम थ्योरी में अध्ययन किए गए खेलों के कई उदाहरण हैं जहां एक गेम की स्थिति को पूर्णांक मानों की एक निरंतर संख्या द्वारा वर्णित किया जा सकता है। इनमें से कुछ के लिए, निरंतर समय में खेल के लिए एक विजेता रणनीति की गणना की जा सकती है। लेकिन वे यह भी सवाल उठाते हैं कि आपकी गणना का मॉडल क्या है।

सबसे सरल और सबसे बुनियादी जुझारू खेलों में से एक निम है: एक में सेम के ढेरों की एक निरंतर संख्या होती है, और एक ही चाल में आप एक ढेर से किसी भी संख्या में सेम निकाल सकते हैं, या तो जीत या हार (नियमों की अपनी पसंद के आधार पर) यदि आप अंतिम बीन लेते हैं। यदि आप बिटकॉइन बुलियन एक्सर ऑपरेशंस (यानी C / C ++ / Java / etc जैसे प्रोग्रामिंग भाषाओं में ^ ^ ऑपरेटर की अनुमति देते हैं) तो इष्टतम रणनीति की निरंतर समय में गणना की जा सकती है। क्या यह आपके मॉडल में एक निरंतर समय एल्गोरिथ्म है?

यहां एक ऐसा है जहां यह ज्ञात है कि एक निरंतर समय सटीक नियतात्मक एल्गोरिथ्म मौजूद है (गणना के एक संभवतः-अवास्तविक विस्तारित मॉडल में, जो आपको निरंतर समय में एक संख्या की शुद्धता का परीक्षण करने की अनुमति देता है) लेकिन यह ज्ञात नहीं है कि एल्गोरिथ्म क्या है: एक शुरुआत सिल्वर कॉइन के खेल में कदम रखें , यह निर्धारित करें कि यह एक जीत या हार कदम है। इस समस्या के लिए एक फ़्लोचार्ट बेर्लेकैम्प, कॉनवे, और गाइ, विनिंग वे में दिया जाता है , लेकिन यह जीत चाल के एक सामान्य लक्षण वर्णन के लिए काउंटरटेक्मेन्स के सीमित सेट पर निर्भर करता है, और यह ज्ञात नहीं है कि वह सेट क्या है (या यहां तक ​​कि क्या है) खाली)।

जुझारू खेल के सिद्धांत का एक और दिलचस्प उदाहरण वायथॉफ का खेल है। प्रत्येक खेल की स्थिति को पूर्णांकों की एक जोड़ी द्वारा वर्णित किया जा सकता है (अर्थात, गणना के आपके मॉडल में स्थिर स्थान), खेल में चालों में इन दो पूर्णांकों में से एक को छोटे मान से कम करना शामिल है, और जीतने की रणनीति में ऐसी स्थिति में जाना शामिल है जहां इन दो पूर्णांकों के बीच का अनुपात यथासंभव स्वर्णिम अनुपात के करीब है। लेकिन कई गेम पोजीशन में एक विकल्प होता है: आप दो पूर्णांकों के बड़े को या तो उस बिंदु तक कम कर सकते हैं, जहाँ यह (लगभग) छोटे अनुपात के सुनहरे अनुपात या सुनहरे अनुपात द्वारा विभाजित छोटे पूर्णांक है। इन दो विकल्पों में से केवल एक जीत कदम होगा। तो इष्टतम रणनीति को अंकगणित संचालन की एक निरंतर संख्या के संदर्भ में परिभाषित किया जा सकता है, लेकिन इन कार्यों में एक अपरिमेय संख्या शामिल है, स्वर्ण अनुपात। क्या आपके मॉडल में एक निरंतर समय एल्गोरिथ्म है? हो सकता है यह'nlogn


धन्यवाद, ये सभी दिलचस्प उदाहरण हैं। वे इस तथ्य पर भी प्रकाश डालते हैं कि "निरंतर समय" की अवधारणा जितना मैंने सोचा था उससे कम स्पष्ट है ...
एंड्रास फरगो

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