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

3 Шаг: Далее нужно закодировать следующий символ исходной последовательности «вас» - это символ «а».

Для этого, располагаем на интервале [23/25,24/25] граничные точки отрезков пропорциональные вероятностям соответствующих символов алфавита.

Пересчитываем значения граничных точек символов алфавита на новом интервале [23/25,24/25].

Правая граница символа «С» 23/25+(3/25*1/5)=115/125+3/125=118/125

а теперь словами озвучим эту формулу – к началу нового интервала (23/25) прибавляем длину пропорционального отрезка «С» (это длина С на предыдущем шаге=23/25-20/25=3/25 умноженная на его масштаб).

Левой граница символа «В»= правой границе символа «А» = 118/125+(1/25*1/5)= 118/125+1/125=119/125.

4 шаг: Далее нужно закодировать следующий символ исходной последовательности «ВАС» - это символ «С».

Это последний символ в кодируемом сообщении «ВАС», поэтому новые перестройку границ строить не требуется, достаточно найти число равное целому числу, деленному на минимально возможную положительную целую степень двойки попадающее в интервал

[115/125, 118/125] => [0.92, 0.944].

7/8= 0.875 не подходит

15/16= 0,9375 ЭТО ПОДХОДИТ

Значит код сообщения «ВАС» будет соответствовать числу 15/16, для кодирования достаточно будет 4 разрядов.

8

4

2

1

1

1

1

1

Энтропия исходной д.с.в.

Математическое ожидание здесь неприменимо, так как код заранее не известен.

Но среднее кол-во бит при бесконечной длине сообщения будет приближаться к энтропии.

Алгоритм кодирования останавливается, когда закодированы все символы сообщения.

Раскодирование сообщения зашифрованного с помощью арифметического кода. Считается что алфавит и вероятности его символов известны.

Пример 2.

Пусть нам пришло сообщение 1111 и сказано требуется раскодировать 3 символа.

Этому сообщению соответствует число 15/16.

Шаг 1: Смотрим, в какой из отрезков это число попадает: 15/16 = 0,9375

3/5 = 0,6 4/5 =0,8 это число попадает в интервал [4/5, 1].

Получается что первый символ закодированного сообщения «В».

Шаг 2: Получаем новый (текущий) код, для этого

от текущего кода, т.е. числа 15/16 вычитаем левую (нижнюю границу) содержащего его интервала, т.е. число 4/5 и делим все на длину этого интервала, т.е. на 1/5.

это новый текущий код.

ДАЛЕЕ ШАГИ 1 и 2 чередуются.

Шаг 3: Смотрим, в какой из отрезков это число попадает: 11/16 = 0,6875

3/5 = 0,6 4/5 =0,8 это число попадает в интервал [3/5, 4/5].

Получается что второй символ закодированного сообщения «А».

Шаг 4: Получаем новый (текущий) код, для этого

от текущего кода, т.е. числа 11/16 вычитаем левую (нижнюю границу) содержащего его интервала, т.е. число 3/5 и делим все на длину этого интервала, т.е. на 1/5.

это новый текущий код.

Шаг 5: Смотрим, в какой из отрезков это число попадает: 7/16 = 0,4375

3/5 = 0,6 4/5 =0,8 это число попадает в интервал [0, 3/5].

Получается что третий символ закодированного сообщения «С».

Останавливаемся, т.к. расшифровали 3 символа «ВАС».

Пример 3: Пусть нам пришло сообщение 001, необходимо раскодировать 4 символа.

4

2

1

0

0

1

Этому сообщению будет соответствовать число 1/8.

Шаг 1: Смотрим, в какой из отрезков это число попадает: 1/8 = 0,125

3/5 = 0,6 4/5 =0,8 это число попадает в интервал [0, 3/5].

Получается что первый символ закодированного сообщения «С».

Шаг 2: Получаем новый (текущий) код, для этого

от текущего кода, т.е. числа 1/8 вычитаем левую (нижнюю границу) содержащего его интервала, т.е. число 0 и делим все на длину этого интервала, т.е. на 3/5.

это новый текущий код.

ДАЛЕЕ ШАГИ 1 и 2 чередуются.

Шаг 3: Смотрим, в какой из отрезков это число попадает: 5/24 = 0,208333

3/5 = 0,6 4/5 =0,8 это число снова попадает в интервал [0, 3/5].

Получается что второй символ закодированного сообщения «С».

Шаг 4: Получаем новый (текущий) код, для этого

это новый текущий код.

Шаг 5: Смотрим, в какой из отрезков это число попадает: 25/72 = 0,347222

3/5 = 0,6 4/5 =0,8 это число снова попадает в интервал [0, 3/5].

Получается что третий символ закодированного сообщения «С».

Шаг 6: Получаем новый (текущий) код, для этого

это новый текущий код.

Шаг 7: Смотрим, в какой из отрезков это число попадает: 125/216 = 0,578704

3/5 = 0,6 4/5 =0,8 это число снова попадает в интервал [0, 3/5].

Получается что четвертый символ закодированного сообщения «С».

Останавливаемся, т.к. расшифровали 4 символа «СССС».

2 правило остановки: Заранее добавляется в алфавит еще один символ «Е» означающий конец сообщения. Задаем ему какую либо (минимальную) вероятность, например 1/длину сообщения. Расшифровываем до тех пор, пока не попадаем на этот символ.

Замечание сообщение «СССС» имеет код 001, т.е. его длина кода меньше 1 бит/сим.

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