असंपीड्य स्ट्रिंग
This article needs additional citations for verification. (July 2019) (Learn how and when to remove this template message) |
एक असंपीड्य स्ट्रिंग (कंप्यूटर विज्ञान) कोलमोगोरोव जटिलता वाली एक स्ट्रिंग है जो इसकी लंबाई के बराबर होती है, ताकि इसमें कोई छोटी एनकोडिंग न हो।[1]
उदाहरण
मान लीजिए हमारे पास स्ट्रिंग है 12349999123499991234
, और हम एक डेटा संपीड़न विधि का उपयोग कर रहे हैं जो स्ट्रिंग में एक विशेष वर्ण डालकर काम करती है (मान लीजिए)। @
) के बाद एक मान आता है जो दोहराए गए मानों की लुकअप तालिका (या शब्दकोश) में एक प्रविष्टि की ओर इशारा करता है। आइए कल्पना करें कि हमारे पास एक एल्गोरिदम है जो 4 वर्ण खंडों में स्ट्रिंग की जांच करता है। हमारी स्ट्रिंग को देखते हुए, हमारा एल्गोरिदम अपने शब्दकोश में रखने के लिए मान 1234 और 9999 चुन सकता है। मान लीजिए कि 1234 प्रविष्टि 0 है और 9999 प्रविष्टि 1 है। अब स्ट्रिंग बन सकती है:
@0@1@0@1@0
यह स्ट्रिंग बहुत छोटी है, हालाँकि शब्दकोश को संग्रहीत करने में कुछ जगह खर्च होगी। हालाँकि, स्ट्रिंग में जितनी अधिक पुनरावृत्तियाँ होंगी, संपीड़न उतना ही बेहतर होगा।
हालाँकि, हमारा एल्गोरिदम बेहतर कर सकता है, अगर वह स्ट्रिंग को 4 अक्षरों से बड़े टुकड़ों में देख सके। फिर यह 12349999 और 1234 को शब्दकोश में डाल सकता है, जिससे हमें यह मिलता है:
@0@0@1
यह डोरी और भी छोटी है. अब एक और स्ट्रिंग पर विचार करें:
1234999988884321
यह स्ट्रिंग हमारे एल्गोरिदम द्वारा असम्पीडित है। केवल 88 और 99 ही दोहराए जाते हैं। यदि हम 88 और 99 को अपने शब्दकोश में संग्रहीत करें, तो हम उत्पादन करेंगे:
1234@1@1@0@04321
यह मूल स्ट्रिंग जितनी ही लंबी है, क्योंकि शब्दकोश में आइटमों के लिए हमारे प्लेसहोल्डर 2 अक्षर लंबे हैं, और जिन आइटमों को वे प्रतिस्थापित करते हैं उनकी लंबाई समान है। इसलिए, यह स्ट्रिंग हमारे एल्गोरिदम द्वारा असम्पीडित है।
संदर्भ
- ↑ V. Chandru and M.R.Rao, Algorithms and Theory of Computation Handbook, CRC Press 1999, p29-30.