ترميز شانون-فانو (بالإنجليزية: Shannon–Fano coding) هو ترميز يستخدم لضغط البيانات استناداً إلى مجموعة من الرموز واحتمالاتها، يُنسب إلى كلود شانون وروبرت فانو.[1]
لبناء شجرة الترميز شانون-فانو يجب مراعاة التالي:
المثال التالي يظهر فيه نطبيق لخوارزمية شانون-فانو لبناء الشجرة لخمسة رموز مع ترددتها موضحة في الجدول التالية:
الرمز | E | D | C | B | A |
---|---|---|---|---|---|
العداد | 5 | 6 | 6 | 7 | 15 |
الاحتمالات | 0.12820513 | 0.15384615 | 0.15384615 | 0.17948718 | 0.38461538 |
كل الرموز يتم ترتيبها حسب التردد من اليسار إلى اليمين كما هو موضح في الفقرة (a) من الصورة. بعد ذلك يتم وضع خط فاصل بين الرمز B والرمز C كما هو موضح في الفقرة (b) بحيث يكون مجموع الجزء الأيسر 22 مقرب لمجموع الجزء الأيمن 17. وهذا أقل فارق بين مجموع المجموعتين.
الرمز | E | D | C | B | A |
---|---|---|---|---|---|
الترميز | 111 | 110 | 10 | 01 | 00 |
نتيجة ترميز شانون-فانو للرموز A B C بتان لكل رمز وثلاث بتات للرموز D E
يتم إنشاء شجرة الترميز لشانون فانو من الجذر إلى الأوراق بينما يقوم ترميز هوفمان من الأوراق إلى جذر في الاتجاه المعاكس.
باستخدام نفس المثال السابق أعلاه لخمسة رموز مع ترددتها موضحة في الجدول التالية:
الرمز | E | D | C | B | A |
---|---|---|---|---|---|
العداد | 5 | 6 | 6 | 7 | 15 |
الاحتمالات | 0.12820513 | 0.15384615 | 0.15384615 | 0.17948718 | 0.38461538 |
يعتبر ترميز هوفمان أفضل من شانون-فانو كما هو موضح في الجدول التالي:
الرمز | E | D | C | B | A |
---|---|---|---|---|---|
الترميز | 111 | 110 | 101 | 100 | 0 |
نتيجة ترميز هوفمان واحد بت للرمز A وثلاث بتات للرموز B C D E
The Imploding algorithm is actually a combination of two distinct algorithms. The first algorithm compresses repeated byte sequences using a sliding dictionary. The second algorithm is used to compress the encoding of the sliding dictionary output, using multiple Shannon–Fano trees.