كيف تأتي ، تصبح الملفات النصية المختلفة أحجامًا مختلفة بعد الضغط؟

StackOverflow https://stackoverflow.com/questions/2906491

سؤال

لدي ملف لبعض حجم النص العشوائي = 27 جيجابايت وبعد الضغط يصبح 40 ميجابايت أو نحو ذلك.

ويصبح ملف SQL 3.5 جيجابايت 45 ميجابايت بعد الضغط.

لكن ملف نصي 109 ميجابايت يصبح 72 ميجابايت بعد الضغط ، لذا ما الذي يمكن أن يكون خطأ في ذلك.

لماذا أقل ضغطًا ، يجب أن يكون 10 ميغابايت أو نحو ذلك ، أو أفتقد شيئًا ما.

جميع الملفات كما يمكنني رؤيتها هي النص الإنجليزي فقط وبعض الرموز النحوية (/ ،. - = + etc)

لماذا ا؟

إذا لم يكن بإمكانك معرفة كيف يمكنني ضغط ملف نصي؟

يمكنني رمز في PHP ، NP في ذلك.

هل كانت مفيدة؟

المحلول

تعتمد نسبة ضغط ملف على محتواه.

تعمل معظم خوارزميات الضغط عن طريق تحويل البيانات المتكررة إلى تكرار واحد ، وتحديد عدد المرات التي تكرر فيها.

على سبيل المثال ، ملف يحتوي على الحرف a يمكن ضغط 1،000،000 مرة أكثر من ملف مع محتوى عشوائي تمامًا.

لمزيد من المعلومات ، يرجى تقديم المزيد من المعلومات.

نصائح أخرى

فكر في الأمر بهذه الطريقة ... إذا كان لديك ملف يحتوي على:

abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc

الملف في الأساس فقط يخزن abc times 18

من ناحية أخرى ، هذا الملف:

abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz

يمكن أن تخزن فقط:

abcdefghijklmnopqrstuvwxyz times 2

وبالتالي ، فإن الملف الثاني يضغط كملف أكبر من الأول ، على الرغم من أنه أقصر في البداية.

يعمل الضغط عن طريق إزالة التكرارات في بيانات الإدخال. يصبح ملف سعة 3.5 جيجابايت أقل بكثير بعد الضغط لأنه يحتوي على الكثير من البيانات المكررة ، في حين أن ملفك الأصغر لا يضغط بنفس القدر لأنه لا يحتوي على الكثير من البيانات المكررة.

إذا كنت تريد أن تفهم كيف يعمل الضغط هو معظم الأدوات المساعدة ، فابحث عن ويكيبيديا Lempel-Ziv-Welch مقال ، وهو الخوارزمية التي يتم بناء معظم هذه الخوارزميات.

من المحتمل أن يكون PHP هو الخيار الخاطئ لمثل هذا المشروع لأنه سيكون بطيئًا للغاية في تلك اللغة مقارنة بالمكتبات الحالية الجيدة تمامًا في C والتي تعد بالفعل جزءًا من PHP نفسها.

بشكل عام ، يعتمد مستوى الضغط على مقدار التشابه والأنماط التي يمكن أن تجدها الخوارزمية في الملف. إذا كانت جميع الملفات تحتوي على نص إنجليزي ، فإن الأرقام غريبة. أظن بشدة أن الملفات التي لها نسبة ضغط متطرفة تحتوي على أجزاء كبيرة من شرائح النص المتكررة.

يعمل الضغط عن طريق إزالة التكرار في البيانات. ربما يكون المكان النهائي للبدء مع ترميز هوفمان وهي واحدة من أولى الأعمال المنوية مباشرة على المشكلة ، ولكن قد تهتم بالرجوع مرة أخرى إلى أعمال شانون الأصلية على نظرية المعلومات.

هذه ليست مفاهيم جديدة - لقد اكتسبوا اهتمامًا كبيرًا لأول مرة في الأربعينيات والخمسينيات من القرن الماضي عندما كان الناس مهتمين بنقل البيانات بكفاءة على قنوات محدودة للغاية. الموضوع ليس فقط مهمًا للحوسبة أيضًا - هناك بعض الاتصالات العميقة للغاية مع الانتروبيا والفيزياء الأساسية الأخرى. على سبيل المثال ، اتضح أنه لا يمكن تمييز البيانات المضغوطة تمامًا عن الضوضاء البيضاء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top