- •Содержание
- •1 Элементы теории множеств. Комбинаторика. 5
- •Математическая логика: Булева аллгебра 88
- •Теория алгоритмов 129
- •Теория графов 162
- •Математическая логика: Исчисления высказываний и предикатов 207
- •Элементы теории множеств. Комбинаторика.
- •Введение
- •Примеры задач.
- •Задача о расположении конвертов
- •Задача о Ханойской башне
- •Базовые обозначения
- •Правило суммы и правило произведения
- •Основы теории множеств
- •Понятие множества
- •Парадокс Рассела
- •Подмножества
- •Операции над множествами
- •Диаграммы Эйлера-Венна
- •Прямое произведение множеств
- •Бинарные отношения и функции
- •Бинарные отношения
- •Функции
- •Специальные бинарные отношения: Отношение эквивалентности
- •Специальные бинарные отношения: Отношение порядка
- •Лексикографический порядок
- •Выборки с повторениями и без повторений
- •Размещения и сочетания
- •Треугольник Паскаля
- •Связь сочетаний и (0,1)-векторов
- •Перебор сочетаний
- •Бином Ньютона
- •Мультимножества
- •Связь мультимножеств и (0,1)-векторов
- •Полином Ньютона
- •Разбиения множеств.
- •Приложение: программа перебора сочетаний
- •Перестановки
- •Понятие перестановки
- •Группа перестановок
- •Циклы перестановки
- •Тип перестановки
- •Разложения и разбиения натуральных чисел
- •Разложения натуральных чисел
- •Разбиения натуральных чисел
- •Принцип включения-исключения
- •Принцип включения-исключения
- •Задача о беспорядках
- •Мощность объединения множеств
- •Число целочисленных решений системы неравенств
- •Математическая логика: Булева аллгебра
- •Булева алгебра. Функции алгебры логики.
- •Булевы функции
- •Формулы
- •Основные тождества
- •Разложение функции по переменным
- •Дизъюнктивная и конъюнктивная нормальные формы
- •Полином Жегалкина
- •1 ⊕ X1 ⊕ x2x3 - полином Жегалкина.
- •Полнота системы функций
- •Функции, сохраняющие ноль
- •Функции, сохраняющие единицу
- •Двойственность
- •Монотонность
- •Линейность
- •Критерий полноты системы функций
- •Теория алгоритмов
- •Машины Тьюринга
- •Понятие алгоритма
- •Машина Тьюринга
- •Способы записи машины Тьюринга
- •Стандартные конфигурации
- •Вычислимые функции
- •Алгоритмически неразрешимые задачи
- •Сложность алгоритма
- •Полиномиальная сводимость
- •Классы задач в форме распознавания свойств
- •4 Теория графов
- •4.1 Определения графа
- •Общее определение
- •Виды графов
- •Обыкновенный граф
- •Примеры графов
- •Графы Бержа
- •4.2 Изоморфизм графов
- •4.2.1 Инварианты графа
- •Операции
- •Основные операции над графами
- •Подграфы
- •Дополнение графа
- •Маршруты и связность
- •Деревья
- •Матрицы, связанные с графом
- •Матрица смежности
- •Матрица инцидентности
- •Список ребер
- •Обходы графов
- •Эйлеров цикл
- •Гамильтонов цикл
- •Задачи и алгоритмы
- •Остов минимального веса
- •Алгоритм 4.8.1 (Алгоритм Краскала).
- •Задача коммивояжера
- •Задача о клике
- •Задача о вершинном покрытии
- •Задача о гамильтоновом цикле
- •Снова задача коммивояжера
- •Алгоритм дерева
- •Математическая логика: Исчисления высказываний и предикатов
- •Исчисление высказываний
- •Пример задачи логики высказываний
- •Формальные теории
- •Формальная теория исчисление высказываний
- •Теоремы исчисления высказываний
- •Теорема о полноте исчисления высказываний
- •Независимость аксиом исчисления высказываний
- •Исчисление предикатов
- •Пример задачи логики предикатов
- •Формальная теория исчисление предикатов
- •Алфавит.
- •Формулы.
- •Аксиомы.
- •Правила вывода.
- •Интерпретация
- •Литература
Задача о Ханойской башне
Рекомендуемая литература: [2]
Рассмотрим еще одну интересную задачу и отметим на ее примере некоторые другие этапы решения.
1 2 3
Рисунок 3: Ханойская башня
Известная головоломка ханойская башня изображена на рисунке 3. Головоломка состоит из трех колышков и некоторого числа дисков разного диаметра. Каждый диск имеет в середине отверстие для надевания на колышки.
В исходный момент все диски нанизаны на один из колышков в порядке уменьшения размера. Диски можно перемещать с колышка на колышек при соблюдении двух условий: за один раз можно перенести только один диск и больший диск нельзя помещать на меньший. Задача состоит в том, чтобы, при соблюдении правил перемещения, перенести все диски с исходного на какой-нибудь другой колышек.
Довольно быстро можно убедиться, что задача разрешима. Поставим вопрос, какой способ решения головоломки является оптимальным.
Задача 1.2.5 . Каково наименьшее число перекладываний Tn, которое
необходимо совершить, чтобы переместить в рамках задачи о ханойской башне пирамиду из n дисков с одного колышка на другой.
Рассмотрим крайние случаи. Довольно часто ответ на задачу легко находится в частных случаях, при малых значениях аргумента. Такие, казалось бы, очевидные случаи могут помочь лучше понять общие закономерности. Так, совершенно очевидно, что T1 = 1, и не сложно убедиться, что T2 = 3. Так же можно положить T0 = 0, поскольку для перемещения пирамиды из 0 дисков не требуются перекладывания.
Теперь попытаемся понять, как же переместить пирамиду в общем случае. Если предположить, что изначально диски находятся на колышке с номером 1, для двух дисков нам требуется переложить меньший диск на колышек 2, затем больший на колышек 3 и наконец меньший диск с колышка 2 на колышек 3.
Для трех дисков задача усложняется, но идея остается той же. Мы можем переложить, как мы уже умеем, два диска на колышек номер 2, затем переложить большой диск на колышек 3 и в завершение переложить два меньших диска с колышка 2 на колышек 3.
Итак мы можем переместить пирамиду любой высоты n, если воспользуемся следующим алгоритмом: 1) переложить верхние n − 1
дисков на второй колышек; 2) переложить диск n на третий колышек;
3) переложить n − 1 меньший диск со второго колышка на третий. Таким
образом, для перемещения n дисков нам достаточно Tn−1 + 1 + Tn−1
перекладываний:
Tn ≤ 2Tn−1 + 1, n > 0.
Кроме того, когда-нибудь нам несомненно потребуется переложить самый большой диск с первого колышка на то место, где мы снова соберем нашу пирамиду, например на третий колышек. В этот момент все меньшие диски должны лежать на колышке 2. Значит мы не сумеем переместить башню быстрее, чем за время равное 2Tn−1 + 1.
Tn ≥ 2Tn−1 + 1, n > 0.
Таким образом мы получили рекурентное соотношение
T0 = 0,
Tn = 2Tn−1 + 1, n > 0.
(1)
Равенства (1) дают возможность посчитать значение Tn для любого натурального числа n. В частности уже известные нам T1 = 1 и T2 = 3 согласуются с этими формулами. С другой стороны использовать рекурентность для получения значений Tn не удобно при достаточно больших n. Мы бы хотели получить замкнутую форму выражения для Tn.
Как же решить рекурентное соотношение и получить его замкнутую
форму? Для начала попробуем просто угадать. Здесь как и раньше нам помогут крайние случаи. Воспользуемся рекурентным соотношением (1) и вычислим Tn для нескольких первых натуральных чисел:
T3 = 2 · 3 + 1 = 7,
T4 = 2 · 7 + 1 = 15,
T5 = 2 · 15 + 1 = 31,
T6 = 2 · 31 + 1 = 63.
Если хорошенько присмотреться, можно догадаться, что это напоминает: это похоже на степени двойки, уменьшенные на один.
Можно предположить, что Tn = 2n − 1 для любых n ≥ 0.
Действительно, это выражение довольно просто доказать по индукции.
n−1
Оно выполняется для T0 и T1. Предположим, что Tn−1 = 2
− 1. Тогда
Tn = 2Tn−1 + 1 = 2(2
n−1
− 1) + 1 = 2n
1, что и требовалось доказать.
Метод математической индукции очень часто помогает в решении
проблем, но он потребовал от нас "угадать" ответ. Когда это возможно, хорошо получить результат напрямую, не полагаясь на везение. Продемонстрируем, как соотношение (1) может быть разрешено без использования индукции.
Интересно, как помогает "упростить" второе выражение в (1) добавление единицы с обоих сторон от знака равенства: Tn + 1 = 2Tn−1 + 2 = 2(Tn−1 + 1). Введем всопмогательную величину Un = Tn + 1. Тогда
из (1) имеем
U0 = 1,
Un = 2Un−1, n > 0.
Очевидно, что Un = 2n. Отсюда, по определению величины Un следует, что Tn = 2n − 1 для любых n > 0.
Итак, на примере задачи о ханойской башне мы разобрали следующие стадии решения задачи:
рассмотрение крайних случаев;
нахождение и доказательство математического выражения для интересующей величины (в нашем случае это рекурентное выражение);
нахождение и доказательство замкнутой формы для математического выражения.