कोलमोगोरोव जटिलता: आपको स्ट्रिंग से अधिक बाइट्स की आवश्यकता क्यों होगी?


13

मैं कोलमोगोरोव कॉम्प्लेक्सिटी ( इस सवाल के लिए धन्यवाद ) पर विकिपीडिया की प्रविष्टि पढ़ रहा था , जिसमें कहा गया है:

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

इसका वर्णन करने के लिए आपको कभी भी स्ट्रिंग से अधिक किसी चीज की आवश्यकता क्यों होगी?

जवाबों:


13

कोलमोगोरोव जटिलता का सटीक मूल्य स्ट्रिंग का प्रतिनिधित्व करने के लिए चुनी गई भाषा पर निर्भर करता है। यह भाषा ट्यूरिंग पूर्ण होनी है, इसलिए सभी स्ट्रिंग्स का प्रतिनिधित्व करना क्योंकि स्वयं एक विकल्प नहीं है।

कबूतर के सिद्धांत के अनुसार, यदि की लंबाई में कम से कम एक तार होता है जिसका प्रतिनिधित्व खुद से कम होता है, तो अधिकतम n पर कम से कम एक स्ट्रिंग की लंबाई होती है, जिसका प्रतिनिधित्व खुद से लंबा होता है। (प्रतिनिधित्व एक संपीड़न एल्गोरिथ्म है।)nn

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

CC


6

यहाँ एक स्ट्रिंग का वर्णन कुछ सार्वभौमिक ट्यूरिंग मशीन के लिए एक इनपुट है। आप इसे C प्रोग्राम के रूप में सोच सकते हैं। स्ट्रिंग hello worldअपने आप नहीं, C प्रोग्राम बनाती है, लेकिन निम्न कार्य करता है int main(int argc, char *argv[]) { printf("hello world"); }:। जैसा कि आप देख सकते हैं, ओवरहेड स्थिर है लेकिन शून्य नहीं है।


3
एक जोड़ा सूक्ष्मता के रूप में, ओ (1) स्पेस ओवरहेड के साथ मनमाने तार को प्रिंट करने के लिए सी (या एक आदर्श ट्यूरिंग-पूरा सी) में संभव नहीं है, क्योंकि स्ट्रिंग लिटरल्स में कुछ पात्रों को उद्धृत करने की आवश्यकता है।
गिल्स एसओ- बुराई को रोकना '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.