কাঁচা ফাইলের চেয়ে একটি 7 জিপ করা ফাইল কেন বড়? [প্রতিলিপি]


37

সম্ভাব্য সদৃশ:
কেন জিপ কম্প্রেশন কিছু সংকুচিত করে না?

আমি একটি .exe ফাইল 7zip করার চেষ্টা করেছি তবে এটি আসলে আরও বড় হয়ে উঠেছে।

এখানে চিত্র বর্ণনা লিখুন

এটি কি প্রত্যাশিত ফলাফল?


3
হ্যাঁ, এটি প্রত্যাশিত ফলাফল। কেন? কারণ যখন কোনও জিনিস ইতিমধ্যে সংকুচিত হয়ে থাকে (= আরও কম ছোট স্পেস ব্যবহার করে) তখন এটি আরও সংকোচিত করা যায় না।
উলিভি’র

4
কেবল সবারই যোগ করার জন্য - যেহেতু এই এক্স ফাইলটি বিশেষত একটি ইনস্টলার, তাই এর বেশিরভাগ সামগ্রী সম্ভবত একটি জিপ বা ক্যাব সংরক্ষণাগার। আপনি কোনও সাধারণ এক্সি ফাইল থেকে একই ফলাফল পাবেন না (তবে বেশিরভাগ সাধারণ
এক্সি

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

উত্তর:


78

এটি নেমে আসে এন্ট্রপি নামক একটি ধারণায় । উইকিপিডিয়া দেখুন ।

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

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

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

উদাহরণস্বরূপ, আপনার যদি 100 এমবি টেক্সট ফাইল থাকে এবং এটি নিয়মিত জিপ অ্যালগরিদম ব্যবহার করে সংকুচিত করে, তবে এটি 50 এমবি পর্যন্ত সংকুচিত হতে পারে। তারপরে আপনি যদি জিপ ফাইলটি এলজেডএমএ 2 দিয়ে সংকুচিত করেন তবে আপনি এটিকে 40 বা 45 এমবিতে নামিয়ে আনতে পারেন, কারণ জিপের চেয়ে বেশিরভাগ সংকোচযোগ্য ডেটার জন্য এলজেডএমএর উচ্চতর সংকোচনের অনুপাত রয়েছে । সুতরাং এটি যুক্তি দেখায় যে এটি জিপ ডেটাও সংকুচিত করতে পারে, কারণ জিপ এটি থেকে সমস্ত এনট্রপি পুরোপুরি চুষে না। তবে আপনি যদি জিপ ধারককে পুরোপুরি মুছে ফেলেন তবে আপনি এলজেডএমএ 2 দিয়ে কাঁচা পাঠ্য সংকোচনের মাধ্যমে এটি আরও ছোট করে আনতে সক্ষম হতে পারবেন, সম্ভবত 30 - 35 এমবি ক্রমানুসারে কিছু অর্জন করতে পারেন (ধারণাটি চিত্রিত করার জন্য এগুলি কেবল "বায়ু সংখ্যা") ।

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


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

6
@ ঝোকিং: না, সবচেয়ে গুরুত্বপূর্ণ অংশটি মাঝের দিকে: "আপনি যে কোনও কম্প্রেশন প্রোগ্রাম ব্যবহার করেন তা ... কিছুটা ইনপুট এর আকার বাড়িয়ে তুলবে " " 7 জীপের ফাইল-ফর্ম্যাটের একটি অভিধান / ফাইল-শিরোলেখ / ইত্যাদি রয়েছে তবে 7zip এর মধ্যে এমন কোনও অ্যালগোরিদম ব্যবহার করা না থাকলেও আমরা এখনও নিশ্চিত যে কিছু (বাস্তবে, বেশিরভাগ) ইনপুটগুলির আউটপুট থাকবে ইনপুটগুলি নিজের থেকে বড় হিসাবে বা বৃহত্তর। এটি তথ্য-তত্ত্বের একটি প্রাথমিক তথ্য, এবং ফাইল-শিরোনামগুলির সাথে কোনও সম্পর্ক নেই।
ব্লুরাজা - ড্যানি প্লেফুঘুফুট

2
@ মেহেরদাড শিওর: কেবল একটি "সংক্ষেপণ" অ্যালগরিদম লিখুন যা সর্বদা আসল ইনপুটটি দেয়। সেখানে; সম্পন্ন. : পি ... এগুলি ছাড়াও, না - কোনও সংকোচনের অ্যালগরিদম যা একেবারে একটি অ্যালগরিদমের কিছু মেটাডেটা হতে চলেছে , এমনকি যদি এটি ফাইলের শুরুতে কেবল একটি বিট থাকে যা ফাইলটি সঙ্কুচিত কিনা তা নির্দেশ করে (0 == সঙ্কুচিত, 1 == সঙ্কুচিত)। আপনি যদি সমস্ত ফাইলের বিষয়বস্তুগুলি সংশোধন করতে যাচ্ছেন তবে আপনার কিছু মেটাডেটা দরকার । এবং যদি আপনি বিষয়বস্তুগুলি পরিবর্তন করছেন তবে আপনি কিছু ইনপুট আরও বড় করতে যাচ্ছেন ।
allquixotic

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

2
@ মেহরদাদ: "এমন কোনও সংকোচনের অ্যালগরিদম (তবে দরিদ্র) যা কোনও ইনপুটটির দৈর্ঘ্য বৃদ্ধি করে না? " - উত্তরটি হ্যাঁ, না। আছে 2^(n+1)-1আকার এন-বিট বা তার কম সম্ভব বার্তা। আমাদের অ্যালগরিদম অবশ্যই এই এক একটি অনন্য আউটপুট মানচিত্র । যদি এর মধ্যে একটিরও কম বিট সহ একটি মানকে ম্যাপ করা হয় তবে অন্য মানটি অবশ্যই একটির সাথে আরও বেশি করে ম্যাপ করা উচিত।
ব্লুরাজা - ড্যানি পিফ্লুঘুফুট

7

7z তে ব্যবহৃত অন্তর্নিহিত সংক্ষেপণ অ্যালগরিদমগুলি ক্ষয়হীন । যার অর্থ আপনি পুনরাবৃত্তভাবে কোনও ফাইলকে বহুবার সংকুচিত করতে পারেন - সংক্ষেপিত করতে পারেন। তদুপরি, প্রতিটি পুনরাবৃত্তির পরে ফাইলটি ঠিক একই থাকবে remain

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

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

bzip2 , LZMA , LZMA2 এবং 7z ফর্ম্যাট দ্বারা ব্যবহৃত অন্যান্য অ্যালগরিদমগুলি সমস্ত ক্ষতিহীন । অতএব এমন একটি সীমা থাকবে যার পরে এটি আর সংকোচন করতে পারে না। তার উপরে, এক্সিকিউটেবল ইমেজ (.exe) সাধারণত অত্যন্ত সংকোচিত ফাইল হয়। 7 জীপ হিসাবে আরও অনেকগুলি সংক্ষেপণ সরঞ্জাম কিছু মেটাডেটা এম্বেড করে যা প্রকৃতপক্ষে আউটপুট ফাইলটিকে আরও বড় করতে পারে।

মস্তিষ্কের টিজার: আমাদের যদি কোনও লসলেস অ্যালগরিদম থাকে যা সবসময় কোনও ফাইলের আকার হ্রাস করতে পারে?

এই ক্ষেত্রে, আপনি সর্বদা দেখতে পাবেন যে সংকোচিত ফাইলটি ইনপুট ফাইলের চেয়ে ছোট। কেন সম্ভব হচ্ছে না এমন মন্তব্য দেখুন।


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

আপনি কোনও অ্যালগরিদমের গ্যারান্টি দিতে পারবেন না যা ফাইলটি ছোট করে তোলে তবে আপনি সেই ক্ষেত্রে গ্যারান্টি দিতে পারেন যা "কেস" চাপ না দিয়ে আকার বাড়বে না। যদিও কোনও ফাইলের আকার বাড়তে না চাইলে আপনাকে এটি ব্যান্ডের বাইরে (যেমন ফাইলের নাম হিসাবে) নির্দেশ করতে হবে।
জেটিয়ন

@ জেটিওন আপনি কী বলার চেষ্টা করছেন তা আমি নিশ্চিত নই।
ওলেক্সি

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

@ জেটিওন ওহ, আমি দেখছি হ্যাঁ, বোঝা।
ওলেক্সি

6

মূল এক্সিকিউটেবল যদি ইতিমধ্যে সংকুচিত হয়ে থাকে (বা ভারী সংকোচিত ডেটা বা অ-সংকোচনযোগ্য ডেটা ধারণ করে) তবে এটি সংকুচিত করে আকার বাড়াবে।


2

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

ইতিমধ্যে সংকুচিত ফাইলগুলিতে এটি এখনও চিহ্নগুলির একটি সেট তৈরি করে, তবে এর আকার খুব কম করা যায়। আপনার ক্ষেত্রে, ইতিমধ্যে সংক্রামিত ফাইলের প্রতীক টেবিলটি সম্ভবত 2 মেগাবাইটের আশেপাশে বা সম্ভবত এটি আরও কিছু সংকোচনের ব্যবস্থা করে থাকলে আরও বেশি।


0

সংকোচনের ধারণা:

সংক্ষেপণ সফ্টওয়্যার ফাইলগুলির একটি তালিকা তৈরি করে এবং সদৃশ সামগ্রীটি সরিয়ে দেয়।

ইতিমধ্যে সংক্রামিত ফাইলগুলি সংকুচিত করার সময়, আপনি নিজের সংক্ষেপিত ফাইলগুলি মূলের চেয়ে বড় পেতে পারেন।

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