आवृत्तियों के समान होने पर, इष्टतम उपसर्ग मुक्त कोड कंप्यूटिंग की जटिलता क्या है?


13

यह सर्वविदित है कि हफ़मैन कोड को समय में गणना करने के लिए सबसे खराब स्थिति इष्टतम एल्गोरिदम है । यह दो orthogonal तरीकों में सुधार किया गया है:θ(nlgn)

  1. इष्टतम उपसर्ग मुक्त कोड (जैसे आकार के तेजी से गणना की जा सकती है, तो अलग आवृत्तियों के सेट छोटा है ): प्रकार आवृत्तियों [मुनरो और Spira, 1976] ताकि के छोटे मूल्य का लाभ लेने के लिए उपयोग कर , और गणना हल किए गए आवृत्तियों से रैखिक समय में हफमैन वृक्ष। यह में एक समाधान देता हैσ हे ( एन एलजी σ )σσO(nlgσ)

  2. वहाँ एक है बराबर कोड जहां गणना करने के लिए एल्गोरिथ्म है अलग कूटशब्द लंबाई की संख्या [बेलाल और Elmasry]।केO(n16k)k

क्या की वर्तमान सर्वोत्तम जटिलता में सुधार करने के लिए उन तकनीकों को संयोजित करने का कोई तरीका है ?O(nmin{16k,lgσ})


O(nk) STACS 2006 से परिणाम गलत लग रहे , Elmasry arXiv पर प्रकाशित 2010 में (http://arxiv.org/abs/cs/0509015) एक संस्करण की घोषणा - O(16kn) अवर्गीकृत इनपुट पर संचालन और - O(9klog2k1n) सॉर्ट किए गए इनपुट पर ऑपरेशन


  1. मैं प्लानर उत्तल पतवार, जहां में एल्गोरिदम कंप्यूटिंग की जटिलता के साथ एक सादृश्य देख O(nlgn) (क्रमित आधारित, के रूप में O(nlgn) Huffman के कोड के लिए एल्गोरिथ्म) और में O(nh) (उपहार रैपिंग) Kirkpatrick और Seidel के एल्गोरिथ्म द्वारा O (n \ lg h) में अंकितO(nlgh) किया गया था (बाद में उदाहरण O(nH(n1,,nk) ) की जटिलता के साथ इष्टतम साबित हुआ ।) Prefix Free कोड के मामले में। O(nlgn) बनाम O(nk) जटिलता O(nlgk) , या यहां तक ​​कि O (nH (n_1, \ ldots, n_k) के साथ एक एल्गोरिथ्म की संभावना का सुझाव देता है O(nH(n1,,nk)जहां ni लंबाई के कोडवर्ड की संख्या है iएक कोड लंबाई n_i प्रतीकों को कवर ni अंक को कवर उत्तल पतवार के एक छोर की सादृश्य का उपयोग कर ।ni

  2. एक सरल उदाहरण से पता चलता है कि आवृत्तियों के (गोल) लॉगरिदमिक मानों को छांटना (रैखिक समय में the θ(lgn) शब्द रैम मॉडल) रैखिक समय में एक इष्टतम उपसर्ग मुक्त कोड नहीं देता है:

    • के लिए n=3 , f1=1/2ε और f2=f3=1/4+ε
    • lgfi=2 इसलिए लॉग सॉर्टिंग ऑर्डर नहीं बदलता है
    • अभी तक तीन कोड n/4 बिट्स में से दो कोड इष्टतम से अधिक हैं।
  3. एक और दिलचस्प सवाल यह होगा कि जब k बड़ा होगा तो जटिलता कम हो जाएगी , यानी सभी कोड अलग-अलग लंबाई के होंगे:

    • उदाहरण के लिए जब आवृत्तियाँ सभी भिन्न लॉग मान हैं। इस स्थिति में कोई व्यक्ति RAM शब्द में रैखिक समय में आवृत्तियों को क्रमबद्ध कर सकता है , और हफ़मैन कोड को रैखिक समय में गणना कर सकता है (क्योंकि उनके लॉग मानों को सॉर्ट करना मानों को सॉर्ट करने के लिए पर्याप्त है), जिसके परिणामस्वरूप समग्र रैखिक समय होता है बेलाल और एल्माश्री के एल्गोरिथ्म से से बहुत बेहतर ।k=nθ(lgn)n2

जवाबों:


1

इसमें कुछ साल लग गए (पाँच!), लेकिन यहाँ प्रश्न का आंशिक उत्तर है:

http://arxiv.org/abs/1602.00023

इष्टतम उपसर्ग मुक्त कोड आंशिक छंटनी के साथ Jérémy Barbay (29 जनवरी 2016 को प्रस्तुत)

हम O (n (1 + lgα)) αO (nlgn), जहां प्रत्यावर्तन α∈ [1..n − 1] के भीतर समय में एन अनसोल्ड पॉज़िटिव वेट के लिए एक इष्टतम उपसर्ग मुक्त कोड कंप्यूटिंग का वर्णन करते हैं। गणना द्वारा आवश्यक छंटाई। यह एसिम्पोटिकल जटिलता आकार बी और प्रत्यावर्तन α के सभी उदाहरणों पर सबसे खराब स्थिति में बीजगणितीय निर्णय वृक्ष कम्प्यूटेशनल मॉडल में इष्टतम के एक निरंतर कारक के भीतर है। ऐसे परिणाम एक ही कम्प्यूटेशनल मॉडल में आकार n के उदाहरणों पर सबसे खराब स्थिति में gn (nlgn) की कला जटिलता की स्थिति को परिष्कृत करते हैं, 1952 के बाद से संपीड़न और कोडिंग में एक मील का पत्थर, इष्टतम लीफिक्स की गणना करने के लिए वैन लीमैन के एल्गोरिथ्म के मात्र संयोजन द्वारा। सॉर्टेड वेट (1976 के बाद से ज्ञात) से मुक्त कोड, आस्थगित डेटा संरचनाओं के साथ आंशिक रूप से उस पर प्रश्नों के आधार पर एक मल्टीसेट को सॉर्ट करने के लिए (1988 से ज्ञात)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.