क्या वास्तव में कम सीमा साबित करना संभव है?


24

किसी भी कम्प्यूटेशनल समस्या को देखते हुए, क्या इस तरह की गणना के लिए कम सीमा खोजने का कार्य वास्तव में संभव है? मुझे लगता है कि यह उबलता है कि एक एकल कम्प्यूटेशनल चरण को कैसे परिभाषित किया जाता है और हम किस मॉडल का उपयोग प्रमाण के लिए करते हैं, लेकिन यह देखते हुए कि क्या हम वास्तव में सामान्य रूप से कम बाध्य साबित होते हैं? क्या मैं मतलब है कि हम जैसे "समस्या कुछ साबित कर सकते हैं है से अधिक तेजी से हल नहीं किया जा सकता है समय" के बजाय "समस्या में हल किया जा सकता समय या तेज"?टी ( एक्स ) एक्स टी ( एक्स )Xt(X)Xt(X)

मैंने विशेष रूप से निचली सीमा और उनके साक्ष्यों के बारे में जानकारी प्राप्त करने की कोशिश की है, लेकिन मैं वास्तव में इस विषय पर पुस्तकों / पत्रों / वेबसाइटों पर कोई रुचि, कोई सिफारिश नहीं पा सकता हूं?

जवाबों:


19

हम इस तरह की बातों को सही साबित कर सकते हैं।

कई समस्याओं में मामूली निचली सीमाएँ होती हैं, जैसे कि संख्याओं का एक सेट (जो किसी भी तरह से संरचित / संरचित नहीं है) के न्यूनतम को खोजने में कम से कम समय लगता है। इसके लिए प्रमाण सरल है: एक काल्पनिक एल्गोरिथ्म जो समय में चलता है, इनपुट में सभी नंबरों की जांच नहीं कर सकता है। इसलिए अगर हम कुछ इनपुट पर एल्गोरिथ्म चलाते हैं, तो हम देख सकते हैं कि इसने इनपुट के किसी विशेष तत्व की कभी जांच नहीं की। उस तत्व को न्यूनतम में बदलकर, हम विफल होने के लिए एल्गोरिथ्म प्राप्त कर सकते हैं।Ω ( एन ) ( n )nΩ(n)o(n)

तुलना-आधारित मॉडल में छंटाई के लिए एक कम तुच्छ निचला बाउंड । इसके लिए सबूत निम्नलिखित पंक्तियों के साथ जाता है: संख्याओं का इनपुट दिया गया , वहाँसंभव आउटपुट (इनपुट सॉर्ट की गई सूची का कोई भी क्रमचय हो सकता है, इसलिए आउटपुट इनपुट के किसी भी क्रमचय हो सकता है)। यदि हम केवल तुलना करने तक सीमित हैं, तो हमारे एल्गोरिथ्म (औसतन) को कम से कम तुलना करने की आवश्यकता है ताकि दे सकेंविभिन्न आउटपुट।n n ! log 2 ( n ! ) = Ω ( n log n ) n !Ω(nlogn)nn!log2(n!)=Ω(nlogn)n!

कम सीमा और भी मजबूत हो सकती है। कई समस्याएं हैं (विशेष रूप से समस्याएं) जिनके लिए एक घातीय कम बाध्य है। इस वर्ग की समस्याओं में गेम के लिए इष्टतम रणनीतियाँ शामिल हैं जैसे (सामान्यीकृत) शतरंज, चेकर्स और गो। इसका प्रमाण टाइम हायरार्की प्रमेय के माध्यम से है , जिसमें कहा गया है ( पर कुछ प्रतिबंधों के अधीन ):EXPTIMEf

एक फ़ंक्शन को देखते हुए , एक कम्प्यूटेशनल समस्या मौजूद है जिसे में हल किया जा सकता है लेकिन समय में हल नहीं किया जा सकता है ।( एफ ( एन ) ) ( एफ ( एन )fO(f(n))o(f(n)logn)

तो बुनियादी तौर पर, आप एक समारोह के बारे में सोच सकते हैं, अगर किसी समस्या की वजह हल करने के लिए है कि अधिक समय की आवश्यकता है मौजूद है।f

अंत में, आवश्यक नहीं है कि एक और कम समय की बाध्यता साबित हो, लेकिन कुछ और भी मजबूत एक समस्या की अनिर्वायता दिखा रहा है (जैसे रुक, पोस्ट पत्राचार)।


इनपुट या आउटपुट का आकार सबसे सामान्य निम्न सीमाएं हैं।
राफेल

14

हाँ, यह मुमकिन है। क्लासिक उदाहरण यह तथ्य है कि किसी भी तुलना-आधारित सॉर्टिंग एल्गोरिथ्म को लंबाई की सूची को सॉर्ट करने के लिए तुलना की आवश्यकता होती है ।nΩ(nlogn)n

हालांकि, ऊपरी सीमा की तुलना में कम सीमा बहुत कठिन साबित होती है। यह साबित करने के लिए कि तुलना के लिए एक छँटाई एल्गोरिथ्म है , आपको बस ऐसे एल्गोरिथ्म (मर्ज सॉली - वॉइला !) की आवश्यकता है। लेकिन एक कम बाध्य के लिए, आपको किसी तरह यह दिखाने की आवश्यकता है कि किसी विशेष वर्ग में कोई एल्गोरिथ्म आपकी समस्या को हल नहीं कर सकता है। ऐसा करने की कठिनाई को इस तथ्य से स्पष्ट किया जाता है कि हम केवल यह जानते हैं कि भले ही हम जानते हैं कि कम से कम उन लोगों के समावेशन में से एक (सख्त है अंतरिक्ष पदानुक्रम प्रमेय) और ज्यादातर लोगों लगता है कि वे कर रहे हैं सभी सख्त।एलएन एलपीएन पीपी एस पी सी O(nlogn)LP S P A C E

LNLPNPPSPACE,
LPSPACE

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


मुझे लगता है कि यह वही है जिसके बाद मैं "..क्यों किसी तरह यह दिखाने की जरूरत है कि किसी विशेष वर्ग में कोई एल्गोरिथ्म आपकी समस्या को हल नहीं कर सकता है।", यह वह हिस्सा है जिसे मैं थोड़ा भ्रमित करता हूं क्योंकि मैं वास्तव में सहजता से नहीं देख सकता कि कोई कैसे कर सकता है। ऐसी बात, सामान्य तौर पर कम से कम। जैसा कि @Tom van der Zanden ने उस न्यूनतम संख्या को खोजने का वर्णन किया है जिसे मैं समझता हूं, लेकिन क्या यह दृष्टिकोण सामान्य है? मैं सामान्य का मतलब सबूत के निर्माण के दौरान इस तरह के तर्क देने में होता है? लिंक के लिए भी धन्यवाद।
15

1
@ user1288420 आप अकेले नहीं हैं। अगर कोई भी सहजता से देख सकता है कि यह कैसे साबित किया जाए कि किसी विशेष वर्ग में कोई एल्गोरिथ्म कुछ समस्या को हल नहीं कर सकता है, तो हमारे पास कई और कम-बाध्य परिणाम होंगे! आमतौर पर, आपको कुछ संपत्ति के साथ आने की आवश्यकता होती है जो कक्षा में प्रत्येक एल्गोरिथ्म में होती है, और यह दिखाती है कि संपत्ति कुछ समस्या को हल करने से रोकती है। उदाहरण के लिए, हर ट्यूरिंग मशीन जो सबलाइन के समय में चलती है, उसमें ऐसी संपत्ति होती है कि वह इसके सभी इनपुट को भी नहीं पढ़ सकती है। इसका मतलब है कि यह ज्यादातर समस्याओं को हल नहीं कर सकता है। यह तुच्छ है; दुर्भाग्य से, अधिक दिलचस्प मामले असंभव लग रहे हैं।
डेविड रिचेर्बी

3

एक तुच्छ उदाहरण लेने के लिए, आप उन सभी की जांच किए बिना नंबर के सेट से सबसे बड़ी संख्या नहीं पा सकते हैं, जिन्हें रैखिक समय की आवश्यकता होती है। कोई बड़ा प्रमाण नहीं। लेकिन ऐसे एल्गोरिदम हैं जिन्हें हमेशा सभी डेटा पढ़ने की आवश्यकता नहीं होती है। एक अच्छा उदाहरण एक स्ट्रिंग में एक पैटर्न की सभी घटनाओं को खोज रहा है, जिसे पूरे स्ट्रिंग (बॉयर-मूर एल्गोरिथ्म) को पढ़ने की आवश्यकता नहीं हो सकती है। लेकिन मुझे पहले से ही जो उत्तर दिया गया है, उसे दोहराना नहीं चाहिए, शायद इससे भी बेहतर।n

हालांकि, सवाल में एक बिंदु यह है कि कम बाउंड (या सामान्य रूप से जटिलता सीमा) के बारे में कुछ और टिप्पणी के लिए कॉल करता है।

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

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

हालांकि, दो विकल्प संबंधित होना चाहिए।

आप विचार कर सकते हैं कि एक संख्या डेटा की एक एकल इकाई है, यदि आप पूर्णांकों पर होने वाले संचालन, जैसे कि जोड़ या तुलना, इकाई संचालन मानते हैं। आप यह भी विचार कर सकते हैं कि यह एक संख्या का प्रतिनिधित्व करने के लिए अंक लेने के बाद से डेटा की इकाई है । फिर, ज़ाहिर है, जोड़ और तुलना अब इकाई संचालन नहीं हैं, और उनकी लागत ऑपरेंड के मूल्यों पर निर्भर करती है।लॉग एन O ( लॉग एन )nlognO(logn)

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


एक स्ट्रिंग में एक पैटर्न के सभी घटनाओं को ढूँढना तुच्छ रूप से पूरे स्ट्रिंग को पढ़ने की आवश्यकता होती है: यदि पैटर्न "ए" है, तो आप स्ट्रिंग के हर एक वर्ण की जांच किए बिना सभी घटनाओं को नहीं पा सकते हैं।
डेविड रिचेर्बी

1
@DavidRicherby वास्तव में हमेशा नहीं। बॉयर-मूर एल्गोरिदम पैटर्न के अंत से शुरू होता है, इस प्रकार स्ट्रिंग में कूदता है। यदि प्रयास किया गया मैच विफल हो जाता है, तो उसे स्ट्रिंग की शुरुआत पढ़ने की ज़रूरत नहीं है। और इसमें पैटर्न की संरचना के कारण विफल होने के लिए किए गए प्रयासों को छोड़ने के लिए नूथ-मॉरिस-प्रैट एल्गोरिदम के समान अनुकूलन भी है। बेशक, ऐसे पैटर्न हैं जिन्हें पूरे स्ट्रिंग को पढ़ने की आवश्यकता होती है।
babou

@DavidRicherby आपने क्यों पूछा, आपको पता था?
बबौ

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

1
@DavidRicherby मेरी बात का मतलब आप समझ गए हैं। मुझे कहना चाहिए था बजाय नहीं हो सकता है । यह एक टिप्पणी शैली बनाने के लिए नहीं बुलाया पाठकों को विश्वास है कि मैं बकवास बात कर रहा था। और ऐसा करते समय, आपने वास्तव में एक ही लापरवाह गलती की: " एक स्ट्रिंग में एक पैटर्न के सभी घटनाओं को खोजने के द्वारा तुच्छ रूप से पूरे स्ट्रिंग को पढ़ने की आवश्यकता होती है ", जब आपको कहा जाना चाहिए " एक स्ट्रिंग में एक पैटर्न के सभी घटनाओं को खोजने की आवश्यकता हो सकती है। पूरी स्ट्रिंग पढ़ना ”। मैं केवल यह बताना चाहता हूं कि इनपुट को पढ़ना हमेशा आवश्यक नहीं हो सकता है, मेरे पिछले उदाहरण को कम करने के लिए।
बबौ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.