
- •Оглавление
- •Глава 5. Основы математической теории информации 58
- •Глава 6. Элементы теории чисел 74
- •6.2.1. Основные определения 83
- •Глава 7. Алгебраические структуры 87
- •Введение
- •Глава 1.Введение
- •1.1.Основные понятия криптографии
- •1.1.1.История развития криптографии
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •1.1.2.Сложность алгоритмов
- •1.1.3.Стойкость криптографических систем
- •Глава 2.Элементы теории множеств
- •2.1.Основные понятия теории множеств
- •2.1.1.Обозначения и способы задания множеств
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •2.1.2.Операции над множествами
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •2.1.3.Прямое произведение множеств
- •П римеры решения задач
- •Задачи для самостоятельного решения
- •2.2.Отношения между множествами
- •2.2.1.Определение бинарных отношений
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •2.2.2.Представление бинарных отношений в виде графа, матрицы
- •Примеры решения задач
- •Построенная таблица есть таблица бинарного отношения. Задачи для самостоятельного решения
- •2.2.3.Свойства бинарных отношений, отношение эквивалентности
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Вопросы для повторения
- •Глава 3.Булева алгебра
- •3.1.Булевы функции
- •3.1.1.Понятие булевой функции
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •3.1.2.Суперпозиция функций
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •3.1.3.Двойственные функции
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •3.1.4.Логические схемы
- •Примеры решения задач
- •3.2.Нормальные формы
- •3.2.1.Разложение функций по переменным
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •3.2.2.Минимизация нормальных форм, карты Карно
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Полиномы Жегалкина, алгоритм их построения для произвольных функций
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •3.3.Полные системы функций
- •3.3.1.Полнота множества функций
- •Примеры решения задач
- •Глава 4.Элементы теории графов
- •4.1.Основные понятия теории графов
- •4.1.1.Способы задания графов, основные определения
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.2.Числовые характеристики графов
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.3.Операции с графами
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.4.Изоморфизм графов
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.6.Расстояния в графе, центры графа
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.7.Эйлеровы циклы
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.8.Алгоритм построения Эйлерова цикла
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.9.Гамильтоновы циклы
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.1.10.Алгоритм построения гамильтонова цикла в графе
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.2.2.Алгоритм Краскала для построения минимального остовного дерева
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •4.2.3.Обходы дерева
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Задачи для повторения
- •Вопросы для повторения
- •Глава 5.Основы математической теории информации
- •5.1.Меры информации
- •5.1.1.Мера Хартли
- •Примеры решения задач
- •5.1.2.Мера Шеннона
- •Примеры решения задач
- •5.1.3.Единицы измерения количества информации
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •5.2.2.Код Хаффмана
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •5.3. Помехоустойчивое кодирование
- •5.3.1. Код с проверкой на четность
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •5.3.2.Коды с повторением
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •5.3.3.Групповой код Хемминга
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •5.3.4.Помехозащищенность кода
- •Примеры решения задач
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.2.Теорема о делении с остатком. Алгоритм Евклида
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.3.Отношение сравнимости
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.4.Алгебра вычетов
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.5.Решение сравнений вида ахb(mod m)
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.6.Применение алгебры вычетов к простейшим шифрам
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.1.7.Построение и использование хеш-функций
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Задачи для повторения
- •6.2.Алгебра многочленов
- •6.2.1.Основные определения
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •6.2.2.Нод многочленов
- •Примеры решения задач
- •Задачи для самостоятельного решения.
- •6.2.3.Разложение многочлена на множители
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Вопросы для повторения
- •Глава 7.Алгебраические структуры
- •7.1.Основные понятия и свойства алгебраических структур
- •7.1.1.Алгебра
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.1.2.Группа
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.1.3.Кольцо
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.1.4.Поле
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.1.5.Конечные поля
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.2.Многочлены над конечными полями
- •7.2.1.Каноническое разложение многочлена
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.2.2.Порядок многочлена над конечным полем
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.2.3.Сравнение многочленов по данному модулю
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.2.4.Поиск неприводимых многочленов поля gf(g(X)) над полем gf(р)
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.3.Генераторы псевдослучайных последовательностей
- •7.3.1.Понятие псевдослучайной последовательности чисел
- •7.3.2.Практические методы получения псевдослучайных чисел
- •Задачи для самостоятельного решения
- •7.3.3.Понятие линейной последовательности
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.3.4. Периодичность линейных рекуррентных последовательностей
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •7.3.5.Связь линейных рекуррентных последовательностей над конечными полями с многочленами
- •Примеры решения задач
- •Задачи для самостоятельного решения
- •Вопросы для повторения
- •214018, Г. Смоленск, проспект Гагарина, 56, т.: (0812) 55 – 41 – 04.
Примеры решения задач
Закодировать число 30 групповым кодом Хэмминга, исправляющим одиночную ошибку. Внести с полученную кодовую комбинацию одиночную ошибку и определить какой именно символ сообщения был искажен.
Решение.
1). А=30.
2). Запишем это число в двоичной системе счисления.
А=3010=111102.
3). Найдем разрядность избыточной комбинации по известной разрядности двоичного кода по формуле: 2n-k-1n, где k=5 (т.к. в двоичном числе А 5 разрядов). Минимальное n, которое удовлетворяет этому неравенству, равно 9.
4). Изобразим структуру избыточной кодовой комбинации и укажем места проверочных, избыточных символов. В коде Хэмминга они занимают фиксированные места с номером 2i, т.е. 1,2,4,8,…
а1, а2, а4, а8 – избыточные разряды
а3, а5, а6, а7, а9 – информационная часть, это сообщение А, т.е.
а3=1, а5=1, а6=1, а7=1, а9=0.
5). Найдем значения проверочных символов (обратите внимание как подчеркнуты единицы в каждом столбце).
1 001 а1= а3+а5+ а7+а9=1+1+1+0=1
2 010
3 011 а2= а3+а6+а7=1+1+1=1
4 100
5 101 а4= а5+а6+а7=1+1+1=1
6 110
7 111 а8= а9=0
8 1000
9 1001
Получаем сообщение, которое было передано: 1 1 1 1 1 1 1 0 0.
6). Внесем в эту кодовую комбинацию одиночную ошибку, например, в четвертом разряде: 1 1 1 0 1 1 1 0 0.
Так
как неизвестно в каком именно разряде
ошибка, введем новые обозначения. А
именно обозначим принятые символы
Составим проверочные уравнения:
Совокупность этих проверок, если её читать как двоичное число укажет нам номер искаженного сигнала.
Р4Р3Р2Р1=01002=410, т.е. искажен 4-ый символ.
Задачи для самостоятельного решения
Используя собственные паспортные данные сформировать число А следующим образом: А=[число]+[месяц]. Записать полученное число в двоичном виде и закодировать его групповым кодом Хэмминга, исправляющим одиночную ошибку. Внести с полученную кодовую комбинацию одиночную ошибку и определить какой именно символ сообщения был искажен.
5.3.4.Помехозащищенность кода
В теории передачи информации существенным является вопрос кодирования и декодирования при наличии шума в канале связи.
Помехозащищенность кода можно выяснить на основе известного кодового расстояния.
Кодовое расстояние (расстояние Хэмминга) между словами a и b определяется как число несовпадающих символов в этих словах, например: a=10110, b=11011, здесь расстояние равно d(a,b)=3. Кодовое расстояние математически можно определить суммированием двух слов с подсчетом количества единиц в сумме. Чем дальше комбинация отстоит одна от другой, тем большее число ошибок можно обнаружить и исправить.
Наименьшее расстояние между всевозможными комбинациями данного кода называют минимальным и обозначают dmin.
Корректирующий код способен обнаружить r ошибок, если dminr+1.
Корректирующий код способен исправлять любые комбинации из s и меньшего числа ошибок, если его минимальное кодовое расстояние удовлетворяет условию: dmin2s+1.
Для кодов, позволяющих обнаруживать и исправлять ошибки dminr+s+1, причем r>s.
Чем больше минимальное кодовое расстояние между словами, тем лучше защищен код от помех.
В математической модели кодирования и декодирования удобно рассматривать строки ошибок. Данное сообщение a = a1a2 ...am кодируется кодовым словом b = b1b2...bn. При передаче канал связи добавляет к нему строку ошибок e = e1e2...en, так что приемник принимает сигнал c = c1c2...cn, где ci = bi + ei. Система, исправляющая ошибки, переводит слово c1c2...cn в ближайшее кодовое слово b1b2 ...bn. Система, обнаруживающая ошибки, только устанавливает, является ли принятое слово кодовым или нет. Последнее означает, что при передаче произошла ошибка.