Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
krit.doc
Скачиваний:
10
Добавлен:
02.05.2019
Размер:
437.76 Кб
Скачать

Задание 2. Коды, учитывающие частоту символов

Построить для алфавита А, полученного в задании 1, двоичные коды, учитывающие частоту символов. Расчет частоты выполнить по исходному тексту. Закодировать полученным кодом исходный текст.

Указания по выполнению задания 2

Для построения требуемых кодов выполним следующую последовательность действий:

  1. для расчета частот символов из алфавита А (графа 1 табл. 2) определим число появлений mi каждого i-го символа алфавита А в исходном тексте (графа 2 табл. 2),

Таблица 2

Символ

алфавита А

Число

появлений mi

1

2

а

2

в

4

е

2

и

3

л

1

н

1

о

1

п

1

р

1

с

1

т

1

ч

1

ь

1

  1. для определения размера кода вновь используем формулу l = [logh N] при N = 13, h = 2. Получаем:

l = [logh 13] = [3,7] = 4, (7)

  1. используя комбинаторный подход к измерению информации, определим, сколько кодовых комбинаций можно получить из 4 двоичных разрядов, заполняя их нулями и единицами теми способами, которые показаны в графе 2 табл. 3. Чтобы решить эту задачу, установим, прежде всего, способ комбинирования символов двоичного алфавита (h = 2). Анализ кодов из табл. 1 показывает, что это перестановки с повторениями, для которых верно соотношение:

(ri)!

П(ri!)

П
п(h) = , (8)

где Пп(h) – число перестановок из h элементов с повторениями ri,

i – символ из множества символов, используемых для кодирования (у нас это множество {0,1}).

Теперь рассчитаем число кодовых комбинаций для каждого способа заполнения кодовых разрядов (графа 4 табл. 3).

Таблица 3

п/п

Способы заполнения кодовых разрядов

Обозначение в формуле (8)

Число кодовых комбинаций

1

2

3

4

1

1

все нули

r0 = 4, r1 = 0

(4+0)! 4!

4!*0! 4!

2

4

1 единица, 3 нуля

r0 = 3, r1 = 1

(1+3)! 4! 2*3*4

1!*3! 2*3 6

3

6

2 единицы, 2 нуля

r0 = 2, r1 = 2

(2+2)! 4! 2*3*4

2!*2! 2*2 4

4

3 единицы, 1 ноль

r0 = 1, r1 = 3

аналогично второму способу, т.е. 4

5

все единицы

r0 = 0, r1 = 4

аналогично первому способу, т.е. 1

Суммирование полученного числа кодовых комбинаций (1+4+6+4+1=16) показывает, что для кодирования символов исходного алфавита А с заданной мощностью N достаточно принятых способов заполнения разрядов кода, поскольку 16>(N=13),

  1. упорядочим список символов алфавита А по убыванию частоты. Получим табл. 4 (графы 1,2),

  2. назначим символам коды постоянной длины, число единиц в которых тем больше, чем меньше частота символа (графа 4 табл. 4).

Таблица 4

Символ

алфавита А

Число

появлений mi

Способы заполнения кодовых разрядов

Код

Число кодовых комбинаций2

1

2

3

4

5

в

4

все нули

0000

1

и

3

1 единица, 3 нуля

0001

4

а

2

1 единица, 3 нуля

0010

е

2

1 единица, 3 нуля

0100

л

1

1 единица, 3 нуля

1000

н

1

2 единицы, 2 нуля

1010

6

о

1

2 единицы, 2 нуля

1001

п

1

2 единицы, 2 нуля

0110

р

1

2 единицы, 2 нуля

0101

с

1

2 единицы, 2 нуля

0011

т

1

2 единицы, 2 нуля

1100

ч

1

3 единицы, 1 ноль

1011

2

ь

1

3 единицы, 1 ноль

1101

Кодирование исходного текста полученным кодом дает результат (отдельно закодированы фамилия, имя и отчество):

петров 0110 0100 1100 0101 1001 0000

иван 0001 0000 0010 1010 (9)

васильевич 0000 0010 0011 0001 1000 1101 0100 0000 0001 1011

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]