मैं पहले से माफी चाहता हूं कि मैं बहुत सारे विवरण देता हूं, लेकिन मैं लोगों के विरोधाभासी हूं।
के बारे मेंK(x)≤K′(x)+c
तथ्य यह है कि आमतौर पर वर्णन भाषा # 2 की व्याख्या भाषा # 1 के एक दुभाषिया से आता है न कि # 2 के कार्यक्रमों से # 1 के कार्यक्रमों में अनुवाद से।K1(x)≤K2(x)+c
उदाहरण के लिए और आप इस असमानता को बस इस रूप में प्राप्त करते हैं:KC(x)≤KPython(x)+cpy2c
void py_run(char * s) {
// code of your Python interpreter
}
int main(void) {
py_run("Put here your Python program of size Kpython(x)");
}
फिर आपका निरंतर जैसा कुछ होगा जहां इस कोड के लिए बिट्स की संख्या है और बिट्स आकार है, आधिकारिक Python दुभाषिया सी में लिखा गया है बेशक आपको केवल यह व्याख्या करना होगा कि क्या संभव है। अजगर के लिए अपनी विवरण भाषा में ताकि आप 69 एमबी से बेहतर कर सकें :-) 528 + 490240688 528 490240688cpy2c528+490240688528490240688
यह महत्वपूर्ण है कि आप अपने सी कोड में अपने पायथन प्रोग्राम को रैखिक रूप से लिख सकें । उदाहरण के लिए, एक ऐसी भाषा जहाँ आपको हर पात्र के बीच "बाना" लगाने की आवश्यकता होती है, बहुत अच्छा वर्णन कार्यक्रम नहीं है और संपत्ति तब झूठी है। (लेकिन यदि वर्णन भाषा आपको एक अलग फ़ाइल या किसी ब्लॉक में डेटा लिखने के लिए अधिकृत करती है, तो यह समस्या गायब हो जाती है)
क्यों आपका त्रुटिपूर्ण हैK1(x)=q
की आपकी परिभाषा के साथ समस्या यह है कि आपको q स्टेट्स के साथ ट्यूरिंग मशीन का वर्णन करने के लिए q बिट्स से अधिक की आवश्यकता हो सकती है क्योंकि आपको संक्रमणों को एनकोड करने की आवश्यकता होती है।K1qq
तो कोई और K 2 संभवतः समतुल्य नहीं है, लेकिन यह मुख्य रूप से K 1 का दोष है। मुझे लगता है कि हम सभी के लिए साबित कर सकते हैं कि कि एक > 0 वहाँ एक है ग एक ऐसी है कि कश्मीर 1 ( एक्स ) ≤ एक | x | + c a । बेशक किसी भी एक < 1 तथ्य का खंडन करने के लिए है कि पर्याप्त है कश्मीर 1 , क्योंकि यह मतलब होगा कि हम और अधिक सभी सांकेतिक शब्दों में बदलना कर सकते हैं एक वैध कार्य नहीं है 2 n लंबाई के संभावित तारK1K2K1a>0caK1(x)≤a|x|+caa<1K12n में एक एन + ग एक बिट।nan+ca
लेकिन ट्यूरिंग मशीनों का निर्माण करते समय आकार एक अविश्वसनीय रूप से तंग होता है। विचार यह है कि राज्यों के एक ब्लॉक में प्रत्येक राज्य के लिए संक्रमण खोजने के लिए बी 2 बी तरीके हैं और यह सामान्य 2 बी तरीकों से बेहतर है कि आप बी बिट्स को भर सकते हैं । फिर आप प्रत्येक ब्लॉक लॉग 2 बी बिट्स की जानकारी स्टोर कर सकते हैं । (नॉट 2 लॉग 2 बी क्योंकि आपको एक रास्ते या दूसरे ब्लॉक में जाना है और बाहर जाना है)bb2b2bblog2b2log2b
तो, हाँ ... आकार के ब्लॉक के साथ तो आप शायद साबित हो सकता है कश्मीर 1 ( एक्स ) ≤ एक | x | + c a । लेकिन मैंने पहले से ही इस बारे में बहुत अधिक लिखा है कि राज्यों की संख्या एक वैध कोलमोगोरोव जटिलता समारोह क्यों नहीं है। यदि आप मुझे विस्तृत करना चाहते हैं, तो मैं करूंगा।21/aK1(x)≤a|x|+ca
अब के 2 के बारे मेंK2
भोली वर्णनात्मक भाषा लगभग से मेल खाती है (यानी प्रत्येक अगले राज्य के लिए लॉग 2 q और लिखने और समाप्ति के बारे में विवरण)।K2(x)=q⋅2⋅(log2q+2)log2q
जैसा कि आप समझते हैं, मुझे विश्वास है कि एक बेहतर / चीटर तरीका ट्यूरिंग मशीन में "डेटा" को एन्कोड करने के लिए अधिकृत होगा, हो सकता है कि विवरण भाषा में एक बाइनरी टैग जोड़कर कहा जाए कि क्या एक राज्य एक डेटा राज्य है ( वह बस थोड़ा लिखता है और अगले राज्य में जाता है) या अगर वह कुछ और करता है। इस तरह से आप अपने के एक बिट को अपनी वर्णनात्मक भाषा के एक बिट में स्टोर कर सकते हैं।x
लेकिन अगर आप एक ही रखने आप उसी तकनीक का मैं पिछले भाग में कुछ बिट्स को बचाने के लिए में प्रयोग किया जाता इस्तेमाल कर सकते हैं, लेकिन मैं पर अटक कर रहे कश्मीर 2 ( एक्स ) ≤ एक | x | लॉग | x | + c (किसी a > 0 के लिए ) .. शायद लॉग से कम | x | , भी, लेकिन O ( | x | ) प्राप्त करना कठिन लगता है। (और मुझे उम्मीद है कि यह होना चाहिए | x | , O भी नहीं ( |)K2K2(x)≤a|x|log|x|+ca>0log|x|O(|x|)|x| )O(|x|)