লেফেল-জিভ নয় এমন এনট্রপি হফম্যান কোডিং কেন মুছে ফেলবে?


13

জনপ্রিয় ডিফল্ট অ্যালগরিদম লেফেল-জিভের শীর্ষে হাফম্যান কোডিং ব্যবহার করে।

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

এটি এই অবশিষ্ট অপ্রয়োজনীয়তা যা হাফম্যান কোডিং আংশিকভাবে বাদ দেয় এবং এর ফলে সংকোচনকে উন্নত করে।

আমার প্রশ্ন হ'ল কেন এই অবশিষ্ট অপ্রয়োজনীয়তা সফলভাবে হাফম্যান কোডিং দ্বারা নির্মূল করা হয়েছে এবং এলজেড নয়? হাফম্যান বনাম এলজেডের কোন বৈশিষ্ট্য এটি ঘটায়? সহজেই আবার এলজেড চালানো হবে (এটি, দ্বিতীয় বার এলজেডের সাথে এলজেড সংক্ষেপিত ডেটা এনকোডিং করা) অনুরূপ কিছু অর্জন করবে? তা না হলে কেন? তেমনিভাবে, প্রথমে হাফম্যানের সাথে এবং তারপরে এলজেডের কাজ নিয়ে সংকোচন করা হবে এবং যদি তা না হয় তবে কেন?

আপডেট: এটি স্পষ্ট যে এলজেডের পরেও কিছু অপ্রয়োজনীয়তা থাকবে। বেশ কয়েকজন লোক সে বিষয়টি তুলে ধরেছে। যা পরিষ্কার নয় তা হ'ল এলডিজেডের চেয়ে হাফম্যানের কেন সেই অতিরিক্ত অপ্রয়োজনীয়তার চেয়ে ভাল সমাধান করা যায়? মূল উত্সের অপ্রতুলতার সাথে বিপরীতে এটার কী অনন্য, যেখানে হাফম্যানের চেয়ে এলজেড আরও ভাল কাজ করে?

উত্তর:


13

এটি মূলত একটি মন্তব্য ছিল, তবে এটি অনেক দীর্ঘ হয়েছে।

আপনি যদি ডিফল্টের দিকে তাকান তবে হাফম্যান যা সংকুচিত হচ্ছে তা হ'ল এলজেড Z77 এর আউটপুট; এলজেড 7777 কাজ করে (যখন এটি কাঁচা ডেটার তুলনায় কম বিট নেয়) সংক্ষেপে স্ট্রিংয়ের মধ্যে একটি পয়েন্টার প্রেরণ করে, এবং ম্যাচের দৈর্ঘ্য যা পয়েন্টারটির পরে কতগুলি প্রতীক নেবে তা বলে দেয়। তত্ত্বটি দেখায় যে অতিরিক্ত সংকোচনের পরেও এই কৌশলটি শেষ পর্যন্ত উত্স এনট্রপিতে রূপান্তরিত করে। যাইহোক, ডেটা সংকোচনে, যে কোনও সময় আপনার কাছে এমন বিতরণ থাকে যা সম্পূর্ণরূপে এলোমেলো নয়, আপনি এটি সংকুচিতও করতে পারেন। LZ77 — পয়েন্টার এবং ম্যাচের দৈর্ঘ্য of এর আউটপুট সম্পূর্ণ এলোমেলো বিশ্বাস করার কোনও কারণ নেই। এজেপটিক সীমাতে তাদের এলোমেলোভাবে সম্পূর্ণ করতে তাদের রূপান্তর করতে হবে, যেহেতু এলজেড y77 অসম্পূর্ণভাবে অনুকূল, তবে অনুশীলনে আপনি কেবল একটি সীমাবদ্ধ অভিধান ব্যবহার করেন, সুতরাং তারা সম্ভবত এলোমেলোভাবে সম্পূর্ণরূপে দূরে থাকতে পারে যে আপনি তাদের উপর আরও সংকোচনের মাধ্যমে জিতেছেন। স্বাভাবিকভাবেই, আপনি পয়েন্টারগুলির জন্য একটি হাফম্যান কোড এবং অন্যটি ম্যাচের দৈর্ঘ্যের জন্য ব্যবহার করেন, কারণ এই দুটি প্রক্রিয়াটির আলাদা আলাদা পরিসংখ্যান রয়েছে।

দ্বিতীয় রাউন্ডের সংক্ষেপণের জন্য কেন হাফম্যান এলজেডের চেয়ে বেশি ব্যবহার করবেন? হাফম্যানের চেয়ে এলজেডের যে বড় সুবিধা রয়েছে তা প্রতীকগুলির মধ্যে নির্ভরতার চিকিত্সা করার ক্ষেত্রে। ইংরাজীতে, যদি একটি বর্ণ 'ক' হয়, তার পরেরটি 'ইউ' হওয়ার সম্ভাবনা থাকে, ইত্যাদি on যদি চিহ্নগুলি স্বতন্ত্র ইভেন্ট হয় তবে হাফম্যান সরল এবং সংক্ষিপ্ত স্ট্রিংয়ের জন্য পাশাপাশি বা আরও ভাল কাজ করে works এলজেড 7777 এর আউটপুটটির জন্য, আমার স্বজ্ঞাততাটি হ'ল প্রতীকগুলি মোটামুটি স্বতন্ত্র হওয়া উচিত, তাই হাফম্যানের আরও ভাল কাজ করা উচিত।


আমি আপনার 1 ম অনুচ্ছেদে আপনার সাথে রয়েছি: এলজেড আরও সংক্ষেপ করতে এখনও কিছু বাড়াবাড়ি ছেড়ে দেয়। তবে আপনার 2 য় অনুচ্ছেদটি এখনও হাত avingেউ না থাকলে লাফিয়ে উঠবে বলে মনে হচ্ছে। দুটি যুক্তি রয়েছে: ১. এলজেডের পরে অপ্রয়োজনীয়তা শূন্য-অর্ডার (অর্থাত্ পি (এক্স_এন) আনুমানিক x ডেটা - সংক্ষেপণ.com/theory.shtml ) এবং ২. শূন্য-অর্ডার রিডানডেন্সিতে হাফম্যান এলজেডের চেয়ে ভাল কাজ করে; হাই-অর্ডার রিডানডেন্সিতে, এলজেড আরও ভাল কাজ করে। সম্ভবত এই দাবিগুলি উভয়ই সত্য, তবে
আপনিও

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

10

ডেটা সংক্ষেপণ দুটি জিনিস সম্পর্কে সত্যই: মডেলিং এবং এনকোডিং। এলজেডের পরিবারের অ্যালগরিদমগুলি সঠিক পুনরাবৃত্তির সংক্ষিপ্ত রূপ হিসাবে পাঠ্যটির মডেল করে, যা অনেক এলোমেলো উত্সের জন্য asympotically অনুকূল এবং অনেকগুলি আসল পাঠ্যের পক্ষে যুক্তিযুক্ত ভাল। কিছু ইনপুটগুলির জন্য, তবে এই মডেলটি বেশ খারাপ হতে পারে। উদাহরণস্বরূপ, প্রত্যয় অ্যারেটি মূল পাঠ্যের মতো সংকোচনযোগ্য হলেও আপনি সরাসরি প্রত্যয় অ্যারে সংকুচিত করতে LZ ব্যবহার করতে পারবেন না।

(p,,c)pc

lognn

সুতরাং সংক্ষেপে, হাফম্যান টিউপসগুলিকে সংকুচিত করতে এলজেডকে পরাজিত করে, কারণ এর মডেল (স্থির বিতরণ বনাম হুবহু পুনরাবৃত্তি) তথ্যের জন্য আরও ভাল মিল match


ধন্যবাদ, জনি। মনে হচ্ছে মূল অনাবশ্যক বামটি হ'ল রেপের দৈর্ঘ্য সাধারণত বৃহত্তরের চেয়ে ছোট হয় (সমানভাবে বিতরণ করা হয় না [0,2 ^ n])। হাফম্যান এই জিরো অর্ডার অসমমিত্রে ভাল করে, অন্যদিকে এলজেডের ভাল কাজ করার জন্য আরও বড় বৈশিষ্ট্য প্রয়োজন। এটা কি ঠিক? এবং কেন শুরু করতে হাফম্যানকে ব্যবহার করবেন না - এলজেডের সাথে মোটেও বিরক্ত করবেন কেন?
এসআরবার্টজেমস

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

2

উত্তরটি আমি অনুসন্ধানের অভিধানের আকারে বিশ্বাস করি।

ডেটাটির লোকালটির ধারণা রয়েছে (এটি বলতে গেলে, যদি কোনও টুকরো ডেটা ব্যবহার করা হয় তবে সম্ভবত এটি আবার ব্যবহার করা হবে সম্ভবত), এবং এলজেড আলগোরিদম অনুসন্ধানের অভিধানটি নির্মাণে এটির সুবিধা গ্রহণ করে। এটি লুকোচুরি দ্রুত রাখার জন্য সীমাবদ্ধ পরিমাণের নোড সহ একটি ত্রি তৈরি করে । যখন এটি আকারের সীমাটি হিট করে, এটি অন্য একটি ত্রি তৈরি করে, পূর্ববর্তীটি সম্পর্কে "ভুলে"। সুতরাং এটি সরল অক্ষরগুলির জন্য আবার অনুসন্ধানের টেবিলটি তৈরি করতে হবে, তবে কিছু শব্দ যদি আর ব্যবহার না করা হয় তবে সেগুলিকে আর স্মৃতিতে রাখা হয় না, তাই একটি ছোট এনকোডিং ব্যবহার করা যেতে পারে।

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


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

2

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

তবে এই সমস্ত বিষয়গুলি কীভাবে হয় তা কল্পনা করার জন্য আমার নির্বুদ্ধ উপায়। লেফেল-জিভকে হফম্যান ঠিক কীভাবে পিছনে ফেলেছে তা দেখার জন্য আমাদের এখানে একটি সত্য প্রমাণের প্রয়োজন হবে।


2
লোকেরা অভিযোজিত হাফম্যান কোডিং সংজ্ঞায়িত করেছে, যা কেবল একবার ইনপুট দেখে। এই আলোচনার উদ্দেশ্যে, অভিযোজিত এবং অ-অভিযোজিত হাফম্যান কোডিং বেশ একইভাবে আচরণ করবে।
পিটার শোর

2

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

প্রমিত তথ্য তত্ত্বের পাঠ্যগুলিতে আরও বিশদ পাওয়া যাবে, যেমন, কভার এবং থমাস দ্বারা তথ্য তত্ত্বের উপাদানগুলি।


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

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

@ পিটার: তবে এই ক্ষেত্রে, উত্সটি প্রথমে কিছু পাঠ্য উত্পন্ন পাঠ্য বিন্যাসে এবং তারপরে ঠিক এইচটিএমএল ফর্ম্যাটে একই পাঠ্য উত্পন্ন করে। কিছু স্বেচ্ছাসেবী প্লেইন থেকে সরল পাঠ্য থেকে এইচটিএমএলে এই পরিবর্তনটি অহংকারিক স্টেশনারি সম্পত্তি ভঙ্গ করে বলে মনে হচ্ছে। অন্যদিকে, প্লেইন টেক্সট এবং এইচটিএমএল পাঠ্য পৃথকভাবে সংকুচিত করার চেয়ে সংক্ষেপণের ফলাফলগুলি আরও ভাল, কারণ সরল পাঠ্য বিন্যাসে একটি পাঠ্য এবং এইচটিএমএল ফর্ম্যাটে একই পাঠ্যের মধ্যে প্রচুর পারস্পরিক তথ্য রয়েছে।
জৌনি সিরিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.