জনপ্রিয় ডিফল্ট অ্যালগরিদম লেফেল-জিভের শীর্ষে হাফম্যান কোডিং ব্যবহার করে।
সাধারণভাবে, যদি আমাদের কাছে ডেটাগুলির একটি এলোমেলো উত্স থাকে (= 1 বিট এন্ট্রপি / বিট), হাফম্যান সহ কোনও এনকোডিং এটি গড়ে কমপ্রেস করতে পারে না। যদি লেম্পেল-জিভ "নিখুঁত" (এটি বেশিরভাগ উত্সের কাছে পৌঁছায়, দৈর্ঘ্য অনন্তের দিকে চলে যায়), তবে হাফম্যানের সাথে এনকোডিংয়ের পোস্ট কোনও উপকার করতে পারে না। অবশ্যই, লেম্পেল-জিভ নিখুঁত নয় , কমপক্ষে সীমাবদ্ধ দৈর্ঘ্যের সাথে, এবং তাই কিছু অপ্রয়োজনীয়তা রয়ে গেছে।
এটি এই অবশিষ্ট অপ্রয়োজনীয়তা যা হাফম্যান কোডিং আংশিকভাবে বাদ দেয় এবং এর ফলে সংকোচনকে উন্নত করে।
আমার প্রশ্ন হ'ল কেন এই অবশিষ্ট অপ্রয়োজনীয়তা সফলভাবে হাফম্যান কোডিং দ্বারা নির্মূল করা হয়েছে এবং এলজেড নয়? হাফম্যান বনাম এলজেডের কোন বৈশিষ্ট্য এটি ঘটায়? সহজেই আবার এলজেড চালানো হবে (এটি, দ্বিতীয় বার এলজেডের সাথে এলজেড সংক্ষেপিত ডেটা এনকোডিং করা) অনুরূপ কিছু অর্জন করবে? তা না হলে কেন? তেমনিভাবে, প্রথমে হাফম্যানের সাথে এবং তারপরে এলজেডের কাজ নিয়ে সংকোচন করা হবে এবং যদি তা না হয় তবে কেন?
আপডেট: এটি স্পষ্ট যে এলজেডের পরেও কিছু অপ্রয়োজনীয়তা থাকবে। বেশ কয়েকজন লোক সে বিষয়টি তুলে ধরেছে। যা পরিষ্কার নয় তা হ'ল এলডিজেডের চেয়ে হাফম্যানের কেন সেই অতিরিক্ত অপ্রয়োজনীয়তার চেয়ে ভাল সমাধান করা যায়? মূল উত্সের অপ্রতুলতার সাথে বিপরীতে এটার কী অনন্য, যেখানে হাফম্যানের চেয়ে এলজেড আরও ভাল কাজ করে?