संपादित करें: मैंने जो तर्क दिया था, वह गलत नहीं था, लेकिन यह थोड़ा भ्रामक था, इसमें केवल यह दिखाया गया है कि ऊपरी बाउंड को कुछ लिए तंग होना चाहिए (जो वास्तव में तुच्छ है, क्योंकि इसे तंग करना होगा जब और बाउंड 1) है।nn=2
यहाँ एक अधिक सटीक तर्क है। यह दिखाता है कि यदि
किसी विशेष लिए ऊपरी बाउंड ऑफ़ है , तो सभी लिए आवश्यक ऑर्कल कॉल्स की संख्या ।log2nn nO(1)
(निश्चित रूप से यह है नहीं , तो ऊपरी बाध्य ढीला कभी नहीं है! लेकिन मैं वास्तव में उस यहाँ साबित नहीं करते, और समस्या के लिए अन्य जवाब दिया, इसके लायक पीछा नहीं लगता है।)O(1)
अधिकतम आउटपुट की गणना करने की समस्या पर विचार करें :
दिया गया n-tuple (M1,…,Mn) ट्यूरिंग मशीनों की, अधिकतम उत्पादन की गणना करें (ट्यूरिंग मशीनों की जो रुका हो, यदि चालू हो ϵ)। यदि उनमें से कोई भी रुका नहीं है, तो 0 लौटें।
के कार्य के रूप में nइस फ़ंक्शन की गणना करने के लिए आवश्यक ओरेकल कॉल्स की सबसे खराब स्थिति वही है जो यह तय करने के लिए आवश्यक संख्या है nदी गई मशीनें रुक जाती हैं। (अगर मुझे पता है कि कौन सी मशीनें रुकती हैं, तो मैं आसानी से अधिकतम आउटपुट की गणना कर सकता हूं। इसके विपरीत, अगर मैं जानना चाहता हूं कि कौन सी मशीनें रुकती हैं, तो समस्या बयान में निर्माण के बाद, मैं मशीनों का निर्माण कर सकता हूं{M′i} (i=1,2,…,n)
कहाँ पे M′i सभी चलाता है n समानांतर में मशीनें दी गईं, फिर हाल्ट और आउटपुट i अगर iउनमें से कभी भी रुक जाओ। अधिकतम आउटपुट मुझे उस संख्या को बताएगा जो रुका हुआ है। उससे मैं वास्तव में गणना कर सकता हूं कि कौन सा पड़ाव है।)
अब छोडो n0 सबसे छोटा पूर्णांक हो n (यदि कोई है) तो यह है कि निम्नलिखित रखती है:
का उपयोग करते हुए C(n)=max{k∈Z:2k<n}ओरेकल कॉल, एक की अधिकतम उत्पादन की गणना कर सकता दी मशीनों। (यही है, ऊपरी बाध्य लिए तंग नहीं है ।)nn
स्पष्ट रूप से , क्योंकि । वास्तव में, भी, क्योंकि , लेकिन यह दी गई मशीनों (बिना किसी ओरेकल कॉल के) के अधिकतम आउटपुट की गणना के । अब बड़ा पर विचार करें :n0>1C(1)=−1n0>2C(2)=02n
दावा करें: यदि परिमित है, तो, किसी भी , कोई oracle कॉल में दी गई मशीनों के अधिकतम आउटपुट की गणना कर सकता है । n0nnC(n0)(ध्यान दें कि यदि परिमित है, तो ।)n0C(n0)=O(1)
सबूत। । हम इसे पर प्रेरण द्वारा साबित करते हैं । आधार मामले , जो और की परिभाषा के ।nn≤n0n0C
बता दें कि TM है, जो किसी भी ट्यूरिंग मशीनों को देखते हुए, अधिकतम आउटपुट का उपयोग केवल कॉल के लिए करता है।Q0n0C(n0)
किसी भी ठीक करें । किसी भी मशीन को देखते हुए अधिकतम आउटपुट की गणना निम्नानुसार करता है।n>n0nM1,…,Mn
पहले मशीनों पर ध्यान दें। इन मशीनों पर चलाने पर विचार करें । ध्यान दें कि बनाता ओरेकल के लिए कॉल, और वहाँ केवल हैं इन कॉल करने के लिए ओरेकल द्वारा संभव प्रतिक्रियाओं। ध्यान दें कि परिभाषा । बता दें कि ने th संभव प्रतिक्रिया को निरूपित किया । प्रत्येक के लिए , एक मशीन का निर्माण
कि simulates इन मशीनों पर इस प्रकार है:M1,…,Mn0Q0n0Q0C(n0)n′=2C(n0)n′=2C(n0)<n0oiii=1,…,n′M′iQ0
TM (इनपुट ):M′iϵ
- अनुकरण पर मशीनों , लेकिन इसके बजाय ओरेकल बुलाने की, के अनुसार ओरेकल प्रतिक्रिया मान ।Q0n0(M1,…,Mn0)oi
- यह अनुकरण रुक नहीं सकता है (उदाहरण के लिए यदि क्या नहीं है तो वास्तव में ओरेकल वापस आ जाएगा)।oi
- यदि अनुकरण , तो अधिकतम आउटपुट होगा जो कहता है कि दिया जाएगा।hiQ0
- सभी मशीनें । यदि उनमें से एक कभी आउटपुट , तो को रोकें और आउटपुट ।n0(M1,…,Mn0)hihi
अब मशीनों के दिए गए अनुक्रम में , पहले मशीनों की जगह को इन मशीनों । मशीनों के इस क्रम पर करके गणना की गई मान लौटाएँ । (ध्यान दें कि ओरेकल को दोबारा भेजने से पहले नहीं बुलाया जाता है, ताकि बेस केस पहुंचने के बाद ही ओरेकल को बुलाया जाए।)nn0M1,…,Mn0n′<n0M′1,…,M′n′n−(n0−n′)<n
इस कारण यह गणना सही है। के लिए ऐसा है कि `` सही '' ओरेकल द्वारा प्रतिक्रिया है प्रश्नों का, को रोकने और मूल का सही अधिकतम आउटपुट देना होगा मशीनों। इस प्रकार, मशीनों
का अधिकतम उत्पादन कम से कम मशीनों का अधिकतम आउटपुट है । दूसरी ओर, चरण 4 के द्वारा, कोई भी
ऐसा आउटपुट नहीं दे सकता है जो के अधिकतम आउटपुट से बड़ा हो । इस प्रकार, मशीनों का अधिकतम उत्पादनioiQ0M′in0n′(M′1,…,M′n′)n0(M1,…,Mn0)M′i(M1,…,Mn0)n′(M′1,…,M′n′) मशीनों
के अधिकतम आउटपुट के बराबर है जो वे प्रतिस्थापित करते हैं। QEDn0