- •Конспект лекций по дисциплине “Дискретная математика”
- •Санкт Петербург Содержание.
- •Раздел I. Множества, функции, отношения. Лекция № 1. Множества и операции над ними.
- •1. Основные понятия теории множеств.
- •2. Операции над множествами и их свойства.
- •3. Векторы и прямые произведения.
- •Лекция № 2. Соответствия и функции.
- •Соответствия.
- •Отображения и функции.
- •Лекция № 3. Отношения и их свойства.
- •Основные понятия и определения.
- •Свойства отношений.
- •Лекция № 4. Основные виды отношений.
- •Отношения эквивалентности.
- •Отношения порядка.
- •Лекция № 4. Пересчёт.
- •Раздел II. Введение в общую алгебру. Лекция № 6. Элементы общей алгебры.
- •1. Свойства бинарных алгебраических операций.
- •2. Алгебраические структуры.
- •Гомоморфизм и изоморфизм.
- •Лекция № 7. Различные виды алгебраических структур.
- •Полугруппы.
- •Группы.
- •Поля и кольца.
- •Раздел III. Введение в логику. Лекция № 8. Элементы математической логики.
- •Булевы функции.
- •Лекция № 9. Логические функции.
- •Функции алгебры логики.
- •Примеры логических функций.
- •Суперпозиции и формулы.
- •Лекция № 10. Булевы алгебры.
- •Разложение функций по переменным. Совершенная дизъюнктивная нормальная форма.
- •Булева алгебра функций.
- •Эквивалентные преобразования.
- •Лекция № 11. Булевы алгебры и теория множеств.
- •Двойственность.
- •Булева алгебра и теория множеств.
- •Днф, интервалы и покрытия.
- •Лекция № 12. Полнота и замкнутость.
- •Функционально полные системы.
- •Алгебра Жегалкина и линейные функции.
- •Замкнутые классы. Монотонные функции.
- •Теоремы о функциональной полноте.
- •Лекция № 13. Язык логики предикатов.
- •Предикаты.
- •Кванторы.
- •Истинные формулы и эквивалентные соотношения.
- •Доказательства в логике предикатов.
- •Лекция № 14. Комбинаторика.
- •Правила суммы и произведения.
- •Размещения.
- •Перестановки.
- •Сочетания. Бином Ньютона.
- •Раздел IV. Теория графов. Лекция № 15. Графы: основные понятия и операции.
- •Графы, их вершины, рёбра и дуги. Изображение графов.
- •Матрица инцидентности и список рёбер. Матрица смежности графа.
- •Идентификация графов, заданных своими представлениями.
- •Лекция № 16. Маршруты, цепи и циклы.
- •Основные определения.
- •Связные компоненты графов.
- •Расстояния. Диаметр, радиус и центр графа. Протяжённости.
- •Эйлеровы графы.
- •Лекция № 17. Некоторые классы графов и их частей.
- •Деревья.
- •Ориентированные графы.
- •Графы с помеченными вершинами и рёбрами.
- •Лекция № 18. Теория алгоритмов Понятие алгоритма
- •1.2.1. Основные требования к алгоритмам
- •1.2.2. Машина Тьюринга
- •Универсальная машина Тьюринга
- •1.2.3. Тезис Тьюринга
- •1.3. Граф машина
- •1.3.1. Модель данных
- •1.3.2. Построение моделей алгоритмов в системе graph
- •2. Сложность алгоритмов
- •2.1.Временная и пространственная сложность алгоритма. Классы dtime и dspace
- •2.2. Классы сложности
- •2.2.1. Полиномиальность и эффективность
- •2.2.2. Алгоритмическая сводимость задач
- •3. Алгоритмы и их сложность
- •3.1. Представление абстрактных объектов (последовательностей)
- •3.1.1. Смежное представление последовательностей
- •3.1.2. Связанное представление последовательностей
- •Список вопросов для подготовки к экзамену по дисциплине "дискретная математика"
2.2.2. Алгоритмическая сводимость задач
Пусть существует алгоритм A, который, будучи применимым ко всякому входному слову задачи , строит некоторое входное слово задачи . Если при этом слово дает ответ «да» тогда и только тогда, когда ответ «да» дает слово , то говорят что задача (полиномиально) сводится к задаче , и пишут .
Нетрудно показать, что если и P, то P.
Понятие сводимости переборных задач помогает при определении класса сложности произвольной задачи. Доказав, что задача NP-полная, разработчик алгоритма получает достаточные основания для отказа от поиска эффективного и точного алгоритма. Дальнейшие усилия разработчика могут быть направлены, например, на получение приближенного решения либо решения важнейших частных случаев.
Подведем итоги. Мы определили два класса задач P и NP. Причем имеет место включение P NP.
В тоже время имеется задача непустоты дополнения полурасширенного выражения, предполагающая создание башен неограниченной высоты при фиксированном n объеме входной информации. Эта задача алгоритмически разрешима, но для ее решения требуется больше чем единиц памяти (ленточная сложность). Подобные задачи не принадлежат классу NP и образуют класс труднорешаемых задач.
Кроме того, имеется обширный класс нерешимых задач, которые нельзя решить алгоритмически.
Таким образом, имеются 4 основных класса массовых задач: P. NP, труднорешаемых задач и нерешаемых задач.
3. Алгоритмы и их сложность
3.1. Представление абстрактных объектов (последовательностей)
При описании понятия алгоритма вводится важное понятие конструктивного объекта данных. Без данных не существует алгоритмов. Под конструктивным объектом данных в программировании понимается модель данных. В большинстве языков программирования понятие модели данных совпадает с понятием абстрактных типов данных.
Выбор представления данных (типа данных, модели данных) - один из важнейших этапов разработки алгоритма решения поставленной задачи. Точно также как не существует универсальных алгоритмов решения многих задач, обычно невозможно предложить универсальную модель данных, пригодную для их решения. Один и тот же конструктивный объект данных можно представить массивом, структурой, списком, классом, иерархией классов и т.д. Выбор модели данных зачастую зависит от решаемой задачи, используемого алгоритма, особенностей восприятия данных человеком.
Главные соображения, которыми нужно руководствоваться при таком выборе, состоят в следующем.
Во-первых, это естественность внешнего представления исходных данных и ответа, их привычность для человеческого восприятия. Это требование вытекает из специфики использования ЭВМ человеком как средства автоматизации его деятельности. Польза от разработанной программы может быть сведена к минимуму, если для понимания напечатанного ответа от человека требуется дополнительная сложная работа, связанная с переводом данных ответа в понятия исходной формулировки задачи.
Во-вторых, это возможность построения эффективного алгоритма решения задачи. Эта возможность реализуется за счет надлежащего выбора внутреннего представления исходных и промежуточных данных задачи (алгоритма). Как уже отмечалось, для построения более эффективного алгоритма наряду с внешним представлением исходных данных может потребоваться другое внутреннее представление, отличное от внешнего. Программа будет более эффективной, если предусмотреть перевод исходных данных в такое представление, которое обеспечит прямой доступ к нужным компонентам. Во многих задачах подобный перевод из внешнего представления во внутреннее является существенной частью процесса решения задачи; ему следует уделять должное внимание.