لدينا ملف مكون من عدد من المحارف.
تتوزع المحارف في الملف بشكل اعتباطي.
سنفترض للتسهيل عدد المحارف أربعة
وأن المحارف هي
A B C D
مثال
AACABBACDDACADAACDAADAB
(طبعاً هذه ليست سلسلة الخيارات لفحص مؤتمت...)
حجم الملف من هذا النوع هو
حجم الملف = عدد المحارف في الملف × حجم المحرف.
عدد المحارف في الملف يفرضه المستخدم صاحب الملف
حجم المحرف: يتعلق بعدد المحارف المتوفرة في الأبجدية المستخدمة.
في المثال السابق هناك أربعة محارف مستقلة فقط، ومنه يمكن تمييز المحرف بـ 2 بت أي أن حجم المحرف هو 2 بت.
فمثلاً نرمز كالتالي
A=00
B=00
C=00
D=00
لنفترض ملفاً يتكون من مليون محرف موزعة بالشكل التالي
500 ألف محرف A
350 ألف محرف B
130 ألف محرف C
20 ألف محرف D
حجم الملف = 1 مليون × 2 بت = 2 مليون بت
نريد ضغط الملف أي استبداله بملف جديد ذو حجم أضغر من الحجم السابق.
طريقة هوفمان
------
إن الترميز السابق يسمى الترميز ذو الطول الثابت
Fixed-Length Encoding
أي أن جميع المحارف تأخذ تراميز متساوية الطول (2 بت في المثال السابق)
وهو أبسط أنواع التراميز.
لاحظ هوفمان أنه في كثير من الملفات المفيدة لا تكون الأحرف متكررة بنفس العدد
(فمثلاً في المثال السابق حرف A هو الأكثر تكراراً).
ووجد أنه من غير العادل أن نعطي أحرف ذات تواترات مختلفة تراميز متساوية بالطول
بل يجب إعطاء الأحرف الأكثر وروداً تراميز قصيرة والأثل وروداً تراميز طويلة.
في المثال السابق لنعطي الأحرف التراميز التالية
ِA = 0
B = 10
C = 110
D = 111
فمثلاً إذا كان لدينا الملف
A A B C A C D A نرمزه بـ 0 0 10 110 0 110 111 0
الشرط على أي ترميز ألا يكون رمز هو بادئة لرمز آخر
لأنه لو كان ذلك لما أمكن عند فك الترميز معرفة أي من
المحرفين نختار (البادئة أم المبدوء...)
إن الطول المطلوب لتخزين الأحرف:
ِA 1
B 2
C 3
D 3
وبذلك يصبح حجم الملف الكلي:
1 × 500 ألف +
2 × 350 ألف +
3 × 130 ألف +
3 × 20 ألف =
1650000 بت
وهو أضغر من حجم الملف الأصلي
تبقى عدة نقاط للمناقشة:
----------
1- التوفير السابق يبدو قليل، ولكن في الحالات العملية (ملف نصي على أبجدية ASCII) يكون هذا الترميز أكثر من فعال حيث يقل حجم الملف عادة إلى أقل من النصف.
2- إبجاد التراميز: القاعدة البديهية هي إعطاء الأحرف الأكثر وروداً تراميز قصيرة والأثل وروداً تراميز طويلة
لكن هناك بعض النظريات هنا لم أود ذكرها. المهم يجب بناء خوارزمية توجد ذه التراميز
3- حتى يتم فك الضغط نحتاج إلى
الملف المضغوط
تكرارات محارف الأبجدية المستخدمة
من تكرارات محارف الأبجدية المستخدمة يمكن إيجاد ترميز كل محرف
ومن جدول تراميز المحارف يمكن التعرف على الملف
هذه المرة سأتوقف هنا وأطلب من الأعضاء النشيطين متابعة الموضوع
(توفير الخوارزمية، شرح كيفية الضغط...)







