অভিযোজিত হাফম্যান কোডিং কীভাবে কাজ করে?


10

হাফম্যান কোডিং হ'ল ডেটা সংক্ষেপণের জন্য ব্যবহৃত এনট্রপি কোডিংয়ের একটি বহুল ব্যবহৃত পদ্ধতি । এটি ধরে নেওয়া হয় যে আমাদের একটি সংকেতের পরিসংখ্যান সম্পর্কে সম্পূর্ণ জ্ঞান আছে। তবে হাফম্যান কোডিংয়ের এমন সংস্করণ রয়েছে যা স্ট্রিমিং মিডিয়াতে ব্যবহৃত হয় এবং সিগন্যালের পরিসংখ্যান সম্পর্কে সম্ভবত সবকিছু জানতে পারে না। এই অভিযোজিত হাফম্যান এনকোডারগুলি কীভাবে কাজ করবে?


1
আপনি উদাহরণ প্রয়োগ সহ উইকিপিডিয়া নিবন্ধটি পড়েছেন? en.wikedia.org/wiki/Adaptive_Huffman_coding#Vitter_algorithm আপনার কি আরও নির্দিষ্ট প্রশ্ন রয়েছে?
এন্ডোলিথ

উত্তর:


7

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

হাফম্যান গাছের উদাহরণ

গাছটি ওজন হ্রাস বা ইনপুট ক্রমের সংঘটন হওয়ার সম্ভাবনা কমিয়ে সাজানো হয়েছে; শীর্ষে পাতাগুলি সর্বাধিক সম্ভাব্য প্রতীকগুলি উপস্থাপন করে যা সংকুচিত ডেটা স্ট্রিমের মধ্যে সংক্ষিপ্ততম উপস্থাপনা প্রাপ্ত করে। তারপরে গাছটি সংকুচিত ডেটা সহ সংরক্ষণ করা হয় এবং পরে ডিকম্প্রেসর দ্বারা পরে (সঙ্কোচিত) ইনপুট ক্রমটি পুনরায় তৈরি করতে ব্যবহৃত হয়। প্রারম্ভিক এনট্রপি কোড প্রয়োগের একটি হিসাবে, স্ট্যান্ডার্ড হাফম্যান কোডিং মোটামুটি সোজা।


অভিযোজিত হাফম্যান কোডারের কাঠামোটি বেশ অনুরূপ; এটি প্রতিটি ইনপুট প্রতীক মানের জন্য দক্ষ এনকোডিংগুলি নির্বাচন করতে ইনপুট ক্রমের পরিসংখ্যানগুলির অনুরূপ ট্রি-ভিত্তিক উপস্থাপনা ব্যবহার করে। মূল পার্থক্যটি হ'ল, অ্যালগরিদমের স্ট্রিমিং বাস্তবায়ন হিসাবে, ইনপুটটির সম্ভাব্য ভর কার্যকারিতা সম্পর্কে কোনও অগ্রাধিকার জ্ঞান উপলব্ধ নেই; ক্রমের পরিসংখ্যানগুলি উড়ানের উপরে অবশ্যই অনুমান করা উচিত। যদি কেউ একই হাফম্যান এনকোডিং স্কিম ব্যবহার করে তবে এর অর্থ হ'ল সংকুচিত প্রবাহে প্রতিটি চিহ্নের এনকোডিং তৈরি করতে ব্যবহৃত গাছটি অবশ্যই ইনপুট স্ট্রিমটি প্রক্রিয়াধীন হওয়ার সাথে সাথে গতিশীলরূপে তৈরি এবং বজায় রাখতে হবে।

ভিটার অ্যালগরিদম এটি সম্পাদনের এক উপায়; প্রতিটি ইনপুট প্রতীক প্রক্রিয়া করার সাথে সাথে গাছটি আপডেট করা হয় এবং আপনি গাছের নিচে নামার সাথে সাথে প্রতীক সংঘটন হওয়ার সম্ভাবনা হ্রাস হওয়ার বৈশিষ্ট্য বজায় রাখে। সময়ের সাথে সাথে গাছ কীভাবে আপডেট হয় এবং ফলাফল সংকুচিত ডেটা কীভাবে আউটপুট প্রবাহে এনকোড করা হয় তার জন্য অ্যালগোরিদম নিয়মের একটি সেট নির্ধারণ করে। ইনপুট ক্রমটি গ্রাস হওয়ার সাথে সাথে গাছের কাঠামোর ইনপুটটির সম্ভাব্যতা বন্টনের আরও এবং আরও সঠিক বিবরণ উপস্থাপন করা উচিত। স্ট্যান্ডার্ড হাফম্যান কোডিং পদ্ধতির বিপরীতে, ডিকম্প্রেসরের ডিকোডিংয়ের জন্য ব্যবহার করার জন্য একটি স্ট্যাটিক ট্রি নেই; এটি decompression প্রক্রিয়া চলাকালীন নিয়মিত একই গাছ রক্ষণাবেক্ষণ কার্য সম্পাদন করতে হবে।

সংক্ষেপে : অভিযোজিত হাফম্যান কোডার স্ট্যান্ডার্ড অ্যালগরিদমের সাথে খুব একইভাবে কাজ করে; তবে পুরো ইনপুট সিক্যুয়েন্সের পরিসংখ্যানের (স্টাফের হাফম্যান ট্রি) স্থিতিশীল পরিমাপের পরিবর্তে একটি গতিশীল, ক্রমযুক্ত (যেমন প্রথম প্রতীক থেকে বর্তমান প্রতীক পর্যন্ত) অনুক্রমের সম্ভাব্যতা বন্টনের অনুমান প্রতিটি চিহ্নকে এনকোড (এবং ডিকোড) করতে ব্যবহৃত হয় । স্ট্যান্ডার্ড হাফম্যান কোডিং পদ্ধতির বিপরীতে, অভিযোজিত হাফম্যান অ্যালগরিদমের জন্য এনকোডার এবং ডিকোডার উভয় ক্ষেত্রেই এই পরিসংখ্যান বিশ্লেষণের প্রয়োজন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.