Содержание Задание 1 Задание 2 3 5 Задание 1. Произвести кодирование по методам Шеннона-Фано и Хаффмена для алфавита: pА=0,3; рБ=0,12; рС=0,19; рГ=0,22; рд=0,17. Вычислить среднюю длину и избыточность полученного кода. Решение а) метод Шеннона-Фано 1) буквы алфавита сообщений упорядочим в порядке убывания их вероятностей; 2) последовательность букв разбиваем на две по возможности равновероятные группы; 3) всем буквам первой группе присваивается символ «1», второй – «0»; 4) каждую из полученных подгрупп, в свою очередь, разбиваем на подгруппы с одинаковыми суммарными вероятностями с присвоением «1» и «0». 5) данный процесс продолжаем до тех пор, пока в каждой из подгрупп не останется по одной букве. Таблица 1 – построение кода Шеннона-Фано Буква Разряды P 1 А 0,3 Г 0,22 С 0,19 Д 0,17 Б 0,12 1 0 Код 2 3 1 - 11 0 - 10 1 - 01 1 001 0 000 0 Средняя длина полученного кода: 5 𝑘𝑐 = ∑ 𝑘𝑖 𝑝𝑖 = 2 ∗ 0,3 + 2 ∗ 0,22 + 2 ∗ 0,19 + 3 ∗ 0,17 + 3 ∗ 0,12 = 2,29 бит; 𝑖=1 Энтропия 𝐻 = − ∑5𝑖=1 𝑝𝑖 ∗ log 2 𝑝𝑖 = 0,3 ∗ log 2 0,3 + 0,22 ∗ log 2 0,22 + 0,19 ∗ log 2 0,19 + 0,17 ∗ log 2 0,17 + 0,12 ∗ log 2 0,12 = 2,26 бит; 2 Т.о., средняя длина получилась достаточно близкой к предельному значению 𝑘 = [log 2 5] = 3бит. Код Шеннона-Фано по сравнению с равномерным кодом позволил сократить среднюю длину кодовых комбинаций на 24%, т.к. избыточность 𝐷 = 1 − 𝑘𝑐 𝑘 =1− 2.29 3 = 0,24. б) метод Хаффмена Код Хаффмена строим в виде кодового дерева следующим образом: 1) буквы алфавита сообщений располагаются в порядке убывания их вероятностей; 2) значения вероятностей двух последних букв суммируем, при этом верхней приписываем символ "1", а нижней - "0". Полученное суммарное значение вероятности располагаем на такой воображаемой горизонтали, чтобы не нарушился общий порядок убывания вероятностей; 3) младшие значения вероятностей вновь суммируем с приписыванием "1" и "0". Этот процесс продолжаем до тех пор, пока полученная суммарная вероятность не станет равной единице; 4) код соответствующей буквы составляем из символов, встречающихся при прохождении кодового дерева по линиям "направо-вверх-направо...". При этом кодовую комбинацию записываем справа налево. Средняя длина полученного кода: 5 𝑘𝑐 = ∑ 𝑘𝑖 𝑝𝑖 = 2 ∗ 0,3 + 2 ∗ 0,22 + 2 ∗ 0,19 + 3 ∗ 0,17 + 3 ∗ 0,12 = 2,29 бит; 𝑖=1 Средняя длина кода, построенного по методике Хаффмена совпала с длиной, полученной по методике Шеннона-Фано. 3 Задание 2. Для алфавита, приведенного в задании 1, произвести кодирование двухбуквенных сочетаний по методам Шеннона-Фано и Хаффмена. Сравнить избыточность полученного кода и кода, полученного в задании 1. Решение. а) метод Шеннона-Фано Буква АА АГ ГА АС СА АД ДА ГГ ГС СГ ГД ДГ СС АБ БА СД ДС ДД ГБ БГ СБ БС ДБ БД ББ P 0,09 0,066 0,066 0,057 0,057 0,051 0,051 0,0484 0,0418 0,0418 0,0374 0,0374 0,0361 0,036 0,036 0,0323 0,0323 0,0289 0,0264 0,0264 0,0228 0,0228 0,0204 0,0204 0,0144 1 Разряды 2 1 3 1 0 1 1 0 0 4 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 1 0 0 1 0 5 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 6 1 0 1 0 Код 111 1101 1100 1011 1010 1001 10001 10000 0111 01101 01100 01011 01010 01001 01000 00111 00110 00101 00100 00011 00010 000011 000010 000001 000000 Средняя длина полученного кода: 25 𝑘𝑐 = ∑ 𝑘𝑖 𝑝𝑖 = 4,56 бит; 𝑖=1 Избыточность: 𝑘 = log 2 25 = 4,64бит ≈ 5бит 𝐷 =1− 𝑘𝑐 4,56 =1− = 0,088. 𝑘 5 4 б) метод Хаффмена 5 Средняя длина полученного кода: 25 𝑘𝑐 = ∑ 𝑘𝑖 𝑝𝑖 = 4,55 бит; 𝑖=1 Избыточность: 𝑘 = log 2 25 = 4,64бит ≈ 5бит 𝐷 =1− 𝑘𝑐 4,55 =1− = 0,09. 𝑘 5 Вывод: Таким образом, избыточность, полученная в задании 2 (D=0,09), в 2,6 раз меньше чем в задании 1 (D=0,24). 6