- •Введение
- •Дискретная математика
- •Бинарная операция ассоциативна, если тождественно выполняется: ;
- •4.Классы булевых функций :
- •5. Теория полноты
- •I этап :
- •3 Случай :
- •II этап :
- •6. Полные системы в классах т0, т1, м, s, l.
- •Все полные системы для классов t0, t1, s, m, l в утверждениях выше являются базисами для этих систем.
- •1 Этап:
- •2 Этап:
- •7. Исчисления высказываний
- •8. Семь теорем
- •Доказательство полноты исчисления высказываний.
- •Представление графов
- •1. Задание графа с помощью матрицы смежности.
- •2. Задание графа с помощью матрицы инцидентности.
- •3. Задание графа с помощью списка смежности.
- •Связанность вершин графа
- •Алгоритмы нахождения компонент связности
- •1. Поиск в ширину
- •2. Поиск в глубину
- •Укладки графов
- •Теорема Эйлера
- •Критерий Понтрягина-Куратовского
- •Раскраски графов
- •Основные понятия комбинаторики.
- •1 1.2 Упорядоченные наборы элементов изn-данных
- •1.3 Неупорядоченные наборы элементов изданных без повторений.
- •1.4 Неупорядоченные наборы элементов изп данных с возможными повторениями.
- •2 Метод включения-исключения.
- •Упражнения.
- •3 Метод производящих функций
- •4 Основы теории перечисления Пойа. Лемма Бернсайда.
- •Упражнения.
- •Глава. Основы схем из функциональных элементов.
- •1) Мультиплексор порядка
- •2) Дешифратор порядка .
- •3) Универсальный многополюсник.
- •Глава. Введение в теорию конечных автоматов.
- •Глава. Введение в теорию кодирования.
- •Теория кодирования.
Глава. Введение в теорию кодирования.
Будем
называть
исходным алфавитом, а
кодовым алфавитом (выходным).
Определение.
Кодирование будем называть функцию
,
отображение алфавита
в множество слов
,
причем различным буквам в алфавите
должны соответствовать различные слова
из множества слов
в алфавите
.
Определение.
Пусть
некоторое исходное слово в алфавите
.
Тогда кодирующим словом, согласно
кодированию
,
называют слово
,
полученное соединением соответствующих
кодовых слов (побуквенное кодирование
исходного слова):
![]()
Пример.
Исходный алфавит
,
выходной алфавит
.
Функция
.
Т.к. образы различны, то имеем по
определению кодирование. Слова
и
,
соответствующие отдельным буквам, будем
называть кодовыми. Ну и для примера,
закодируем слово:
.
Определение.
Кодирование называют корректным
(правильным), если различным исходным
словам будут соответствовать различные
кодирующие слова, согласно кодированию
.
Приведенный
пример является корректным кодированием,
т.к. кодовые слова имеют одну и ту же
длину. Действительно, по образу в данной
кодировке можно определить исходное
слово, считывая образ слева направо и
сворачивая кодовые слова в исходные
буквы:
![]()
Пример.
Исходный алфавит
,
кодовый алфавит
.
Функция
.
Данное кодирование будет некорректно,
т.к. слово 01001 можно раскодировать
по-разному:
![]()
Определение. Суффиксным кодированием называют кодирование, при котором никакое кодовое слово не начинается ни на какое другое кодовое слово.
Утверждение. Каждое суффиксное кодирование является корректным.
Исходное слово можно восстановить по закодированному слову однозначным образом, читая слово слева направо и сворачивая кодовые слова в исходные буквы. Т.к. ни одно кодовое является началом другого кодового слова, то такое декодирование корректно.
Аналогично можно ввести понятие постфиксного кодирования.
Определение. Постфиксным кодированием называют кодирование, при котором ни одно из кодовых слов не является концом никакого другого кодового слова.
Утверждение. Постфиксное кодирование корректно.
Теория кодирования.
– исходный алфавит из
букв,
– кодовый алфавит из
букв,
– функция кодирования,
.
Различным
буквам сопоставляются различные слова.
Применим следующие обозначения:
– длины кодовых слов, равные
соответственно.
– общая длина кодовых слов.
– максимальное число кодовых слов,
которые размещаются в некотором другом
кодовом слове.
Критерий
однозначности кодирования.
Если кодирование некорректное, то
обязательно найдется пара различных
слов в исходном алфавите
,
длина которых не превосходит
и которые отображаются в одно и то же
кодирующее слово:
![]()
Таким
образом, для проверки корректности
кодирования достаточно перебрать лишь
только исходные слова, длина которых
не превосходит
и посмотреть на кодирующие слова. Если
среди кодирующих слов найдутся одинаковые,
то кодирование некорректное. А если
среди кодирующих все слова различны,
то кодирование корректно.
Доказательство (принадлежит Маркову).

Рассмотрим
некорректное кодирование
с установленными параметрами. Рассмотрим
кодирование слова минимальной длины,
которое допускает, по крайней мере, две
различных расшифровки, т.е. для которого
найдется, по крайней мере, два различных
исходных слова, кодирующим для которых
является данное слово. Рассмотрим две
различных его расшифровки. Кодовые
слова первой расшифровки обведены
сверху, а кодовые слова второй расшифровки
– снизу. Разрежем кодирующее слово по
границам кодовых слов. В результате
получим слова-отрезки. Эти слова разобьем
на две группы:
1-ая
– слова, которые являются кодовыми;
2-ая
– слова, которые не являются кодовыми,
т.е. все остальные.
Слова 2-ой группы являются либо началом кодовых слов второй расшифровки, либо началом кодовых слов первой расшифровки (или наоборот).
Слова 2-ой группы попарно различны. Если бы это было не так, т.е. существовали два одинаковых слова 2-ой группы, то вырежем участок между двумя одинаковыми словами 2-ой группы вместе с одним из этих слов и соединим полученные два слова. Тогда не трудно видеть, что полученное слово (уменьшительное) также допускает две дешифровки, что противоречит минимальности некорректного данного слова.
Посчитаем,
какое максимальное число слов во 2-ой
группе может быть. Во 2-ой группе есть
непустые начала кодовых слов, которые
отличны от самих кодовых слов. Первое
слово имеет длину
и поэтому число рассмотренных начал
для него есть
,
для второго кодового слова число начал
равно
,
и так для каждого, а для последнего –
.
Суммируя данные величины, получаем, что
число слов во 2-ой группе не более чем
.
Теперь
разобьем слова 2-ой группы на пары
последних и рассмотрим последовательность
слова
.
Таких слов не больше, чем
.
Число кодовых слов в каждом из полученных
по обеим кодировкам.
Каждое
из полученных слов имеет вид: некоторое
кодовое слово и далее не более чем
кодовых слов, которые содержатся в
кодовом слове другой кодировки (или
наоборот).
Поэтому
общее число кодовых слов, которое
содержится в начальном слове не более
чем ![]()
Критерий префиксного кодирования (Мак-Миллана).
Определение.
Кодирование
называют типа
,
если существует
штук кодовых слов единичной длины,
кодовых слов из двух букв,
слов из трех букв, …,
слов длины
.
Критерий.
Префиксное корректное кодирование типа
существует тогда и только тогда, когда
,
где
– мощность кодирующего алфавита.
Доказательство.
Необходимость.
Пусть
– корректное кодирование типа
.
Покажем справедливость формулы
.
Перепишем
формулу
в виде:
,
где
– длины кодовых слов. Возведем сумму
в степень
:
,
т.е. возьмем
произведений таких сумм
,
в которых параметры
независимо друг от друга пробегают
множество от
до
:
,
где
– число представлений числа
в виде суммы
с помощью группировки слагаемых. Т.к.
кодирование корректно, то
.
Действительно,
– это общее число слов в кодирующем
алфавите, а каждое решение уравнения
будет соответствовать некоторому
кодовому слову, которых, в силу
корректности, не может быть больше чем
общее число кодирующих слов
:

Достаточность.
Пусть числа
удовлетворяют соотношению
.
Построим префиксное кодирование типа
.
Перепишем
сумму
по слагаемым:
![]()
Наша задача – построить кодовые слова такие, что никакое кодовое слово не начиналось на другое слово. Построим в начале кодовые слова единичной длины, а потом длины 2 и т.д.
Из
неравенства
следует, что
,
т.е.
.
В кодирующем алфавите есть
букв и мы должны выбрать
различных кодовых слов единичной длины,
а из неравенства
следует, что это действительно можно
сделать.
Далее
построим кодовые слова длины 2. Тогда
выполняется неравенство
,
из которого следует, что
,
где
– общее число слов длины 2 в кодовом
алфавите, а
– слова длины 2, которые начинаются на
кодовые слова единичной длины. Таким
образом, число допустимых слов длины 2
равно
.
Из полученного неравенства следует,
что мы действительно можем выбрать
кодовые слова длины 2, чтобы выполнялись
условия префиксности.
Допустим,
что уже выбраны кодовые слова длины
меньшей
,
причем соблюдая условия префиксности.
Покажем, что можно выбрать кодовые слова
длины
.
Из
неравенства
следует, что
,
где
– общее число слов длины
в кодирующем алфавите,
– слова длины
,
которые начинаются на кодовые слова
длины
,
– разрешенные кодовые слова длины
и т.д. Таким образом, мы построили
префиксное кодирование типа
.
