एक एल्गोरिथ्म समय जटिलता एक मनमाना इनपुट प्रोग्राम की भविष्यवाणी किस हद तक कर सकता है?


23

लंगड़ा समस्या कहा गया है कि यह असंभव है एक प्रोग्राम है जो किसी अन्य प्रोग्राम द्वारा हाल्ट निर्धारित कर सकते हैं, के लिए लिखने के लिए सभी संभव इनपुट कार्यक्रमों

हालाँकि, मैं निश्चित रूप से एक प्रोग्राम लिख सकता हूँ, जो इस तरह के प्रोग्राम के रनिंग टाइम की गणना कर सकता है:

for(i=0; i<N; i++)
    { x = 1; }

और एन की एक समय जटिलता लौटाएंN बिना इसे चलाए बिना, ।

अन्य सभी इनपुट कार्यक्रमों के लिए, यह एक झंडा लौटाएगा, यह दर्शाता है कि यह समय-जटिलता निर्धारित करने में असमर्थ था।

मेरा सवाल यह है:

ऐसी कौन सी परिस्थितियाँ होनी चाहिए, जैसे कि हम किसी दिए गए प्रोग्राम की समय-जटिलता को एल्गोरिदम के रूप में निर्धारित कर सकते हैं?

* अगर कोई विवादास्पद संदर्भ या समीक्षा लेख है, तो मैं टिप्पणियों में इसके लिंक की सराहना करूंगा।


1
(1) "O- संकेतन" का अर्थ "समय जटिलता" नहीं है। (2) यह स्पष्ट नहीं है कि आप "O (अनंत)" से क्या मतलब है। यदि संभव हो तो एक नए अंकन का आविष्कार करने से बचें। (३) यह तय करना कि किसी दिए गए कार्यक्रम में बाधा आती है या नहीं और कार्यक्रम की समय जटिलता पर एक स्पष्ट ऊपरी सीमा अलग है।
त्सुयोशी इतो

1
मैं प्रतिबंधित कक्षाओं में कार्यक्रमों की समय जटिलता का उल्लेख करने से परिचित नहीं हूं, लेकिन उन कार्यक्रमों के एक वर्ग की जांच हो सकती है जिन्हें "बाउंडेड लूप प्रोग्राम" कहा जाता है, जिसके लिए समय जटिलता को बाध्य करना आसान है। मुझे याद है कि Uwe Schöning और Randall J. Pruim द्वारा सैद्धांतिक कंप्यूटर विज्ञान के रत्न 3 के अध्याय 3 में बंधे हुए लूप कार्यक्रमों पर चर्चा की गई है , लेकिन अध्याय आपके प्रश्न के लिए कितना प्रासंगिक है, मुझे यकीन नहीं है।
१२:३२ पर त्सुयोशी इतो

4
मैं थोड़ा उलझन में हूँ। यह किस तरह से दायरे से बाहर है? ओपी के प्रश्न का एक उचित उत्तर भाषा के टुकड़े (या खंडों के वर्ग) होगा जिसके लिए चल रहे समय को एल्गोरिथम रूप से निर्धारित किया जा सकता है।
सुरेश वेंकट


7
मुझे इस टिप्पणी थ्रेड पर बहुत देर हो चुकी है। हमें लगता है कि इस क्षण को नौसिखिया इश्स महक रहा है। मैं उंगलियों से इशारा नहीं कर रहा हूं। मैं इस वृत्ति को खुद महसूस करता हूं। शायद हमें जेंटलर होना चाहिए। ओपी क्षेत्र या शर्तों से परिचित नहीं होना स्वीकार किया। सवाल-जवाब की साइट का क्या मतलब है अगर हम केवल उन लोगों को बर्दाश्त करते हैं जो वास्तव में जानते हैं कि वे क्या चाहते हैं, और इसे अपनी भाषा में पूछें।
विजय डी

जवाबों:


23

सामान्य तौर पर आप कार्यक्रमों को रोकने के लिए भी जटिलता का निर्धारण नहीं कर सकते हैं: को कुछ मनमाना ट्यूरिंग मशीन होने दें और p T को प्रोग्राम होने दें (जो हमेशा 0 देता है):टीपीटी

input: n
run T for n steps
if T is in halting state, output: 0
otherwise, loop for n^2 steps and output: 0

यह स्पष्ट है कि यह सामान्य रूप से अनिर्दिष्ट है कि क्या पीटी रैखिक-समय या द्विघात-समय है।

हालांकि, कार्यक्रम जटिलता के प्रभावी अभिकलन पर बहुत काम किया गया है। मुझे विशेष जटिलता सिद्धांत के लिए विशेष शौक है जिसका उद्देश्य ऐसी भाषाएं बनाना है जो विशेष निर्माण या प्रकार के विषयों का उपयोग करते हुए, किसी को केवल उन कार्यक्रमों को लिखने की अनुमति देता है जो एक निश्चित अच्छी तरह से परिभाषित जटिलता वर्ग में रहते हैं। जिस चीज को मैं चमत्कार मानता हूं, उस वर्ग के लिए ये भाषाएं अक्सर पूरी होती हैं!

एक विशेष रूप से अच्छा उदाहरण इस पेपर में जे.वाई द्वारा वर्णित है। मैरियन, जो एक छोटी अनिवार्य भाषा का वर्णन करता है, जिसमें सूचना-प्रवाह और सुरक्षा विश्लेषण तकनीकों से प्रेरित एक प्रकार का अनुशासन है, जो पी में एल्गोरिदम के एक लक्षण वर्णन की अनुमति देता है ।


साइड नोट के रूप में, एपिग्राम भी देखें, जो एक भाषा है जो समाप्ति की गारंटी दे सकती है।
Realz Slaw

यह एक अच्छी शुरुआत है, लेकिन क्या कहने के लिए कुछ और है? (उदाहरण के लिए, मुझे ऐसा लगता है कि किसी दिए गए प्राथमिक पुनरावर्ती कार्य के क्रम को गणना करने के लिए सीधा होना चाहिए, फिर भी ऐसे कार्य घातीय पदानुक्रम में किसी भी समस्या का समाधान कर सकते हैं ....)
usul

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

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

यह बहुत दिलचस्प है क्रिस! क्या आपके पास एक संदर्भ है? वास्तव में यह जवाबी लगता है: मुझे संदेह होगा कि आदिम पुनरावर्ती कार्य किसी दिए गए कई चरणों के लिए सामान्य पुनरावर्ती कार्यों का अनुकरण कर सकते हैं, जो तब गति को कुछ स्थिर कारक तक सीमित कर देगा।
कोड़ी

11

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

कोडी ने कहा कि समस्या सामान्य रूप से अनिर्दिष्ट है। यह समस्या समाप्ति साबित करने की तुलना में कठिन है, क्योंकि एक जटिलता को प्राप्त करने से बाध्य होता है कि कार्यक्रम भी समाप्त हो जाता है। ऐसी समस्या के लिए दो दृष्टिकोण हैं। एक कार्यक्रम विश्लेषण से है। एक काउंटर को जोड़ने और इसके मूल्य का अनुमान लगाने का विचार 70 के दशक से मौजूद है। यह एन्कोडिंग किसी इनवॉयरमेंट की गणना करने के लिए चल रहे समय को निर्धारित करने की समस्या को कम करता है।

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

दोनों क्षेत्रों के लिए कुछ संदर्भों का पालन करते हैं।

  1. स्पीड प्रोजेक्ट , प्रोग्राम एनालिसिस वर्क की एक विशिष्ट लाइन है, जो प्रोग्राम में एक बार पेश किए जाने वाले काउंटरों पर सीमा को खोजने के तरीके पर केंद्रित है। काउंटर समय या स्थान की खपत को माप सकते हैं।
  2. बहुभिन्नरूपी परिशोधन विश्लेषण , जन हॉफमैन, क्लॉस आइहेलिग, मार्टिन हॉफमैन, एसीएमएलएल 2012
  3. इंपीडेटिव प्रोग्राम्स के डिसीडेबल ग्रोथ-रेट प्रॉपर्टीज़ पर , अमीर बेन अमराम, इंप्लाटिकल कम्प्यूटेशनल कम्प्लेक्सिटी 2010 में विकास। यह सिंटैक्टिक प्रतिबंधों द्वारा अनिवार्य कार्यक्रमों की जटिलता को सीमित करने पर काम की एक सुंदर रेखा है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.