// ترميز تونستال — ضغط أمثل من متغيّر إلى ثابت
يحوّل تسلسلات ذات طول متغير إلى شفرات بطول ثابت.
يُبنى القاموس باستخدام توزيع احتمالي للرموز.
الشفرات ذات الطول الثابت تجعل فك الترميز بسيطًا وسريعًا.
يبني ترميز تونستال قاموسًا من تسلسلات بطول متغير تُطابق مع شفرات ثنائية بطول ثابت. يبدأ برموز منفردة، ثم يوسّع في كل خطوة التسلسل الأعلى احتمالًا بإضافة كل رموز الأبجدية الممكنة. هكذا نحصل على كود متغيّر إلى ثابت أمثل حيث تحصل التسلسلات الأكثر احتمالًا على كلمات كود مخصّصة.
النص: 'aabaa' مع P(a)=0.8, P(b)=0.2 بناء القاموس (شفرات 3-بت): البداية: a, b توسيع 'a': aa, ab توسيع 'aa': aaa, aab توسيع 'ab': aba, abb القاموس النهائي (8 شفرات): aaa → 000 aab → 001 aba → 010 abb → 011 aa → 100 ab → 101 a → 110 b → 111 الترميز: 'aabaa' → 001 100 (aab + aa)
ترميز تونستال هو أسلوب ترميز إنتروبي متغيّر إلى ثابت الطول. على عكس هوفمان (ثابت إلى متغيّر)، يقوم تونستال بربط تسلسلات مصدر ذات طول متغير بكلمات كود ذات طول ثابت، مما يجعله مثاليًا للتطبيقات التي تحتاج إلى معدل خرج ثابت.
هوفمان: مدخل ثابت → خرج متغيّر (مثال: 'a' → '0'، 'b' → '10'). تونستال: مدخل متغيّر → خرج ثابت (مثال: 'aa' → '000'، 'ab' → '001'). تونستال أبسط للعتاد والتزامن، لكنه عادةً يحقق نسبة ضغط أقل من هوفمان.
نبدأ برموز منفردة. نكرر: 1) إيجاد التسلسل الأعلى احتمالًا، 2) حذفه وإضافة كل التمديدات الممكنة بإضافة رمز واحد، 3) نستمر حتى نصل إلى حجم القاموس المطلوب (2^n لشفرة بطول n بت).
يُستخدم ترميز تونستال في ضغط الكلام، وترميز الصور، والأنظمة التي تتطلب خرجًا بمعدل ثابت. وهو مفيد خصوصًا في تطبيقات العتاد والأنظمة الزمنية الحقيقية حيث تجعل الشفرات متغيرة الطول التوقيت أكثر تعقيدًا.