क्या परीक्षण कीड़े की अनुपस्थिति दिखा सकता है?


18

(n+1) अंक को विशिष्ट रूप से डिग्रीबहुपद निर्धारित करने के लिए आवश्यक है; उदाहरण के लिए, एक विमान में दो बिंदु बिल्कुल एक रेखा निर्धारित करते हैं।n

एक निर्धारित फ़ंक्शन को विशिष्ट रूप से निर्धारित करने के लिए कितने बिंदुओं की आवश्यकता होती है f:NN , एक निश्चित भाषा में गणना करने वाले प्रोग्राम की लंबाई को देखते हुए f? (यानी के कोलमोगोरोव जटिलता पर एक बाध्य f)।

विचार यह है कि, कम से कम सैद्धांतिक रूप से, कोई व्यक्ति पर्याप्त परीक्षण करके कार्यक्रम की शुद्धता साबित कर सकता है।

एक एक कार्यक्रम है, तो P लंबाई के L कि computes f , वहाँ एक कार्यों कि अधिक से अधिक का एक स्रोत लंबाई के साथ की जा सकती है की संख्या पर बाध्य है L

इसलिए एक "केवल" को यह साबित करना होगा:

  • f कर सकते हैंएक स्रोत लंबाई के साथ गणना की जाL
  • , L बाइट्स या कम (परीक्षण द्वारा)में किसी अन्य फ़ंक्शन की गणना करने योग्य नहीं हैPL

इस विचार का शायद कोई व्यावहारिक परिणाम नहीं है (सीमा निश्चित रूप से घातीय होने के लिए बाध्य है)।


4
मान लीजिए कार्यों के अपने विवरण बाइनरी में दिया जाता है, तो देखते हैं ज्यादा से ज्यादा अधिक से अधिक विवरण लंबाई के एल । लेकिन अब समस्या यह है कि बहुपद के विपरीत, दो अलग-अलग संगणनीय कार्य आसानी से एक ही संख्या के इनपुट पर समान मान ले सकते हैं। इस प्रकार आपकी समस्या मुझे असंभव लगती है। 2L+11L
ब्रूनो

मैं आपका विचार समझता हूं। लेकिन विवरण लंबाई के दो अलग-अलग कम्प्यूटेशनल कार्य <= L को कुछ बिंदु पर (कुछ n0 के लिए) भिन्न होना चाहिए। क्या कोई N 0 दिए गए L का मान ज्ञात कर सकता है?
जरीन

4
यदि कोई मौजूद है, तो आप इस तरह का एक बिंदु पा सकते हैं, बस dovetailing का उपयोग करके सभी मूल्यों पर कार्यों की गणना करें, लेकिन अगर ऐसा नहीं है, तो आप कभी भी नहीं जान पाएंगे, यह अवांछनीय है, कार्यक्रम के आकार पर ऊपरी लंबाई होने से कुछ भी नहीं बदलता है।
केवह

7
दरअसल, @Kaveh, आपके अपने तर्क से, पर एक ऊपरी सीमा आपको कुछ बताती है कि वे कहां भिन्न हैं, बस कुछ गणना योग्य नहीं है। अगर कश्मीर ( ) एल , और जी , तो कश्मीर ( एक्स ) 2 एल + जहां एल्गोरिथ्म आप (@Kaveh) वर्णित की लंबाई है और एक्स पहली स्ट्रिंग जिस पर है और भिन्न होते हैं। विशेष रूप से, एक्सK(f)K(f)LfgK(x)2L+ccxfgx कुछ व्यस्त-बीवर जैसे फ़ंक्शन द्वारा बाध्य है । हालांकि, सभी खोजने x ऐसी है कि कश्मीर ( एक्स ) 2 एल + या कंप्यूटिंग बी बी अभी भी uncomputable है। तो @ बर्बर: एक बाध्यता है, लेकिन यह सिर्फ घातीय की तुलना में बहुत अधिक है, यह असुविधाजनक है। 2L+cxK(x)2L+c
जोशुआ ग्रूको

6
@Kaveh: इसका मतलब है कि मैं "व्यस्त-बीवर-जैसे" फ़ंक्शन का मतलब है: सबसे लंबे स्ट्रिंग की लंबाई हो, जिसकी Kolmogorov जटिलता (एक सार्वभौमिक मशीन को ठीक करें) सबसे अधिक n पर हो । केवल ऐसे कई तार हैं, इसलिए यह सार्वभौमिक मशीन की पसंद तक अच्छी तरह से परिभाषित है। फिर बी बी ' ( 2 एल + ) है एक ऊपरी बाध्य: अगर दो (कुल गणनीय) ज्यादा से ज्यादा Kolmogorov जटिलता के कार्यों एल लंबाई अप करने के लिए सभी बिंदुओं पर सहमत बी बी ' ( 2 एल + )BB(n)nBB(2L+c)LBB(2L+c), तो वे बराबर हैं।
जोशुआ ग्रोको

जवाबों:


9

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

उदाहरण के लिए, यदि मैं गलत नहीं हूँ, तो "सीखने योग्य सिद्धांत" के सिद्धान्त में वैलेंट ने साबित किया कि एक बूलियन फ़ंक्शन को उसके के-सीएनएफ फॉर्मूले के आकार पर "सकारात्मक बिंदुओं" की बहुपद संख्या दी जा सकती है (किसी भी निश्चित k के लिए) , और मेरा मतलब "सकारात्मक बिंदुओं" से है जो फॉर्म ) से है।(x1,,xn,1)

नुथ के TAOCP 7.2.1.6 में यह (प्रत्येक चर में यानी गैर घटते) एक आश्चर्यजनक रास्ता (क्रिसमस वृक्ष पद्धति का उपयोग कर) है कि एक monote बूलियन समारोह फिर से संगठित करने में दिखाया गया है कि वास्तव में आप जरूरत अंक।(n+1n/2+1)


7

डेइगो के उत्तर की तर्ज पर जारी रखने के लिए, सीखने के सिद्धांत से मानक नमूना जटिलता सीमाएं बताती हैं कि यदि आप एक प्रोग्राम खोजने में संतुष्ट हैं जो "लगभग सही" है, तो आपको बहुत सारे बिंदुओं पर प्रयास करने की आवश्यकता नहीं है। आओ हम बाइनरी में प्रोग्राम एन्कोडिंग कर रहे हैं, ताकि लंबाई d के केवल प्रोग्राम हों। मान भी लें कि इनपुट उदाहरण डी पर कुछ वितरण है । शायद आपका लक्ष्य एक ऐसा कार्यक्रम ढूंढना है जो आपको पूरा यकीन है कि लगभग सही है ("संभवतः लगभग सही है" अर्थात वैलिंट्स पीएसी लर्निंग मॉडल के रूप में)। यही कारण है, आप एक एल्गोरिथ्म है कि नमूने की एक छोटी संख्या में ले जाएगा चलाना चाहते हैं x ~ डी के साथ मिलकर ( एक्स )2dDxDf(x), और संभावना कम से कम के साथ होगा उत्पादन कुछ कार्यक्रम पी जो के साथ सहमत हैं पर कम से कम एक ( 1 - ε ) से ली गई जानकारी के के अंश डी(1δ)Pf(1ϵ)D

हम तो बस आकर्षित करेगा उदाहरण x ~ डी , और उत्पादन किसी भी कार्यक्रम पी लंबाई की कि के साथ सहमत हैं उदाहरण के सभी पर। (एक की मौजूदगी की गारंटी है क्योंकि हम मानते हैं कि में सबसे अधिक d पर Kolmogorov जटिलता है ...)mxDPdffd

संभावना क्या है कि एक विशेष कार्यक्रम है कि से असहमत एक की तुलना में अधिक पर ε उदाहरण के अंश के साथ संगत है मीटर उदाहरण हम चयनित? यह सबसे अधिक ( 1 - ϵ ) m है । हम इस संभावना लेने के लिए अधिक से अधिक होना चाहते हैं δ / 2 इसलिए है कि हम एक संघ सब कुछ खत्म हो बाध्य ले जा सकते हैं 2 डी कार्यक्रमों और कहते हैं कि संभावना कम से कम के साथ 1 - δ , कोई "बुरा" कार्यक्रम हमारे तैयार उदाहरण के अनुरूप है । को हल करने पर हम देखते हैं कि यह केवल लेने के लिए पर्याप्त है मीटर 1Pfϵm(1ϵ)mδ/2d2d1δ उदाहरण। (केवल रैखिक की Kolmogorov जटिलता में कई यानी...)

m1ϵ(d+log1/δ)
f

BTW, इस तरह के तर्कों को "ओक्टम के रेजर" को सही ठहराने के लिए इस्तेमाल किया जा सकता है: उन सभी सिद्धांतों के बीच एक निश्चित संख्या में अवलोकन दिए गए हैं, जो आपको समझाते हैं, आपको सबसे कम कोलमोगोरोव जटिलता के साथ एक को चुनना चाहिए, क्योंकि ओवरफिटिंग की कम से कम संभावना है।

बेशक, अगर आप केवल इस तरह से एक भी तय कार्यक्रम जाँच करना चाहते हैं, आप केवल जरूरत उदाहरण ...O(log(1/δ)/ϵ)


3

यहाँ एक तुच्छ उत्तर है: , तो आप का मूल्य पता करने की जरूरत सब पर | एन | अंक विशिष्ट रूप से निर्धारित करने के लिए । इसलिए, जिस दृष्टिकोण से आप स्केच करते हैं, वह आपकी बिल्कुल भी मदद नहीं करता है, जब तक कि आप किसी तरह से यह नहीं जानते हैं कि कार्यक्रम की लंबाई एल बहुत कम है: एलजी से बहुत कम | एन | बिट्स।Llg|N|f|N|fLlg|N|

कार्यों के परिवार पर विचार करें , जहां मैं समारोह होने के लिए परिभाषित किया गया है मैं ( एक्स ) = 1 यदि मैं = एक्स और मैं ( एक्स ) = 0 अगर मैं एक्स । सूचना है कि कंप्यूटिंग के Kolmogorov जटिलता मैं के बारे में है एलजी | एन | बिट्स, क्योंकि आप i के मान को हार्डकोड कर सकते हैंF={fi:iN}fifi(x)=1i=xfi(x)=0ixfilg|N|iस्रोत कोड में और फिर आप सभी की जरूरत है एक साधारण सशर्त विवरण ( अतिरिक्त) है।O(1)

हालाँकि, जब तक आप इनपुट i पर इसका परीक्षण नहीं करते, आप सभी-शून्य फ़ंक्शन से को अलग नहीं कर सकते । जब तक आप इनपुट i या j पर परीक्षण नहीं करते तब तक आप f j से f i को अलग नहीं कर सकते । इसलिए, आप का मूल्यांकन करने की आवश्यकता होगी सब पर | एन | आदानों, विशिष्ट निर्धारित करने के लिए जो मैं हम साथ काम कर रहे। (ठीक है, तकनीकी रूप से, आपको इसका मूल्यांकन करने की आवश्यकता है एन | - 1 इनपुट, लेकिन जो भी हो)।fiififjijf|N|fi|N|1


0

आप कार्यक्रम को मनमाने ढंग से लंबा कर सकते हैं। किसी भी कार्यक्रम को देखते हुए, आप यह तय कर सकते हैं कि क्या इसकी भाषा इस कार्यक्रम के बराबर है। आप ऐसा चावल के प्रमेय से नहीं कर सकते।


1
आपके पास एक वैध बिंदु है कि कार्यक्रम को कई उदाहरणों पर चलाकर जांचने का विचार सामान्य रूप से काम नहीं करेगा।
Tsuyoshi Ito
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.