हफ़मैन कोडिंग एल्गोरिदम के साथ बनाए गए पेड़ की अधिकतम ऊंचाई क्या है, यह मानते हुए कि सभी बाइट्स इसमें स्वीकार किए जाते हैं।
मैं उत्सुक हूं क्योंकि मैंने किसी तरह 9 बिट्स का पथ प्राप्त करने में कामयाब रहा जब मैंने I फ़ाइल को संपीड़ित करने का प्रयास किया जिसे मैंने यादृच्छिक रूप से उत्पन्न किया। जिसका अर्थ है कि मैं अनिवार्य रूप से फ़ाइल का आकार बढ़ाता हूं। हालांकि कार्यक्रम में कहीं न कहीं कोई समस्या हो सकती है जिसके बारे में मुझे जानकारी नहीं है।
1 उत्तर
यदि "सभी बाइट्स" से आपका मतलब आपके प्रतीकों के सेट के रूप में सभी 256 संभावित बाइट मानों से है, तो इसका उत्तर यह है कि अधिकतम गहराई, और इसलिए सबसे लंबे कोड की लंबाई 255 है।
हालांकि इसे प्राप्त करने के लिए प्रतीकों की आवृत्तियों के लिए बहुत बड़ी संख्या की आवश्यकता होती है। सबसे छोटी कुल गिनती के साथ ऐसा करने वाला क्रम लुकास संख्या है, जिसमें शून्य लुकास संख्या 2 दो 1 में विभाजित है। इसलिए:
1, 1, 1, 3, 4, 7, 11, 18, 29, 47, 76, 123, 199, ...
जहां 4 से शुरू होने वाले पद पिछले दो पदों का योग हैं, ठीक उसी तरह जैसे कि फाइबोनैचि अनुक्रम। उस क्रम में 256 प्रतीकों के लिए अंतिम पद है:
121020968315000050139390193037122554865361969834971243
53
सभी संभावित बाइट्स के आपके यादृच्छिक डेटा के लिए, आम तौर पर आप इसे संपीड़ित नहीं कर सकते हैं। हालाँकि यदि आपको लंबाई में 9 बिट्स का एक कोड मिला है, तो इसका मतलब है कि कोड कम से कम उतना ही अच्छा है जितना कि सभी प्रतीकों को 8 बिट्स निर्दिष्ट करना। तो आपने फ़ाइल को फुलाया नहीं, बल्कि इसे एक ही आकार में छोड़ दिया या इसे थोड़ा या अधिक कम कर दिया। हालाँकि यह इस तथ्य को ध्यान में नहीं रख रहा है कि आपको कोड भी स्वयं भेजना होगा ताकि दूसरे छोर पर डिकोडर डिकोड कर सके। यह आपके द्वारा प्राप्त किए गए किसी भी छोटे से संपीड़न को मारने से कहीं अधिक होगा।
संबंधित सवाल
नए सवाल
c++
C ++ एक सामान्य-प्रयोजन प्रोग्रामिंग भाषा है। यह मूल रूप से C के विस्तार के रूप में डिज़ाइन किया गया था और इसमें एक समान सिंटैक्स है, लेकिन यह अब पूरी तरह से अलग भाषा है। C ++ कंपाइलर के साथ संकलित कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें। विशिष्ट मानक संशोधन [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] या [C ++ 23], आदि से संबंधित प्रश्नों के लिए संस्करण-विशिष्ट टैग का उपयोग करें। ।