मैं एक एल्गोरिदम की तलाश में हूं जो दिए गए इनपुट स्ट्रिंग की कोल्मोगोरोव जटिलता के अनुमान को गणना कर सकता है। तो अगर के स्ट्रिंग एस की कोल्मोगोरोव जटिलता है, और टी समय का प्रतिनिधित्व करता है, तो फ़ंक्शन इस तरह कुछ व्यवहार करेगा .. सीमा (टी-> inf) [K_approx (टी, एस)] = के।कोल्मोगोरोव जटिलता अनुमान एल्गोरिदम
उत्तर
इन सिद्धांत, एक प्रोग्राम अपनी इनपुट स्ट्रिंग की कोल्मोगोरोव जटिलता पर अभिसरण कर सकता है क्योंकि चलने का समय अनंतता तक पहुंचता है। यह समानांतर में हर संभव प्रोग्राम को चलाकर काम कर सकता है जो इनपुट स्ट्रिंग या कम की लंबाई है। जब किसी दिए गए लंबाई का कोई प्रोग्राम पाया जाता है, तो उस लंबाई को अब के लिए ज्ञात न्यूनतम लंबाई के रूप में पहचाना जाता है, मुद्रित किया जाता है, और कोई और प्रोग्राम> = लंबाई की कोशिश नहीं की जाती है। यह एल्गोरिदम (सबसे अधिक संभावना) हमेशा के लिए दौड़ता है, छोटे और छोटे लंबाई को प्रिंट करता है, सटीक कोल्मोगोरोव जटिलता को अनंत समय पर परिवर्तित करता है।
बेशक, कार्यक्रमों की घातीय संख्या चलाना बेहद अचूक है। एक अधिक कुशल एल्गोरिदम code golf on StackOverflow पोस्ट करना है। कुछ कमियां:
- अच्छे परिणाम मिलने से कुछ दिन पहले लग सकते हैं।
- यह उत्पादकता हानि में हजारों डॉलर की लागत वाले हमारे सबसे मूल्यवान कंप्यूटिंग संसाधनों की विशाल मात्रा का उपयोग करता है।
- परिणाम समय के साथ कम आवृत्ति के साथ उत्पादित होते हैं क्योंकि संसाधन othercomputations पर जाते हैं।
- कई इनपुट के लिए एल्गोरिदम terminatesprematurely, जिसका अर्थ है कि यह सामान्य रूप से काम नहीं करता है।
या आप जल्द ही एक ही प्रोग्राम चलाएंगे जो हमेशा के लिए चलता है, और आप यह तय नहीं कर सकते कि इसे रोकना है या इसे कुछ और सेकंड (दशकों) चलाएं। – rwong
@rwong: ठीक है, यही कारण है कि आप उन्हें समानांतर में चलाते हैं। कई कार्यक्रमों के लिए जो हमेशा के लिए दौड़ते प्रतीत होते हैं, उन्हें तब तक चलने की अनुमति है जब तक कि एक छोटा समाधान नहीं मिलता है (यदि कभी)। –
मुझे लगता है कि यह फ़ंक्शन में एक और पैरामीटर जोड़ने के लिए resonable होगा जो ट्यूरिंग मशीन की अधिकतम लंबाई निर्दिष्ट करता है .. तो हमारे पास ऐसा फ़ंक्शन हो सकता है जिसमें इस तरह की संपत्ति हो ??? सीमा (टी-> inf) [सीमा (टी_मैक्स-> inf) [K_approx (टी, एस, टी_मैक्स)]] = के – Tony
मुझे लगता है कि यह काम कर सकता है? अगर किसी को कोई त्रुटि दिखाई देती है, तो कृपया इसे इंगित करें।
function KApprox(S:string,t:integer,TapeSizeMax:integer) : Turing Machine of size k
begin
// An abstract data type that represents a turing machine of size k
var TM(k:integer) : Turing Machine of size k;
var TMSmallest(k:integer) : Turing Machine of size k;
var j : integer;
var i : integer;
for (j = t to 0 step -1) // reduce the time counter by 1
begin
for (i = TMax to 1 step -1) // go to the next smaller size of TM
begin
foreach (TM(i)) // enumerate each TM of size i
begin
if (TM(i).halt(TapeSizeMax) == true) and (TM(i).output() == S) then
begin
if (sizeof(TM(i)) < sizeof(TMSmallest(i))) then
TMSmallest(i): = TM(i);
end;
end;
end;
end;
return TMSmallest;
end;
wikipedia page Kolmogorov जटिलता के लिए एक उपधारा जिसका शीर्षक था "Kolmogorov जटिलता के Incomputability", "बुनियादी परिणाम" अनुभाग के तहत है। यह एक बुनियादी उपाय नहीं है जिसका आप गणना कर सकते हैं, या यहां तक कि उत्पादक अनुमान लगा सकते हैं।
संदेह के बिना, जो भी आप चाहते हैं उसे प्राप्त करने के बेहतर तरीके हैं। यदि आप जो चाहते हैं वह यादृच्छिकता का एक उपाय है, तो आप बाइनरी एंट्रॉपी फ़ंक्शन का प्रयास कर सकते हैं। मानक एल्गोरिदम में से एक द्वारा संपीड़न बिल को भी फिट कर सकता है।
विकी आलेख में "अनुमानित उत्पादक" वाक्यांश का भी उल्लेख नहीं है। एक स्ट्रिंग के केसी की गणना करने का सवाल नहीं पूछा जा रहा है। यह अजीब है .. कहानी का अंत। मैं जो कुछ ढूंढ रहा हूं वह एक ऐसा कार्य है जो इसे अधिक समय और अंतरिक्ष संसाधन देकर बेहतर और बेहतर अनुमान लगाएगा। – Tony
@ टोनी: आपका एल्गोरिदम पूरी तरह निर्दिष्ट नहीं है। मुझे यकीन नहीं है कि आप प्रत्येक संभव इनपुट स्ट्रिंग के साथ कुछ आकार तक प्रत्येक संभावित ट्यूरिंग मशीन का परीक्षण करने की योजना कैसे बनाते हैं, लेकिन अगर आप इसे कुछ सार्थक तरीके से कर सकते हैं, तो समय लागत इनपुट पर घातीय हो जाएगी। हालांकि सिद्धांत अच्छा लग सकता है, यह सिर्फ कुछ ऐसा नहीं है जो आपके लिए अभ्यास में काम करेगा। –
@ रोब, फ़ंक्शन केवल इनपुट "एस: स्ट्रिंग" के रूप में 1 स्ट्रिंग लेता है, और केवल आकार टीएमएक्स की ट्यूरिंग मशीनों का परीक्षण करेगा। इसलिए हम सभी ट्यूरिंग मशीनों का परीक्षण नहीं कर रहे हैं, और इसलिए इनपुट स्ट्रिंग का सटीक केसी नहीं मिल सकता है। – Tony
ऐसा लगता है कि रे सोलोमोनोफ इस क्षेत्र में बहुत काम किया है।
Publications of Ray Solomonoff
Does Algorithmic Probability Solve the Problem of Induction?
पहला मुद्दा है कि मैं ध्यान दें कि "Kolmogorov जटिलता" अच्छी तरह से परिभाषित नहीं है। यह कार्यक्रमों का प्रतिनिधित्व करने के तरीके पर कुछ डिग्री पर निर्भर करता है। तो, सबसे पहले आपको जो करना होगा, वह कार्यक्रमों के कुछ एन्कोडिंग को ठीक करेगा (उदाहरण के लिए, जॉय एडम्स का विनिर्देश कि कार्यक्रम जे में लिखे गए हैं)।
एक बार जब आप एन्कोडिंग हो तो एल्गोरिथ्म आप देख रहे हैं काफी सरल है। इसके लिए जॉय का जवाब देखें।
लेकिन स्थिति तेजी से कई कार्यक्रमों को चलाने के लिए होने से भी बदतर है। उन कार्यक्रमों में से प्रत्येक के रूप में लंबे चलाने के रूप में आप संभवतः कल्पना कर सकता सकता है (तकनीकी रूप से: के रूप में एक समारोह इनपुट आकार किसी भी पुनरावर्ती क्रिया की तुलना में तेजी से बढ़ने सकता है समय से चल रहा है)।और भी, यह मामला हो सकता है कि कुछ सबसे छोटे कार्यक्रम सबसे लंबे समय तक चलने वाले हैं। इसलिए जब समानांतर दृष्टिकोण सही मूल्य तक पहुंच जाएगा, क्योंकि समय अनंतता तक जाता है, तो यह धीरे-धीरे धीरे-धीरे करेगा।
आप कार्यक्रम को समय-समय पर रोक सकते हैं, यह समझते हुए कि उस बिंदु पर अनुमान पर्याप्त है। हालांकि, आपको सामान्य रूप से कोई जानकारी नहीं है कि अनुमान कितना अच्छा है। वास्तव में, ऐसे प्रमेय हैं जो दिखाते हैं कि आप कभी नहीं जानते।
तो संक्षिप्त उत्तर "आसान है, बस जॉय के एल्गोरिदम का उपयोग करें", लेकिन व्यावहारिकता के किसी भी उपाय से, जवाब है, "आपके पास कोई मौका नहीं है"। जैसा कि र्वॉन्ग द्वारा अनुशंसित किया गया है, आप केवल एक भारी ड्यूटी संपीड़न एल्गोरिदम का उपयोग कर बेहतर हैं।
- 1. शब्द की जटिलता का अनुमान लगाने के लिए एल्गोरिदम
- 2. एल्गोरिदम का विश्लेषण (जटिलता)
- 3. 2^एन जटिलता एल्गोरिदम
- 4. एल्गोरिदम की जटिलता
- 5. यूनिट परीक्षण अनुमान एल्गोरिदम
- 6. रिकर्सिव एल्गोरिदम की स्पेस जटिलता
- 7. मैट्रिक्स गुणा एल्गोरिदम समय जटिलता
- 8. प्राइम का एल्गोरिदम समय जटिलता
- 9. इनपुट के साथ एल्गोरिदम जटिलता फिक्स्ड साइज्ड
- 10. इस एल्गोरिदम की अंतरिक्ष जटिलता ओ (1)
- 11. एल्गोरिदम की कंप्यूटिंग समय जटिलता पर संसाधन
- 12. फ्लेरी के एल्गोरिदम की समय जटिलता
- 13. एक पुनरावर्ती एल्गोरिदम की समय जटिलता
- 14. गहराई की पहली जटिलता-प्रथम ग्राफ एल्गोरिदम
- 15. दमास-हिंडली-मिलनर प्रकार अनुमान एल्गोरिदम कार्यान्वयन
- 16. आरजीबी इसी तरह के रंग अनुमान एल्गोरिदम
- 17. कोल्मोगोरोव-स्मरनोव या ची-स्क्वायर परीक्षण?
- 18. न्यूनतम जटिलता
- 19. समय जटिलता
- 20. सबराउटिन अनुमान
- 21. समय जटिलता()
- 22. अनुमान समापन समय/अनुमान लगाने का अनुमान
- 23. ओपनसीवी: कैमरा अनुमान अनुमान
- 24. हमेशा अनुमान/अनुमान
- 25. एल्गोरिदम की सटीक जटिलता की गणना कैसे करें?
- 26. जटिलता या प्रदर्शन की तुलना में विभिन्न निर्णय पेड़ एल्गोरिदम
- 27. जटिलता
- 28. मैं चेकसम एल्गोरिदम का अनुमान कैसे लगा सकता हूं?
- 29. मैं चेकसम एल्गोरिदम का अनुमान कैसे लगा सकता हूं?
- 30. ओ (1) जटिलता
विषय से अपरिचित लोगों के लिए, एक स्ट्रिंग की कोल्मोगोरोव जटिलता, संक्षेप में, "स्ट्रिंग उत्पन्न करने वाले सबसे छोटे कार्यक्रम की लंबाई" है। उदाहरण के लिए, जे प्रोग्रामिंग भाषा के साथ 8 अक्षरों ('*/~ 1 + i.9') में 9 x 9 गुणा तालिका का उत्पादन किया जा सकता है ([यहां देखें] (http://stackoverflow.com/questions/3412730/code- गोल्फ-आउटपुट-गुणा-टेबल-टू-द-कंसोल))। इससे, आप कह सकते हैं कि 9 x 9 गुणा तालिका में जे प्रोग्रामिंग भाषा के संबंध में 8 या उससे कम की कोल्मोगोरोव जटिलता है। –
यदि आप औपचारिक रूप से कुछ प्रमाणित करने का प्रयास कर रहे हैं, तो आपको अनुमान लगाने के लिए उपयोग की जाने वाली विधि (स्वतंत्र रूप से अनदेखा) के अपने प्रमाण को स्वतंत्र रूप से लिखना होगा। यदि आप बस मजाक की तलाश में हैं, तो डेटा संपीड़न एल्गोरिदम का प्रयास कैसे करें? – rwong
नहीं, मैं एक सबूत की तलाश नहीं कर रहा हूं। मैं एक एल्गोरिदम की तलाश में हूं जो उपर्युक्त गुणों को पूरा करता है। मैं एक खोजने में सक्षम नहीं हूं, और मैं जानना चाहता था कि किसी ने इसे पहले से ही किया है या नहीं। मुझे किसी भी डेटा संपीड़न एल्गोरिदम की जानकारी नहीं है जो प्रिंसिपल में सटीक कोल्मोगोरोव कॉम्प्लेक्सिटी को पर्याप्त समय दे सकता है। मुझे लगता है कि आप पहली नज़र में हमेशा परिमित तारों के साथ काम कर रहे हैं, सभी संभव ट्यूरिंग मशीनों की एक गणना खोज काम कर सकती है ... लेकिन समस्या अपरिहार्य हो सकती है। मैं मशीन सीखने के अनुप्रयोगों के लिए इस तरह एक एल्गोरिदम की तलाश में हूं। – Tony