- •1. Дм функции алгебра логики, реализация функций формулами, канонические формы
- •2. Дм полнота и замкнутость систем функций. Теорема о функциональной полноте
- •3. Дм проблемы построения минимальных днф
- •4. Дм Схемы из функциональных элементов в базисе {и, или, не}. Задача построения схем из функциональных элементов и подходы к её решению. Примеры.
- •6. Дм графы, способы задания, геометрическая реализация
- •7. Дм теория кодирования, алфавитное кодирование, проблема однозначности кодирования, префиксные коды
- •8. Дм коды с минимальной избыточностью (коды Хафмана)
8. Дм коды с минимальной избыточностью (коды Хафмана)
сообщение[кодер]код сообщ.[канал связи]код сообщ.[декодер]сообщ. на выходе
П усть a={a1,a2,…,an}-исх. алф., A= , l(A) – длина слова, S(A)-мн‑во всех слов в алф. A, S(A)S(A)-мн‑во всех возм-х сообщ. на входе. Пусть b={b1,b2,…,bq}-алфавит, В- слово в нем.
Пусть задано отобр. F: AS(A) BS(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: AS(A) BS(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=3579… 2=36710… 4=56712…
Т.о. можно для каждого сообщения A получить код B.
Пусть получили код 1, 2,…, l. Необходимо обнаружить и исправить ошибку. Двоичная запись номера испорченного разряда: s=sksk-1…s1, где s1=125… s2=2367… s3=456712…
Пр. Пусть пришел код 1100110. Необходимо найти и исправить ошибку. s1=0 s2=1 есть ошибка s3=1
s=110=6 – ошибка в 6-ом разряде.
