ترميز هوفمان

شجرة هوفمان مُولَّدة من الترددات الدقيقة للنص "هذا مثال على شجرة هوفمان". يتطلب ترميز الجملة بهذا الرمز 135 (أو 147) بتًا، مقارنةً بـ 288 (أو 180) بتًا في حال استخدام 36 حرفًا من 8 (أو 5) بتات (بافتراض أن بنية شجرة الترميز معروفة للمفكك، وبالتالي لا يلزم احتسابها ضمن المعلومات المرسلة). يوضح الجدول المرفق ترددات ورموز كل حرف.
شارالترددشفرة
فضاء7111
أ4010
هـ4٠٠٠
و31101
ح21010
أنا21000
م20111
ن20010
s21011
ت20110
ل111001
o100110
ص110011
ر111000
u1٠٠١١١
x110010

في علوم الحاسوب ونظرية المعلومات ، يُعدّ رمز هوفمان نوعًا خاصًا من رموز البادئة المثلى ، ويُستخدم عادةً لضغط البيانات دون فقدانها . تُعرف عملية إيجاد أو استخدام هذا الرمز بتشفير هوفمان ، وهي خوارزمية طوّرها ديفيد أ. هوفمان أثناء دراسته للدكتوراه في معهد ماساتشوستس للتكنولوجيا ، ونُشرت في بحثه عام 1952 بعنوان "طريقة لإنشاء رموز الحد الأدنى من التكرار". [ 1 ]

يمكن اعتبار مخرجات خوارزمية هوفمان جدول ترميز متغير الطول لترميز رمز المصدر (مثل حرف في ملف). تستخلص الخوارزمية هذا الجدول من الاحتمالية أو التكرار المُقدَّر لحدوث كل قيمة ممكنة لرمز المصدر ( الوزن ). وكما هو الحال في طرق ترميز الإنتروبيا الأخرى ، تُستخدم بتات أقل لتمثيل الرموز الأكثر شيوعًا مقارنةً بالرموز الأقل شيوعًا. يمكن تنفيذ طريقة هوفمان بكفاءة، حيث تجد رمزًا في زمن خطي يتناسب مع عدد أوزان الإدخال إذا كانت هذه الأوزان مُرتبة. [ 2 ] ومع ذلك، على الرغم من كونها الأمثل بين طرق ترميز الرموز بشكل منفصل، فإن ترميز هوفمان ليس الأمثل دائمًا بين جميع طرق الضغط - إذ يُستبدل بالترميز الحسابي [ 3 ] إذا لزم الأمر لتحقيق نسبة ضغط أفضل.

تاريخ

في عام ١٩٥١، خُيِّر ديفيد أ. هوفمان وزملاؤه في قسم نظرية المعلومات بمعهد ماساتشوستس للتكنولوجيا بين كتابة بحثٍ فصلي أو اجتياز امتحانٍ نهائي . كلّفهم الأستاذ روبرت م. فانو بكتابة بحثٍ فصلي حول مشكلة إيجاد أكثر الشفرات الثنائية كفاءة. لم يتمكن هوفمان من إثبات كفاءة أيٍّ من الشفرات، وكان على وشك الاستسلام والبدء في الاستعداد للامتحان النهائي عندما خطرت له فكرة استخدام شجرة ثنائية مُرتبة حسب التردد ، وسرعان ما أثبت أن هذه الطريقة هي الأكثر كفاءة. [ ٤ ]

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

مصطلحات

تستخدم ترميز هوفمان طريقةً محددةً لاختيار تمثيل كل رمز، مما ينتج عنه رمز بادئة (يُسمى أحيانًا "رموزًا خالية من البادئة"، أي أن سلسلة البتات التي تُمثل رمزًا معينًا لا تُشكل أبدًا بادئةً لسلسلة البتات التي تُمثل أي رمز آخر). يُعد ترميز هوفمان طريقةً شائعةً لإنشاء رموز البادئة، لدرجة أن مصطلح "رمز هوفمان" يُستخدم على نطاق واسع كمرادف لمصطلح "رمز البادئة" حتى عندما لا تُنتج خوارزمية هوفمان هذا الرمز.

تعريف المشكلة

بناء شجرة هوفمان

وصف غير رسمي

منح
مجموعة من الرموزS{\displaystyle S}ولكل رمزxS{\displaystyle x\in S}الترددوx{\displaystyle f_{x}}يمثل نسبة الرموز في النص التي تساويx{\displaystyle x}[ 5 ]
يجد
رمز ثنائي خالٍ من البادئات (مجموعة من الكلمات المشفرة) مع الحد الأدنى المتوقع لطول الكلمة المشفرة (بصورة مكافئة، شجرة ذات الحد الأدنى لطول المسار الموزون من الجذر ).

وصف رسمي

إدخال . أبجديأ=(أ1،أ2،...،أن){\displaystyle A=(a_{1},a_{2},\dots ,a_{n})}وهو الأبجدية الرمزية ذات الحجمن{\displaystyle n}. مترابطة بيانيةدبليو=(w1،w2،...،wن){\displaystyle W=(w_{1},w_{2},\dots ,w_{n})}، وهو عبارة عن مجموعة من أوزان الرموز (الموجبة) (عادةً ما تكون متناسبة مع الاحتمالات)، أيwأنا=وزن(أأنا)،أنا{1،2،...،ن}{\displaystyle w_{i}=\operatorname {weight} \left(a_{i}\right),\,i\in \{1,2,\dots ,n\}}. المخرجات . الكودج(دبليو)=(ج1،ج2،...،جن){\displaystyle C\left(W\right)=(c_{1},c_{2},\dots ,c_{n})}، وهو عبارة عن مجموعة من الكلمات المشفرة (الثنائية)، حيثجأنا{\displaystyle c_{i}}هي كلمة السر لـأأنا،أنا{1،2،...،ن}{\displaystyle a_{i},\,i\in \{1,2,\dots ,n\}}الهدف . دع​ل(ج(دبليو))=أنا=1نwأناطول(جأنا){\textstyle L(C(W))=\sum _{i=1}^{n}w_{i}\operatorname {length} (c_{i})}ليكن طول المسار الموزون للتعليمات البرمجيةج{\displaystyle C}. حالة:ل(ج(دبليو))ل(تي(دبليو)){\displaystyle L(C(W))\leq L(T(W))}لأي رمزتي(دبليو){\displaystyle T(W)}.

مثال

نقدم مثالاً على نتيجة ترميز هوفمان لرمز مكون من خمسة أحرف وأوزان محددة. لن نتحقق من أنه يقلل قيمة L إلى أدنى حد ممكن لجميع الرموز، ولكننا سنحسب L ونقارنها بإنتروبيا شانون H لمجموعة الأوزان المحددة؛ والنتيجة قريبة من الأمثل.

المدخلات ( أ ، و )الرمز ( أ )أبجدهـمجموع
الأوزان ( w i )0.100.150.300.160.29= 1
المخرج جالكلمات السرية ( ci )010011110010 
طول الكلمة المشفرة (بالبتات) ( i )33222
المساهمة في طول المسار المرجح ( i w i )0.300.450.600.320.58L ( C ) = 2.25
الأمثليةميزانية الاحتمالية ( 2 i )1/81/81/41/41/4= 1.00
محتوى المعلومات (بالبتات) ( −log 2 w i ) ≈3.322.741.742.641.79 
المساهمة في الإنتروبيا ( w i log 2 w i )0.3320.4110.5210.4230.518H ( A ) = 2.205

بالنسبة لأي شفرة ثنائية التفرد ، أي قابلة للفك بطريقة فريدة ، يكون مجموع احتمالات جميع الرموز دائمًا أقل من أو يساوي واحدًا. في هذا المثال، يساوي المجموع واحدًا تمامًا؛ ونتيجة لذلك، تُسمى الشفرة شفرة كاملة . إذا لم يكن الأمر كذلك، يمكن دائمًا اشتقاق شفرة مكافئة بإضافة رموز إضافية (باحتمالات صفرية مرتبطة بها)، لجعل الشفرة كاملة مع الحفاظ على تفردها الثنائي .

كما عرّفها شانون (1948) ، فإن محتوى المعلومات h (بالبتات) لكل رمز a i باحتمالية غير صفرية هو

ح(أأنا)=سجل21wأنا.{\displaystyle h(a_{i})=\log _{2}{1 \over w_{i}}.}

الإنتروبيا H (بالبتات) هي المجموع المرجح، عبر جميع الرموز a i ذات الاحتمالية غير الصفرية w i ، لمحتوى المعلومات لكل رمز:

ح(أ)=wأنا>0wأناح(أأنا)=wأنا>0wأناسجل21wأنا=-wأنا>0wأناسجل2wأنا.{\displaystyle H(A)=\sum _{w_{i}>0}w_{i}h(a_{i})=\sum _{w_{i}>0}w_{i}\log _{2}{1 \over w_{i}}=-\sum _{w_{i}>0}w_{i}\log _{2}w_{i}.}

(ملاحظة: الرمز ذو الاحتمالية الصفرية لا يُساهم في الإنتروبيا، لأنليمw0+wسجل2w=0{\displaystyle \lim _{w\to 0^{+}}w\log _{2}w=0}لذا، ولتبسيط الأمر، يمكن حذف الرموز ذات الاحتمالية الصفرية من الصيغة أعلاه.

نتيجةً لنظرية شانون لترميز المصدر ، يُعدّ الإنتروبيا مقياسًا لأصغر طول ممكن نظريًا لكلمة الترميز باستخدام الأبجدية المُعطاة مع الأوزان المرتبطة بها. في هذا المثال، يبلغ متوسط ​​طول كلمة الترميز المرجّح 2.25 بت لكل رمز، وهو أكبر بقليل من قيمة الإنتروبيا المحسوبة البالغة 2.205 بت لكل رمز. لذا، لا يُعدّ هذا الترميز مثاليًا فحسب، بمعنى أنه لا يوجد ترميز آخر مُمكن يُؤدي أداءً أفضل، بل إنه قريب جدًا من الحد النظري الذي وضعه شانون.

بشكل عام، لا يشترط أن يكون رمز هوفمان فريدًا. وبالتالي، فإن مجموعة رموز هوفمان لتوزيع احتمالي معين هي مجموعة جزئية غير فارغة من الرموز التي تقلل منل(ج){\displaystyle L(C)}بالنسبة لتوزيع الاحتمالية هذا. (مع ذلك، لكل تخصيص لطول كلمة الترميز الأدنى، يوجد على الأقل رمز هوفمان واحد بتلك الأطوال.)

التقنية الأساسية

ضغط

توضيح لاستخدام ترميز هوفمان لترميز الرسالة "A_DEAD_DAD_CEDED_A_BAD_BABE_A_BEADED_ABACA_BED". في الخطوات من 2 إلى 6، تُرتَّب الأحرف تصاعديًا حسب التكرار، ثم يُدمج الحرفان الأقل تكرارًا في كل خطوة ويُعاد إدخالهما في القائمة، ويُنشأ جزء من الشجرة. تُجتاز الشجرة النهائية في الخطوة 6 لإنشاء القاموس في الخطوة 7. وتُستخدم هذه الشجرة في الخطوة 8 لترميز الرسالة.
يُنتج المصدر 4 رموز مختلفة{أ1،أ2،أ3،أ4}{\displaystyle \{a_{1},a_{2},a_{3},a_{4}\}}باحتمال{0.4؛0.35؛0.2؛0.05}{\displaystyle \{0.4;0.35;0.2;0.05\}}يتم إنشاء شجرة ثنائية من اليسار إلى اليمين، وذلك بأخذ الرمزين الأقل احتمالاً ودمجهما معًا لتكوين رمز مكافئ آخر باحتمال يساوي مجموع احتمالي الرمزين. تُكرر هذه العملية حتى يتبقى رمز واحد فقط. يمكن بعد ذلك قراءة الشجرة عكسيًا، من اليمين إلى اليسار، مع تخصيص بتات مختلفة للفروع المختلفة. شفرة هوفمان النهائية هي:
رمزشفرة
أ10
أ210
أ3110
أ4111
الطريقة القياسية لتمثيل إشارة مكونة من 4 رموز هي استخدام 2 بت لكل رمز، لكن إنتروبيا المصدر تبلغ 1.74 بت لكل رمز. إذا استُخدم ترميز هوفمان لتمثيل الإشارة، فإن متوسط ​​الطول ينخفض ​​إلى 1.85 بت لكل رمز؛ وهو ما يزال بعيدًا عن الحد النظري لأن احتمالات الرموز تختلف عن قوى سالبة للعدد اثنين.

تعتمد هذه التقنية على إنشاء شجرة ثنائية من العقد. ويمكن تخزين هذه العقد في مصفوفة عادية ، يعتمد حجمها على عدد الرموز.ن{\displaystyle n}يمكن أن تكون العقدة إما عقدة طرفية أو عقدة داخلية . في البداية، تكون جميع العقد عقدًا طرفية، تحتوي على الرمز نفسه، ووزنه (تكرار ظهوره)، ورابط اختياري إلى عقدة أصلية ، مما يُسهّل قراءة الكود (بشكل عكسي) بدءًا من العقدة الطرفية. تحتوي العقد الداخلية على وزن ، وروابط إلى عقدتين فرعيتين ، ورابط اختياري إلى عقدة أصلية . وكعرف شائع، يُمثل البت '0' متابعة الابن الأيسر، بينما يُمثل البت '1' متابعة الابن الأيمن. تحتوي الشجرة المكتملة على ما يصل إلىن{\displaystyle n}العقد الورقية ون-1{\displaystyle n-1}العقد الداخلية. شجرة هوفمان التي تحذف الرموز غير المستخدمة تنتج أطوال التعليمات البرمجية المثلى.

تبدأ العملية بالعقد الطرفية التي تحتوي على احتمالات الرمز الذي تمثله. ثم، تأخذ العملية العقدتين ذواتي الاحتمالية الأقل، وتُنشئ عقدة داخلية جديدة تُعد هاتان العقدتان أبناءً لها. يُحدد وزن العقدة الجديدة بمجموع أوزان الأبناء. بعد ذلك، نُطبق العملية مرة أخرى على العقدة الداخلية الجديدة وعلى العقد المتبقية (أي نستبعد العقدتين الطرفيتين)، ونُكرر هذه العملية حتى تبقى عقدة واحدة فقط، وهي جذر شجرة هوفمان.

تستخدم أبسط خوارزمية بناء قائمة انتظار ذات أولوية حيث تُعطى العقدة ذات الاحتمالية الأقل أعلى أولوية:

  1. أنشئ عقدة فرعية لكل رمز وأضفها إلى قائمة الانتظار ذات الأولوية.
  2. في حال وجود أكثر من عقدة واحدة في قائمة الانتظار:
    1. قم بإزالة العقدتين ذواتي الأولوية الأعلى (الاحتمالية الأقل) من قائمة الانتظار
    2. قم بإنشاء عقدة داخلية جديدة مع هاتين العقدتين كعقد فرعية، واحتمالية تساوي مجموع احتمالات العقدتين.
    3. أضف العقدة الجديدة إلى قائمة الانتظار.
  3. العقدة المتبقية هي العقدة الجذرية، وبذلك تكون الشجرة قد اكتملت.

بما أن هياكل بيانات قائمة الانتظار ذات الأولوية الفعالة تتطلب O(log n ) من الوقت لكل عملية إدخال، والشجرة التي تحتوي على n ورقة تحتوي على 2 n −1 عقدة، فإن هذه الخوارزمية تعمل في O( n log n ) من الوقت، حيث n هو عدد الرموز.

إذا تم ترتيب الرموز حسب الاحتمالية، فهناك طريقة خطية (O( n )) لإنشاء شجرة هوفمان باستخدام طابورين ، يحتوي الأول على الأوزان الأولية (مع مؤشرات إلى الأوراق المرتبطة بها)، ويتم وضع الأوزان المجمعة (مع مؤشرات إلى الأشجار) في نهاية الطابور الثاني. يضمن هذا أن يبقى أقل وزن دائمًا في مقدمة أحد الطابورين: [ 2 ]

  1. ابدأ بعدد من الأوراق يساوي عدد الرموز.
  2. قم بوضع جميع العقد الطرفية في قائمة الانتظار الأولى (حسب الاحتمالية بترتيب تصاعدي بحيث يكون العنصر الأقل احتمالاً في رأس قائمة الانتظار).
  3. في حال وجود أكثر من عقدة واحدة في قوائم الانتظار:
    1. قم بإزالة العقدتين ذواتي الوزن الأدنى من قائمة الانتظار عن طريق فحص مقدمات كلتا قائمتي الانتظار.
    2. قم بإنشاء عقدة داخلية جديدة، مع العقدتين اللتين تمت إزالتهما للتو كعقد فرعية (يمكن أن تكون أي عقدة فرعية) ومجموع أوزانهما كوزن جديد.
    3. أضف العقدة الجديدة إلى الجزء الخلفي من قائمة الانتظار الثانية.
  4. العقدة المتبقية هي العقدة الجذرية؛ لقد تم الآن إنشاء الشجرة.

بمجرد إنشاء شجرة هوفمان، يتم اجتيازها لإنشاء قاموس يربط الرموز بالرموز الثنائية على النحو التالي:

  1. ابدأ بتعيين العقدة الحالية إلى الجذر.
  2. إذا لم تكن العقدة عقدة طرفية، فقم بتسمية الحافة إلى الابن الأيسر بـ 0 والحافة إلى الابن الأيمن بـ 1. كرر العملية عند كل من الابن الأيسر والابن الأيمن.

ثم تتم قراءة التشفير النهائي لأي رمز عن طريق تسلسل التسميات الموجودة على الحواف على طول المسار من العقدة الجذرية إلى الرمز.

في كثير من الحالات، لا يعتبر تعقيد الوقت مهمًا جدًا في اختيار الخوارزمية هنا، لأن n هنا هو عدد الرموز في الأبجدية، وهو عادةً عدد صغير جدًا (مقارنة بطول الرسالة المراد ترميزها)؛ بينما يهتم تحليل التعقيد بالسلوك عندما يصبح n كبيرًا جدًا.

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

تخفيف الضغط

بشكل عام، عملية فك الضغط هي ببساطة ترجمة سلسلة رموز البادئات إلى قيم بايت فردية، وذلك عادةً من خلال اجتياز شجرة هوفمان عقدةً تلو الأخرى مع قراءة كل بت من دفق الإدخال (الوصول إلى عقدة طرفية ينهي بالضرورة البحث عن قيمة البايت تلك). ولكن قبل ذلك، يجب إعادة بناء شجرة هوفمان بطريقة ما. في أبسط الحالات، حيث تكون ترددات الأحرف قابلة للتنبؤ إلى حد كبير، يمكن بناء الشجرة مسبقًا (بل وتعديلها إحصائيًا في كل دورة ضغط) وبالتالي إعادة استخدامها في كل مرة، على حساب كفاءة الضغط ولو جزئيًا. خلاف ذلك، يجب إرسال معلومات إعادة بناء الشجرة مسبقًا. قد يكون أحد الأساليب البسيطة هو إضافة عدد مرات تكرار كل حرف إلى دفق الضغط. لسوء الحظ، قد تصل الزيادة في الحجم في هذه الحالة إلى عدة كيلوبايتات، لذا فإن هذه الطريقة قليلة الفائدة عمليًا. إذا تم ضغط البيانات باستخدام التشفير المتعارف عليه ، فيمكن إعادة بناء نموذج الضغط بدقة باستخدامب2ب{\displaystyle B\cdot 2^{B}}تُقاس البيانات بوحدات بت (حيث B هو عدد البتات لكل رمز). هناك طريقة أخرى تتمثل في إضافة شجرة هوفمان، بتًا بتًا، إلى دفق الإخراج. على سبيل المثال، بافتراض أن القيمة 0 تُمثل عقدة أصلية والقيمة 1 تُمثل عقدة طرفية، فعند مصادفة العقدة الطرفية، يقرأ روتين بناء الشجرة البتات الثمانية التالية لتحديد قيمة الحرف لتلك العقدة الطرفية. تستمر العملية بشكل متكرر حتى الوصول إلى آخر عقدة طرفية؛ عندئذٍ، تُعاد بناء شجرة هوفمان بدقة. يتراوح الحمل الزائد باستخدام هذه الطريقة من 2 إلى 320 بايت تقريبًا (بافتراض أبجدية من 8 بتات). توجد العديد من التقنيات الأخرى الممكنة أيضًا. على أي حال، نظرًا لأن البيانات المضغوطة قد تتضمن "بتات لاحقة" غير مستخدمة، يجب أن يكون برنامج فك الضغط قادرًا على تحديد متى يتوقف عن إنتاج الإخراج. يمكن تحقيق ذلك إما عن طريق إرسال طول البيانات المضغوطة مع نموذج الضغط أو عن طريق تحديد رمز خاص للدلالة على نهاية الإدخال (ومع ذلك، يمكن أن تؤثر الطريقة الأخيرة سلبًا على أمثلية طول الرمز).

العقارات الرئيسية

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

الأمثلية

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

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

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

يُعدّ ترميز هوفمان الأمثل بين جميع الطرق في أي حالة يكون فيها كل موضع في دفق الإدخال متغيرًا عشوائيًا معروفًا ومستقلًا ومتطابق التوزيع، باحتمالية ثنائية . تميل رموز البادئة، وبالتالي ترميز هوفمان تحديدًا، إلى أن تكون غير فعّالة مع الأبجديات الصغيرة، حيث غالبًا ما تقع الاحتمالات بين هذه النقاط المثلى (الثنائية). قد تحدث أسوأ حالة لترميز هوفمان عندما تتجاوز احتمالية الرمز الأكثر ترجيحًا بكثير 2 - 1 = 0.5، مما يجعل الحد الأعلى لعدم الكفاءة غير محدود.

هناك طريقتان مترابطتان للتغلب على هذا القصور المحدد مع الاستمرار في استخدام ترميز هوفمان. غالبًا ما يؤدي تجميع عدد ثابت من الرموز معًا ("التجميع") إلى زيادة الضغط (ولا يقلله أبدًا). ​​عندما يقترب حجم الكتلة من اللانهاية، يقترب ترميز هوفمان نظريًا من حد الإنتروبيا، أي الضغط الأمثل. [ 6 ] ومع ذلك، فإن تجميع مجموعات كبيرة من الرموز أمر غير عملي، لأن تعقيد ترميز هوفمان خطي بالنسبة لعدد الاحتمالات المراد ترميزها، وهو عدد أُسّي بالنسبة لحجم الكتلة. هذا يحد من مقدار التجميع الذي يتم تنفيذه عمليًا.

يُعدّ ترميز طول التشغيل بديلاً عملياً واسع الانتشار . تُضيف هذه التقنية خطوةً متقدمةً على ترميز الإنتروبيا، وتحديداً عدّ (سلاسل) الرموز المتكررة، والتي يتم ترميزها لاحقاً. في حالة عمليات برنولي البسيطة ، يُعدّ ترميز غولومب الأمثل بين رموز البادئة لترميز طول التشغيل، وهي حقيقةٌ أثبتتها تقنيات ترميز هوفمان. [ 7 ] وتتبع أجهزة الفاكس نهجاً مشابهاً باستخدام ترميز هوفمان المُعدّل . مع ذلك، فإنّ ترميز طول التشغيل ليس قابلاً للتكيّف مع أنواع الإدخال المتعددة بقدر تقنيات الضغط الأخرى.

الاختلافات

توجد العديد من صيغ ترميز هوفمان، [ 8 ] بعضها يستخدم خوارزمية شبيهة بخوارزمية هوفمان، والبعض الآخر يجد رموز البادئة المثلى (مع وضع قيود مختلفة على المخرجات، على سبيل المثال). تجدر الإشارة إلى أنه في الحالة الأخيرة، لا يشترط أن تكون الطريقة شبيهة بخوارزمية هوفمان، بل ولا يشترط حتى أن يكون وقت تنفيذها متعدد الحدود .

ترميز هوفمان من الرتبة n

تستخدم خوارزمية هوفمان من الرتبة n أبجدية بحجم n ، عادةً {0، 1، ...، n-1}، لترميز الرسائل وبناء شجرة من الرتبة n . وقد تناول هوفمان هذا النهج في ورقته البحثية الأصلية. وتُطبق الخوارزمية نفسها كما في النظام الثنائي (ن=2{\displaystyle n=2}) الرموز، ولكن بدلاً من دمج الرمزين الأقل احتمالاً، يتم تجميع الرموز الأقل احتمالاً معًا .

لاحظ أنه عندما يكون n > 2، لا تستطيع جميع مجموعات الكلمات المصدرية تكوين شجرة كاملة من الرتبة n لترميز هوفمان. في هذه الحالات، قد يلزم إضافة رموز نائبة إضافية باحتمالية 0. وذلك لأن بنية الشجرة تتطلب ربط n فرعًا بشكل متكرر في فرع واحد - وهو ما يُعرف أيضًا باسم " تركيبة n إلى 1". بالنسبة للترميز الثنائي، تكون هذه التركيبة "2 إلى 1"، والتي تعمل مع أي عدد من الرموز. أما بالنسبة للترميز من الرتبة n ، فلا يمكن الحصول على شجرة كاملة إلا عندما يكون باقي قسمة العدد الإجمالي للرموز (الحقيقية + النائبة) على (n-1) يساوي 1. [ 1 ]

ترميز هوفمان التكيفي

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

خوارزمية قالب هوفمان

في أغلب الأحيان، تمثل الأوزان المستخدمة في تطبيقات ترميز هوفمان احتمالات عددية، لكن الخوارزمية المذكورة أعلاه لا تتطلب ذلك؛ بل تتطلب فقط أن تشكل الأوزان شبه زمرة تبديلية مرتبة كليًا ، أي طريقة لترتيب الأوزان وجمعها. تُمكّن خوارزمية قالب هوفمان من استخدام أي نوع من الأوزان (التكاليف، التكرارات، أزواج الأوزان، الأوزان غير العددية) وإحدى طرق الجمع العديدة (ليس الجمع فقط). يمكن لهذه الخوارزميات حل مسائل تصغير أخرى، مثل تصغيرالأعلىأنا[wأنا+لهـنزتح(جأنا)]{\displaystyle \max _{i}\left[w_{i}+\mathrm {length} \left(c_{i}\right)\right]}، وهي مشكلة طُبقت لأول مرة على تصميم الدوائر.

ترميز هوفمان ذو الطول المحدود / ترميز هوفمان ذو التباين الأدنى

يُعدّ ترميز هوفمان ذو الطول المحدود أحد أنواع الترميز التي يظلّ الهدف فيها هو تحقيق أقصر طول مسار مُرجّح، ولكن مع وجود قيد إضافي يتمثل في أن طول كل كلمة ترميز يجب أن يكون أقل من قيمة ثابتة مُحدّدة. تحلّ خوارزمية دمج الحزم هذه المشكلة باستخدام أسلوب جشع بسيط يُشبه إلى حد كبير الأسلوب المُستخدم في خوارزمية هوفمان. يبلغ تعقيدها الزمنييا(نل){\displaystyle O(nL)}، أينل{\displaystyle L}يمثل الحد الأقصى لطول كلمة التشفير. لا توجد خوارزمية معروفة لحل هذه المشكلة فييا(ن){\displaystyle O(n)}أويا(نسجلن){\displaystyle O(n\log n)}الوقت، على عكس مسائل هوفمان التقليدية المصنفة مسبقًا وغير المصنفة، على التوالي.

ترميز هوفمان بتكاليف حروف غير متساوية

في مسألة ترميز هوفمان القياسية، يُفترض أن كل رمز في المجموعة التي تُبنى منها كلمات الترميز له تكلفة متساوية للإرسال: فكلمة الترميز التي يبلغ طولها N رقمًا ستكون تكلفتها دائمًا N ، بغض النظر عن عدد الأرقام التي تساوي 0 أو 1، وما إلى ذلك. عند العمل وفقًا لهذا الافتراض، فإن تقليل التكلفة الإجمالية للرسالة وتقليل العدد الإجمالي للأرقام هما نفس الشيء.

يُعدّ ترميز هوفمان ذو التكاليف غير المتساوية للأحرف تعميمًا دون هذا الافتراض: قد تكون أطوال أحرف أبجدية الترميز غير منتظمة، نظرًا لخصائص وسيط الإرسال. ومن الأمثلة على ذلك أبجدية ترميز شفرة مورس ، حيث يستغرق إرسال الشرطة وقتًا أطول من إرسال النقطة، وبالتالي تكون تكلفة إرسال الشرطة أعلى. لا يزال الهدف هو تقليل متوسط ​​طول الكلمة المشفرة المرجح، ولكن لم يعد كافيًا مجرد تقليل عدد الرموز المستخدمة في الرسالة. لا توجد خوارزمية معروفة لحل هذه المشكلة بنفس الطريقة أو بنفس كفاءة ترميز هوفمان التقليدي، على الرغم من أن ريتشارد إم. كارب قد حلّها [ 9 ] ، وقد قام موردخاي جيه. جولين بتحسين حله لحالة التكاليف الصحيحة [ 10 ] .

الأشجار الثنائية الأبجدية المثلى (ترميز هو-تاكر)

في مسألة ترميز هوفمان القياسية، يُفترض أن أي كلمة رمزية يمكن أن تُقابل أي رمز إدخال. في النسخة الأبجدية، يجب أن يكون الترتيب الأبجدي للمدخلات والمخرجات متطابقًا. على سبيل المثال،أ={أ،ب،ج}{\displaystyle A=\left\{a,b,c\right\}}تعذر تعيين رمزح(أ،ج)={٠٠،1،01}{\displaystyle H\left(A,C\right)=\left\{00,1,01\right\}}ولكن بدلاً من ذلك ينبغي تعيين إماح(أ،ج)={٠٠،01،1}{\displaystyle H\left(A,C\right)=\left\{00,01,1\right\}}أوح(أ،ج)={0،10،11}{\displaystyle H\left(A,C\right)=\left\{0,10,11\right\}}يُعرف هذا أيضًا باسم مشكلة هو-تاكر ، نسبةً إلى تي سي هو وآلان تاكر ، مؤلفي الورقة البحثية التي قدمت أوليا(نسجلن){\displaystyle O(n\log n)}حلٌّ زمنيٌّ لمسألة الترتيب الأبجدي الثنائي الأمثل هذه، [ 11 ] وهو يُشابه خوارزمية هوفمان في بعض الجوانب، ولكنه ليس تعديلًا عليها. تستخدم خوارزمية غارسيا-واكس ، التي وضعها أدريانو غارسيا وميشيل ل. واكس (1977)، منطقًا أبسط لإجراء المقارنات نفسها ضمن نفس الحد الزمني الإجمالي. غالبًا ما تُستخدم هذه الأشجار الثنائية الأبجدية المثلى كأشجار بحث ثنائية . [ 12 ]

قانون هوفمان المتعارف عليه

إذا كانت الأوزان المقابلة للمدخلات المرتبة أبجديًا مرتبةً عدديًا، فإن ترميز هوفمان له نفس أطوال الترميز الأبجدي الأمثل، والذي يمكن إيجاده من خلال حساب هذه الأطوال، مما يجعل ترميز هو-تاكر غير ضروري. يُطلق على الترميز الناتج عن المدخلات المرتبة عدديًا (أو المعاد ترتيبها) أحيانًا اسم ترميز هوفمان القياسي ، وهو غالبًا الترميز المستخدم عمليًا، نظرًا لسهولة ترميزه وفك ترميزه. تُسمى تقنية إيجاد هذا الترميز أحيانًا بترميز هوفمان-شانون-فانو ، لأنه أمثل مثل ترميز هوفمان، ولكنه أبجدي في احتمالية الوزن، مثل ترميز شانون-فانو . ترميز هوفمان-شانون-فانو المقابل للمثال هو{٠٠٠،001،01،10،11}{\displaystyle \{000,001,01,10,11\}}وهو الحل الأمثل أيضاً، إذ يمتلك نفس أطوال الكلمات المشفرة للحل الأصلي. ولكن في شفرة هوفمان التقليدية ، تكون النتيجة{110،111،٠٠،01،10}{\displaystyle \{110,111,00,01,10\}}.

التطبيقات

يُنتج كلٌّ من الترميز الحسابي وترميز هوفمان نتائج متكافئة - أي تحقيق الإنتروبيا - عندما يكون لكل رمز احتمال من الشكل 1/2 k . في حالات أخرى، يُمكن للترميز الحسابي أن يُوفر ضغطًا أفضل من ترميز هوفمان، لأنه - بديهيًا - يُمكن أن يكون لكلمات الترميز فيه أطوال بتات غير صحيحة، بينما لا يُمكن أن يكون لكلمات الترميز في رموز البادئات، مثل رموز هوفمان، إلا عددًا صحيحًا من البتات. لذلك، فإن كلمة الترميز ذات الطول k تُطابق بشكل مثالي رمزًا باحتمال 1/2 k فقط ، ولا يتم تمثيل الاحتمالات الأخرى بشكل مثالي؛ بينما يُمكن جعل طول كلمة الترميز في الترميز الحسابي يُطابق تمامًا الاحتمال الحقيقي للرمز. هذا الاختلاف ملحوظ بشكل خاص لأحجام الأبجديات الصغيرة.

مع ذلك، لا تزال رموز البادئة شائعة الاستخدام نظرًا لبساطتها وسرعتها العالية وعدم وجود براءات اختراع تغطيها . وغالبًا ما تُستخدم كطبقة خلفية لأساليب الضغط الأخرى. فخوارزمية Deflate ( المستخدمة في PKZIP ) وبرامج ترميز الوسائط المتعددة مثل JPEG و MP3 تعتمد على نموذج أمامي وتكميم ، يليه استخدام رموز البادئة؛ والتي تُسمى غالبًا "رموز هوفمان"، على الرغم من أن معظم التطبيقات تستخدم رموزًا متغيرة الطول مُحددة مسبقًا بدلًا من الرموز المصممة باستخدام خوارزمية هوفمان.

مراجع

  1. 1 2 هوفمان، د. (1952). "طريقة لإنشاء رموز الحد الأدنى من التكرار" (ملف PDF) . وقائع معهد مهندسي الراديو . 40 (9): 1098-1101 . doi : 10.1109/JRPROC.1952.273898 .
  2. 1 2 فان ليوين، جان (1976). "حول بناء أشجار هوفمان" (ملف PDF) . ICALP : 382-410 . تاريخ الاسترجاع: 20 فبراير 2014 .
  3. زي-نيان لي؛ مارك إس. درو؛ جيانغتشوان ليو (9 أبريل 2014). أساسيات الوسائط المتعددة . سبرينغر ساينس آند بيزنس ميديا. ISBN 978-3-319-05290-8.
  4. هوفمان، كين (1991). "نبذة: ديفيد أ. هوفمان: ترميز "ترتيب" الأصفار والآحاد" . مجلة ساينتفك أمريكان : 54-58 .
  5. ^ كلاينبرج ، جون. تاردوس ، إيفا (2005/03/16). تصميم الخوارزمية (1 ed.). تعليم بيرسون . ص. 165. ردمك   9780321295354تم الاطلاع عليه بتاريخ 26 يناير 2025 .
  6. غريبوف، ألكسندر (2017-04-10). "الضغط الأمثل لخط متعدد مع أجزاء وأقواس". arXiv : 1604.07476 [ cs.CG ].
  7. غالاغر، آر جي؛ فان فورهيس، دي سي (1975). "رموز المصدر المثلى للأبجديات العددية الموزعة هندسيًا". معاملات IEEE في نظرية المعلومات . 21 (2): 228-230 . doi : 10.1109/TIT.1975.1055357 .
  8. أبراهامز، ج. (11 يونيو 1997). "أشجار الترميز والتحليل لتشفير المصدر بدون فقدان البيانات". كُتبت في أرلينغتون، فرجينيا، الولايات المتحدة الأمريكية. وقائع مؤتمر ضغط وتعقيد المتتاليات 1997 (رقم التصنيف 97TB100171) . قسم الرياضيات وعلوم الحاسوب والمعلومات، مكتب البحوث البحرية (ONR). ساليرنو: IEEE . الصفحات 145-171 . CiteSeerX 10.1.1.589.4726 . doi : 10.1109/SEQUEN.1997.666911 . ISBN   0-8186-8132-2. S2CID 124587565 . 
  9. كارب، ريتشارد م. (31 يناير 1961). "ترميز الحد الأدنى من التكرار للقناة المنفصلة عديمة الضوضاء". معاملات معهد مهندسي الراديو في نظرية المعلومات . 7 (1). معهد مهندسي الكهرباء والإلكترونيات: 27-38 . doi : 10.1109/TIT.1961.1057615 .
  10. جولين، مورديكاي ج. (يناير 1998). "خوارزمية برمجة ديناميكية لإنشاء رموز مثالية خالية من البادئات بتكاليف أحرف غير متساوية" (ملف PDF) . معاملات IEEE في نظرية المعلومات . 44 (5) (نُشر في 1 سبتمبر 1998): 1770-1781 . Bibcode : 1998ITIT...44.1770G . doi : 10.1109/18.705558 . S2CID 2265146. تاريخ الاسترجاع: 10 سبتمبر 2024 . 
  11. هو، تي سي ؛ تاكر، إيه سي (1971). "أشجار البحث الحاسوبية المثلى والرموز الأبجدية ذات الطول المتغير". مجلة SIAM للرياضيات التطبيقية . 21 (4): 514. doi : 10.1137/0121057 . JSTOR 2099603 . 
  12. كنوت، دونالد إي. (1998)، "الخوارزمية G (خوارزمية غارسيا-واكس للأشجار الثنائية المثلى)"، فن برمجة الحاسوب، المجلد 3: الفرز والبحث ( الطبعة الثانية)، أديسون-ويسلي، الصفحات 451-453  انظر أيضًا التاريخ وقائمة المراجع، الصفحات 453-454.

فهرس