- •Теория алгоритмов (краткий курс лекций для самостоятельной работы)
- •Лекции по теории алгоритмов Введение
- •Предмет криптографии
- •Лекция №1
- •Краткие теоретические сведения
- •1 Шифр сцитала
- •2 Шифр вертикальной перестановки
- •3 Шифр поворотной решетки
- •4 Шифры с использованием магичных квадратов
- •5 Перестановка бит
- •Лекция №2
- •Краткие теоретические сведения
- •Варианты реализации шифров простой замены
- •1 Система шифрования Цезаря
- •2 Афинная система подстановок
- •3 Лозунговый шифр
- •4 Шифровальный квадрат Полибия
- •5 Шифровальная таблица Трисемуса
- •4Х8 «Сколько волка ни корми, он все в лес глядит »
- •Лекция №3
- •Краткие теоретические сведения
- •1 Биграммный шифр Плейфейера
- •2 Шифр с использованием омофонов
- •3 Шифр Гронсфельда
- •4 Система шифрования Вижинера
- •5 Шифр «Двойной квадрат Уитстона»
- •Общие сведения о блочных шифрах
- •Описание алгоритма des
- •Режимы реализации алгоритмов симметричного шифрования
- •Асимметричные криптоалгоритмы
- •Модулярная арифметика
- •Открытое распределение ключей
- •Криптосистема rsa
- •7 Самокорректирующиеся коды
- •7.1 Построение кодов Хемминга (описание алгоритма кодирования)
- •7.2 Обнаружение ошибок в кодах Хемминга
- •7.3 Декодирование
- •Примеры решения задач Задача № 3
- •Задача № 4
- •Алгоритм решения задачи следующий:
- •Литература
Задача № 4
Решение задачи 4 а
Разработать схемы алфавитного кодирования с минимальной избыточностью (коды Хаффмана) для случаев (а) и (б):
а) появление букв в сообщении равновероятно;
б) вероятности появления букв в сообщении заданы.
Построить кодовые деревья. Получить схемы кодирования, определить l(увеличение длины закодированного сообщения над исходным)
Таблица к задаче 4а
|
r |
q |
|
9 |
4 |
Р Е Ш Е Н И Е
Решим задачу для случая (а):
q m r q m+1, (1)
(для конкретных значений q и r всегда можно подобрать значение m, удовлетворяющее этому неравенству).
Обобщенный алгоритм поиска кода (схемы кодирования) с минимальной избыточностью:
для построения элементарных кодов использовать только mиm+1ярусы кодового дерева;
переходить на m+1 ярус только после исчерпания всех возможностейm–го яруса.
Для реализации этого алгоритма необходимо представить rв виде уравнения:
r =(qm– n )+ q n – t , (2)
где n– количество неконцевых вершин ярусаm( будут ветвиться вm+1 ярус);
t(t q).– количество вершинm+1 яруса, которые не будут задействованы при построении кода (n, t – целые неотрицательные числа).
Формула для определения l будет иметь следующий вид:
l = [( q m– n) m + (q n – t)( m+1)]/ r (3)
q =4; r = 9 в соответствии с формулой (1)m = 1.Для кодирования будет достаточно 1–го и 2–го ярусов обобщенного кодового дерева (см. рис. 1).
r =( qm – n)+ q n – t, 9= (4 –n)+ 4 n – t (подбираем целые n и t)
Равенство выполняется для n = 2 и t= 1.

Определим l для полученной схемы по формуле (3)
l = [( q m– n) m + (q n – t)( m+1)]/ r
l = (( 4-2) х 1 + (4х2 – 1) (1+1)) / 9 = 16/9 = 1,78.
Решение задачи 4 б
|
r |
q |
p1, p2, …p12 |
|
10 |
4 |
0,34; 0,18; 0,15; 0,05;… 0,05; 0,04; 0,04 |
Алгоритм решения задачи следующий:
1 Определить qопо формуле (4).
k = r/ (q –1)(остаток от деления)
(4)
k = 10/3 = 1; q0 = 4.
2 Упорядоченный по убыванию список вероятностей p1, p2, …prзаменяют новым упорядоченным списком вида:p1, p2,.. pj, p,…pr–qo,гдеp =pr–qo+1+ …+ pr(т.е. суммируют последниеqоштук элементов списка и создают новый упорядоченный список, в который входит полученная сумма); процесс суммирования и упорядочивания (но уже суммируют последниеq штук элементов) продолжается до тех пор, пока в списке вероятностей останется ровноq элементов.
Упорядоченный список 1 (10 чисел) 0,34; 0,18; 0,15; 0,05;… 0,05; 0,04; 0,04
Упорядоченный список 2 (7 чисел) 0,34; 0,18; 0,18; 0,15; 0,05; 0,05; 0,05
Упорядоченный список 3 (4 числа) 0,34; 0,3; 0,18; 0,18;
3 Для последнего свернутого в п.2 списка строится одноярусное кодовое дерево (из начальной вершины выходит qребер, каждому из которых приписывается буква алфавитаO, а каждой вершине 1–го яруса вероятности из последнего свернутого списка).
4 Построить 2–й, 3–й и другие ярусы кодового дерева, на которых развернуть просуммированные вероятности последнего, предпоследнего и т.д. списков(вершины, которым приписаны вероятности букв входного алфавита на любом ярусе, становятся концевыми); в результате таких действий получим кодовое дерево, в котором rконцевых вершин и каждой из которых приписана вероятностьpj.Выписав цепи из нулевой вершины к концевым (перечень ребер), получим схему кодирования с минимальной избыточностью.

Величина среднего превышения длины закодированного сообщения над длиной самого сообщения определим по формуле:
=
0,34 + 0,18 + (0,3+0,18)х2 =1,48.
