0 এবং 1 এর স্ট্রিংটি কতটা সংকুচিত হতে পারে তার জন্য কি সর্বাধিক পরিচিত?


38

অনেক দিন আগে আমি একটি সংবাদপত্রের নিবন্ধ পড়েছিলাম যেখানে কোনও প্রকারের অধ্যাপক বলেছিলেন যে ভবিষ্যতে আমরা মাত্র দুটি বিট (বা এর মতো কিছু) তে তথ্য সংকোচন করতে সক্ষম হব।

এটি অবশ্যই সঠিক নয় (এবং এটিও হতে পারে যে তিনি যা বলেছিলেন সে সম্পর্কে আমার স্মৃতি সঠিক নয়)। বোধগম্য 0 এবং 1 এর কোনও স্ট্রিংকে মাত্র দুটি বিটকে সংকুচিত করা ব্যবহারিক হবে না কারণ (এটি প্রযুক্তিগতভাবে সম্ভব হলেও), অনেকগুলি বিভিন্ন ধরণের স্ট্রিং একই দুটি বিটকে সংকুচিত করে শেষ করবে (যেহেতু আমাদের কেবল '01 আছে) 'এবং' 10 'থেকে বেছে নিতে)।

যাইহোক, এটি আমাকে কিছু স্কিম অনুসারে 0 এবং 1 এর স্বেচ্ছাসেবী দৈর্ঘ্যের স্ট্রিং সংক্ষেপণের সম্ভাব্যতা সম্পর্কে ভাবতে পেয়েছে। এই জাতীয় স্ট্রিংয়ের জন্য, স্ট্রিং দৈর্ঘ্যের (0 এবং 1 এর মধ্যে অনুপাত সম্ভবত কোনও ব্যাপার না) এবং সর্বাধিক সংকোচনের মধ্যে একটি পরিচিত সম্পর্ক রয়েছে?

অন্য কথায়, 0 এবং 1 এর স্ট্রিংটি সংকুচিত হতে পারে এমন ন্যূনতম (সবচেয়ে ছোটতম) দৈর্ঘ্যটি কি নির্ধারণ করার কোনও উপায় আছে?

(এখানে আমি গাণিতিক সর্বোচ্চ সংকোচনে আগ্রহী, বর্তমানে প্রযুক্তিগতভাবে যা সম্ভব তা নয়।)


7
আমাদের পছন্দ করতে '00' এবং '11' থাকত। তবে যুক্তিটি একই, আপনি যদি এটি ব্যবহার করেন তবে কেবল চারটি ভিন্ন স্ট্রিং রয়েছে যা আপনি সঙ্কুচিত করতে পারেন।
রিমকো জারলিচ

3
mathoverflow.net/q/160099/34859 : প্লিজ এখানে দেখুন যে কবুতরের নীতি অনুসারে সর্বদা অসীম সংখ্যক স্ট্রিং থাকবে যা সংকুচিত করা যায় না ... ব্যবহৃত অ্যালগরিদম নির্বিশেষে। ('পটভূমি' শিরোনামে বিভাগটি দেখুন প্রশ্ন
এআরআই

4
সংকোচনের উপর নির্ভর করে ডেটা কাঠামো সম্পর্কে আপনার জ্ঞান। দাবা চালগুলি সঙ্কুচিত করার বিষয়ে এই নিবন্ধটি ছিল যা দেখায় যে কীভাবে জ্ঞান যুক্ত করা সংকোচনের বৃদ্ধিতে সহায়তা করে।
স্পেকট্রা

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

হাই @ কেভিনফিগান, এক্ষেত্রে এটি বিকল্প 1 হতে হবে: "ডেটাটি সর্বদা সংকোচনের আগে যেমন ছিল ঠিক তেমন
সঙ্কোচিত

উত্তর:


45

এই গাণিতিকভাবে আনুষ্ঠানিককরণের জন্য কোলমোগোরভ জটিলতা approach দুর্ভাগ্যক্রমে, স্ট্রিংয়ের কোলমোগোরভ জটিলতা গণনা করা একটি আপত্তিজনক সমস্যা। আরও দেখুন: কোলমোগোরভ জটিলতা প্রায় অনুমান করা

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


নিখুঁত সংকোচনের অসম্ভবতার বিষয়ে, আপনি নিম্নলিখিতগুলিতেও আগ্রহী হতে পারেন।


তবে, এনট্রপি অনুমানের জন্য কৌশলগুলি হ'ল সংক্ষেপণ। সংক্ষেপণ এবং এন্ট্রপি একই জিনিস দুটি দিক হতে পারে?
পল উজ্জাক

1
@ পলিউসাকাক, হ্যাঁ, তারা খুব ঘনিষ্ঠভাবে সম্পর্কিত: দেখুন শ্যাননের উপপাদ্যটি দেখুন । তবে দয়া করে নোট করুন: মন্তব্যগুলি কেবল পোস্টটিতে উন্নতি / স্পষ্টকরণের পরামর্শ দেওয়ার জন্য ব্যবহার করা উচিত, ফলো-আপ প্রশ্ন জিজ্ঞাসা করার জন্য নয়। একটি নতুন প্রশ্ন জিজ্ঞাসা করতে, পৃষ্ঠার উপরের-ডান অংশে "প্রশ্ন জিজ্ঞাসা করুন" লিঙ্কটি ব্যবহার করুন।
DW

35

Nlog2N

এছাড়াও, অনেক ক্ষেত্রে আমরা সঠিক পুনর্গঠনের বিষয়ে চিন্তা করি না । একে লসী সংক্ষেপণ বলা হয় , এবং সংগীত এবং ভিডিওগুলি কীভাবে সংকুচিত হয়। এক্ষেত্রে উপরে বর্ণিত নিম্ন সীমানা ধরে রাখে না, তবে আপনি অন্যান্য নিম্ন সীমাটি নিয়ে আসতে পারেন।


1
Nlog2N

27

এখানে একটি সহজ স্কিম যা নির্বিচারে বিট স্ট্রিংগুলি ক্ষয়হীনকে সংকুচিত করতে পারে, এর মধ্যে ক্ষুদ্রতম ফলাফলটি কেবলমাত্র এক বিট:

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

যদি স্ট্রিং অন্য কিছু হয়, তবে আউটপুটটি সিঙ্গল বিট '1' হয়, তারপরে মূল স্ট্রিংয়ের একটি অনুলিপি থাকে।

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


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

6

প্রতিটি সংক্ষেপণ স্কিমের জন্য আপনি আসতে পারেন, এমন ডেটা তৈরি করা সম্ভব যা এটির দ্বারা সঙ্কুচিত হবে ible সুতরাং যদি আপনার সংক্ষেপণ স্কিমটি কিছু ধরণের ডেটার সাথে খুব দক্ষ হয় তবে এটি কখনও কোনও নির্দিষ্ট অনুপাতের সাথে ধারাবাহিকভাবে সংকোচিত হবে না।

একটি নির্দিষ্ট কম্প্রেশন অ্যালগরিদমের জন্য কমপ্রেসিবল ডেটার উদাহরণ উত্পাদন করার উপায়টি সহজ: যে কোনও ধরণের ডেটা নিন এবং বারবার সংকোচনের মাধ্যমে এটি চালান, যতক্ষণ না আকার আর কম না হয়।

সুতরাং বিটগুলির একটি স্ট্রিংয়ের সংকোচনেতাটি স্ট্রিংয়ের দৈর্ঘ্যের কোনও কার্যকারিতা নয়, তবে সংকোচনের অ্যালগরিদমের সাথে সম্পর্কিত জটিলতার।


স্বাগত! নোট করুন যে এটি কেবল ক্ষয়হীন সংকোচনের ক্ষেত্রে প্রযোজ্য। লসী সংক্ষেপণ সমস্ত স্ট্রিং সংকোচন করতে পারে (কমপক্ষে, যতক্ষণ না আপনি অ্যালগরিদম "রিটার্ন খালি স্ট্রিং" একটি ক্ষতিকারক সংকোচিত অ্যালগরিদম হিসাবে গ্রহণ করেন; ;-))।
ডেভিড রিচার্বি

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

হ্যাঁ, আমি মনে করি এটি একটি যুক্তিসঙ্গত ব্যাখ্যা।
ডেভিড রিচার্বি

-2

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

সুতরাং কোনও ব্যাকআপ সিস্টেমে কোনও ফাইলের ব্যাকআপ দেওয়ার চেষ্টা করা স্পষ্টতই স্থান বাঁচাতে ফাইলটি সংকোচিত করার চেষ্টা করা উচিত, তবে প্রথমে ব্যাকআপ সিস্টেমটি পরীক্ষা করে দেখায় যে কোনও ইতিমধ্যে একটি ফাইল ইতিমধ্যে সংরক্ষণ করা হয়েছে! সুতরাং কিছু ব্যাক আপ না করে, ব্যাকআপ সিস্টেমে যা করা হয় তা উদাহরণস্বরূপ মনে করে যে আপনার হার্ড ড্রাইভের ব্যাকআপ সিস্টেমে আপনার ফাইল নম্বর 1,487,578 রয়েছে।

এটি বিশেষত দক্ষ যখন উদাহরণস্বরূপ যখন 10,000 ব্যবহারকারী সকলের কাছে অভিন্ন অপারেটিং সিস্টেম এবং অ্যাপ্লিকেশন ইনস্টল থাকে। একক ব্যবহারকারীর জন্য এটি মোটেই কার্যকর নয়।


4
এটি আকর্ষণীয় তবে আমি কীভাবে প্রশ্নের উত্তর দিয়েছি তা দেখছি না। প্রশ্নটি সংক্ষেপণের সীমাবদ্ধতার জন্য জিজ্ঞাসা করে, এন্টারপ্রাইজ ব্যাকআপগুলির সাধারণ আলোচনা নয়।
ডেভিড রিচার্বি

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