- •Дискретная математика
- •6.050102 “Компьютерная инженерия” содержание
- •1 Теория множеств 7
- •2 Математическая логика 15
- •3 Формальные теории 35
- •4 Теория графов 47
- •5 Элементы теории чисел 80
- •6 Теория алгоритмов 121
- •Введение
- •1 Теория множеств
- •1.1 Множества и подмножества
- •1.1.1 Элементы множества
- •1.2 Аксиомы теории множеств
- •1.3 Способы задания множеств
- •1.4 Операции над множествами
- •1.5 Элементы алгебры множеств
- •1.5.1 Определение алгебры множеств
- •1.5.2 Основные законы алгебры множеств
- •1.5.3 Принцип двойственности
- •2 Математическая логика
- •2.1 Функции алгебры логики (булевые функции)
- •2.1.1 Способы задания булевых функций
- •2.1.2 Логические функции одной переменной
- •2.1.3 Логические функции двух переменных
- •2.2.6 Функционально полные системы булевых функций
- •2.3 Алгебра буля
- •2.3.1 Определение алгебры. Теорема Стоуна
- •2.3.2 Законы алгебры логики
- •2.3.3 Разложения функций по переменным
- •2.3.4 Приведение логических функций
- •2.3.5 Импликанты и имплициенты булевых функций
- •2.3.6 Методы минимизации логических функций
- •2.4 Алгебра жегалкина
- •2.4.1 Преобразование функций в алгебре Жегалкина
- •2.4.2 Переход от булевой алгебры к алгебре Жегалкина
- •3 Формальные теории
- •3.1 Основные принципы построения формальных теорий исчисления
- •3.2 Определение исчисления высказываний
- •3.2.1 Метатеоремы исчисления высказываний
- •3.2.2 Схемы исчисления высказываний
- •3.3 Исчисление предикатов
- •3.3.1 Определение формальной теории pl
- •3.3.2 Принцип резолюции в исчислении предикатов
- •3.3.3 Схемы доказательств в исчислении предикатов
- •4 Теория графов
- •4.1 История теории графов
- •4.2 Основные определения
- •4.3 Способы представления графов
- •4.3.1 Матрицей смежности
- •4.3.2 Матрицей инцидентности
- •4.4 Пути в графах
- •4.4.1 Задача о кратчайшем пути
- •4.4.2 Алгоритм Дейкстры нахождения кратчайшего пути в графе
- •4.5 Транспортные сети
- •4.5.1 Потоки в транспортных сетях
- •4.5.2 Задача нахождения наибольшего потока в транспортной сети
- •4.5.3 Алгоритм Форда и Фалкерсона нахождения максимального потока транспортной сети
- •4.5.4 Транспортная задача
- •4.6 Обходы в графах
- •4.6.1 Эйлеровы графы
- •4.6.2 Алгоритм Флёри нахождения эйлерова цикла
- •4. Если получился цикл, но не ейлеров, то отбрасываем данную последнюю вершину и повторяем пункт 2.
- •4.6.3 Гамильтоновы циклы
- •4.6.4 Метод ветвей и границ.
- •4.6.5 Метод ветвей и границ в задаче о коммивояжёре
- •4.7 Деревья
- •4.7.1 Построение экономического дерева
- •4.7.2 Алгоритм Краскала
- •5 Элементы теории чисел
- •5.1 Модулярная арифметика
- •5.1.1 Алгоритм Евклида для нахождения наибольшего общего делителя
- •5.1.2 Вычисление обратных величин
- •5.1.3 Основные способы нахождения обратных величин
- •5.1.4 Китайская теорема об остатках
- •5.2 Кодирование
- •5.2.1 Оптимальное кодирование
- •5.3 Обнаружение и исправление ошибок
- •5.3.1 Общие понятия
- •5.3.2 Линейные групповые коды
- •5.3.2 Код Хэмминга
- •5.3.3 Циклические коды
- •5.3.4 Построение и декодирование конкретных циклических кодов
- •5.4 Сжатие информации
- •5.4.1 Исключение повторения строк в последующих строках
- •5.4.2 Алгоритм lzw
- •6 Теория алгоритмов
- •6.1. Основные понятия
- •6.1.1 Основные требования к алгоритмам
- •6.1.2 Блок–схемы алгоритмов
- •6.1.3 Представление данных
- •6.1.4 Виды алгоритмов
- •6.1.5 Правильность программ
- •6.1.6 Эффективность алгоритмов
- •6.1.7 Сходимость, сложность, надежность
- •6.2 Универсальные алгоритмы
- •6.2.1 Основные понятия
- •6.2.2 Машины Тьюринга
- •6.2.3 Рекурсивные функции
- •6.2.5 Тезис Черча-Тьюринга
- •6.2.6 Проблема самоприменимости
- •6.3 Языки и грамматики
- •6.3.1 Общие понятия
- •6.3.2 Формальные грамматики
- •6.3.3 Иерархия языков
- •6.4 Параллельные вычисления
- •Рекомендованная литература
5 Элементы теории чисел 80
5.1 Модулярная арифметика 80
5.1.1 Алгоритм Евклида для нахождения наибольшего общего делителя 82
5.1.2 Вычисление обратных величин 83
5.1.3 Основные способы нахождения обратных величин 85
5.1.4 Китайская теорема об остатках 88
5.2 Кодирование 89
5.2.1 Оптимальное кодирование 89
5.3 Обнаружение и исправление ошибок 94
5.3.1 Общие понятия 94
5.3.2 Линейные групповые коды 95
5.3.2 Код Хэмминга 101
5.3.3 Циклические коды 104
5.3.4 Построение и декодирование конкретных циклических кодов 109
5.4 Сжатие информации 116
5.4.1 Исключение повторения строк в последующих строках 116
5.4.2 Алгоритм LZW 118
6 Теория алгоритмов 121
6.1. Основные понятия 121
6.1.1 Основные требования к алгоритмам 121
6.1.2 Блок–схемы алгоритмов 125
6.1.3 Представление данных 126
6.1.4 Виды алгоритмов 128
6.1.5 Правильность программ 129
6.1.6 Эффективность алгоритмов 130
6.1.7 Сходимость, сложность, надежность 132
6.2 Универсальные алгоритмы 135
6.2.1 Основные понятия 135
6.2.2 Машины Тьюринга 136
6.2.3 Рекурсивные функции 139
6.2.4 ПР-операторы 140
6.2.5 Тезис Черча-Тьюринга 142
6.2.6 Проблема самоприменимости 143
6.3 Языки и грамматики 145
6.3.1 Общие понятия 145
6.3.2 Формальные грамматики 147
6.3.3 Иерархия языков 148
6.4 Параллельные вычисления 148
РЕКОМЕНДОВАННАЯ ЛИТЕРАТУРА 150
Введение
Дисциплина “Дискретная математика” является составной частью подготовки студентов в области компьютерных технологий.
Изучение дисциплины способствует овладению математическими основами профилирующих дисциплин в области синтеза устройств ЭВМ.
Данный курс лекций предназначен для более углубленного самостоятельного изучения основ дисциплины.
В первом разделе рассматриваются основные положения теории множеств. Базисом математики служит понятие множества. Оно является универсальным, так как под него можно подвести любую совокупность предметов. С него начинается изложение традиционных математических дисциплин и построение новых математических теорий по мере расширения сферы применения математики. . Кроме того теория множеств служит прочным фундаментом не только математики, но и средством математизации разнообразнейших наук: экономики, биологии, лингвистики и т.д.
Легко определить какое-либо конкретное множество. Определить его – значит относительно любого предмета уметь ответить на вопрос, принадлежит он данному множеству или нет.
Основатель теории множеств немецкий математик Георг Кантор (Cantor) (1845-1918) дал такое определение множества:
множество - это любая совокупность определенных и различимых объектов нашей интуиции, мыслимое как единое целое.
Т.е. всякое множество однозначно и полностью определяется своими элементами.
Второй раздел посвящен математической логике. Формальная логика – логика, где объектам, над которыми производятся логические рассуждения, приписываются формальные символы.
Когда к формальной логике применили математические методы - появилась математическая логика.
Математическая логика – наука о рассуждениях или доказательствах, проводимых в той или иной формальной теории.
Математическая или формальная логика делится на три подраздела: логику Буля, логику высказываний и логику предикатов.
Логика Буля основывается на отношении эквивалентности, при котором правая часть равенства всегда содержит ровно столько же «истины», сколько и левая.
Третий раздел посвящен формальным теориям, в определении которых, понятия базируются на отношении порядка, при котором правая часть выражения (заключение) содержит больше «истины», чем левая (посылки), т.е. «истинность» заключения оказывается выше «истинности» посылок, о чем можно судить, в частности, по количеству единиц в таблицах истинности.
В четвертом разделе рассматриваются основы теории графов. Граф является важнейшим математическим понятием. На основе теории графов строятся модели разнообразных задач: маршрутизации, распределения ресурсов, дискретной оптимизации и управления, минимизации автоматов и алгоритмов. Стройная система специальных терминов и обозначений теории графов позволяют просто и доступно описывать сложные процессы. Особенно важно наличие наглядной графической интерпретации. Картинки позволяют сразу “усмотреть” суть дела на интуитивном уровне, дополняя и украшая утомительные рациональные текстовые доказательства и сложные формулы.
Пятый раздел посвящен изучению основ кодирования и защиты информации. Ранее средства кодирования играли вспомогательную роль и не рассматривались как отдельный предмет математического изучения. Но с появлением компьютеров ситуация радикально изменилась. Кодирование буквально пронизывает информационные технологии и является центральным вопросом при решении самых разных задач программирования:
представление данных проищвольной формы в памяти компьютера;
обеспечение помехоустойчивости при передаче информации по каналам связи;
сжатие информации в базах данных;
защита информации от несанкционированного доступа.
В алгоритмах защиты информации широко используется модулярная арифметика. А при кодировании для обеспечения помехоустойчивости – вычисления в конечных полях. Данные вопросы рассматриваются в теории чисел.
В шестом разделе рассматриваются основные элементы теории алгоритмов. Знание основной проблематики данной теории и принципов организации формальных исчислений дает понимание того, что можно и чего нельзя сделать с помощью вычислительной машины.