Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
41-48_ДМ.doc
Скачиваний:
47
Добавлен:
28.08.2019
Размер:
228.86 Кб
Скачать

8. Дм коды с минимальной избыточностью (коды Хафмана)

сообщение[кодер]код сообщ.[канал связи]код сообщ.[декодер]сообщ. на выходе

П усть a={a1,a2,…,an}-исх. алф., A= , l(A) – длина слова, S(A)-мн‑во всех слов в алф. A, S(A)S(A)-мн‑во всех возм-х сообщ. на входе. Пусть b={b1,b2,…,bq}-алфавит, В- слово в нем.

Пусть задано отобр. F: AS(A) BS(B). Слово B – код сообщения A. Процесс перехода от A к B – кодирование. Отобр. F- некоторый алгоритм.

Алфавитное кодирование: задается схема кодирования , которая каждому символу алфавита a ставит в соответствие слово B из алфавита b:

:

a1 – B1

Слова B1…Br нас-ся элементарными кодами. Могут иметь произвольную конечную длину

a2 – B2

ar – Br

П усть заданы некоторые вероятности p1…pr появления символов a1…ar в исходном сообщении. (их сумма = 1)

Пусть li=l(Bi)- длина слова Bi. Тогда lср= pili – мат. ожидание длины элементарных кодов. Показывает во сколько раз в среднем длина сообщения больше длины исходного сообщения.

Коды со схемой кодирования , у которых lср=l* (=min lср) называются кодами с минимальной избыточностью или кодами Хаффмана.

В силу нер‑ва Макмиллана и сл. из него. всегда сущ‑ют коды с минимальной избыточностью, обладающие св‑вом префикса.

Алгоритм построения кодов Хаффмана: 1. по вел-нам r и q определить q0: q0=q-1, если остаток(r/(q-1))=0; q0=q, если остаток()=1; q0=остаток() в противном случае 2. список вероятностей p1…pr заменить на p1,…,pr-qo,p. Переупорядочить получившуюся последовательность.

Повторяем этот шаг, пока число вероятностей больше чем q. 3. для оставшегося списка вероятностей строится однобуквенный код, который обладает св‑вом минимальной избыточности 4. проделываем шаг 2 в обратном порядке.

Пр.

ответ

дано

:

a1-

1

0.22

0.22

0.44

0

a2-

2

0.20

0.20

0.22

1

a3-

00

0.14

0.14

0.20

2

a4-

01

0.11

0.14

0

0.14

3

a5-

02

0.10

0.11

1

a6-

03

0.09

0.10

2

a7-

30

0.08

0

0.09

3

a8-

31

0.06

1

r=8, q=4, q0=2

помехоустойчивое кодирование, коды Хемминга

сообщение[кодер]код сообщ.[канал связи]код сообщ.[декодер]сообщ. на выходе

П усть a={a1,a2,…,an}-исх. алф., A= , l(A) – длина слова, S(A)-мн‑во всех слов в алф. A, S(A)S(A)-мн‑во всех возм-х сообщ. на входе. Пусть b={b1,b2,…,bq}-алфавит, В- слово в нем.

Пусть задано отобр. F: AS(A) BS(B). Слово B – код сообщения A. Процесс перехода от A к B – кодирование. Отобр. F- некоторый алгоритм.

Предполагаем, что канал связи при передаче сообщения длины N может делать только одну ошибку.

Как отловить эту ошибку? отправить вместо одного три сообщения, добавлять к сообщению бит четности.

Можно добавить несколько контрольных разрядов, которые позволят узнать, где ошибка: 1-ый позв. определить, есть ли ошибка, 2-ой – есть ли ошибка во второй половине общения, 3-ий разряд отвечает за 2-ю и 4-ю четверти и т.д.

Построение самокорректирующихся кодов (коды Хемминга): пусть имеется число v (1 v  l). Пусть имеется его двоичная запись v=kk‑1…1. Эти числа разобьем на группы. В первую включим числа с номерами 1, 3, 5, 7…, во вторую 2, 3, 6, 7, 10, 11… т.е. номера, во втором разряде двоичного представления которых стоит 1, в третью 4,5,6,7,13,14,15,20… и т.д.

Те разряды в коде , номера которых явл-ся степенями числа 2, будем использовать как контрольные, остальные разряды – информационные: 1=3579… 2=36710… 4=56712…

Т.о. можно для каждого сообщения A получить код B.

Пусть получили код 1, 2,…, l. Необходимо обнаружить и исправить ошибку. Двоичная запись номера испорченного разряда: s=sksk-1…s1, где s1=125… s2=2367… s3=456712…

Пр. Пусть пришел код 1100110. Необходимо найти и исправить ошибку. s1=0 s2=1  есть ошибка s3=1

s=110=6 – ошибка в 6-ом разряде.

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