- •Содержание
- •1 Элементы теории множеств. Комбинаторика. 5
- •Математическая логика: Булева аллгебра 88
- •Теория алгоритмов 129
- •Теория графов 162
- •Математическая логика: Исчисления высказываний и предикатов 207
- •Элементы теории множеств. Комбинаторика.
- •Введение
- •Примеры задач.
- •Задача о расположении конвертов
- •Задача о Ханойской башне
- •Базовые обозначения
- •Правило суммы и правило произведения
- •Основы теории множеств
- •Понятие множества
- •Парадокс Рассела
- •Подмножества
- •Операции над множествами
- •Диаграммы Эйлера-Венна
- •Прямое произведение множеств
- •Бинарные отношения и функции
- •Бинарные отношения
- •Функции
- •Специальные бинарные отношения: Отношение эквивалентности
- •Специальные бинарные отношения: Отношение порядка
- •Лексикографический порядок
- •Выборки с повторениями и без повторений
- •Размещения и сочетания
- •Треугольник Паскаля
- •Связь сочетаний и (0,1)-векторов
- •Перебор сочетаний
- •Бином Ньютона
- •Мультимножества
- •Связь мультимножеств и (0,1)-векторов
- •Полином Ньютона
- •Разбиения множеств.
- •Приложение: программа перебора сочетаний
- •Перестановки
- •Понятие перестановки
- •Группа перестановок
- •Циклы перестановки
- •Тип перестановки
- •Разложения и разбиения натуральных чисел
- •Разложения натуральных чисел
- •Разбиения натуральных чисел
- •Принцип включения-исключения
- •Принцип включения-исключения
- •Задача о беспорядках
- •Мощность объединения множеств
- •Число целочисленных решений системы неравенств
- •Математическая логика: Булева аллгебра
- •Булева алгебра. Функции алгебры логики.
- •Булевы функции
- •Формулы
- •Основные тождества
- •Разложение функции по переменным
- •Дизъюнктивная и конъюнктивная нормальные формы
- •Полином Жегалкина
- •1 ⊕ X1 ⊕ x2x3 - полином Жегалкина.
- •Полнота системы функций
- •Функции, сохраняющие ноль
- •Функции, сохраняющие единицу
- •Двойственность
- •Монотонность
- •Линейность
- •Критерий полноты системы функций
- •Теория алгоритмов
- •Машины Тьюринга
- •Понятие алгоритма
- •Машина Тьюринга
- •Способы записи машины Тьюринга
- •Стандартные конфигурации
- •Вычислимые функции
- •Алгоритмически неразрешимые задачи
- •Сложность алгоритма
- •Полиномиальная сводимость
- •Классы задач в форме распознавания свойств
- •4 Теория графов
- •4.1 Определения графа
- •Общее определение
- •Виды графов
- •Обыкновенный граф
- •Примеры графов
- •Графы Бержа
- •4.2 Изоморфизм графов
- •4.2.1 Инварианты графа
- •Операции
- •Основные операции над графами
- •Подграфы
- •Дополнение графа
- •Маршруты и связность
- •Деревья
- •Матрицы, связанные с графом
- •Матрица смежности
- •Матрица инцидентности
- •Список ребер
- •Обходы графов
- •Эйлеров цикл
- •Гамильтонов цикл
- •Задачи и алгоритмы
- •Остов минимального веса
- •Алгоритм 4.8.1 (Алгоритм Краскала).
- •Задача коммивояжера
- •Задача о клике
- •Задача о вершинном покрытии
- •Задача о гамильтоновом цикле
- •Снова задача коммивояжера
- •Алгоритм дерева
- •Математическая логика: Исчисления высказываний и предикатов
- •Исчисление высказываний
- •Пример задачи логики высказываний
- •Формальные теории
- •Формальная теория исчисление высказываний
- •Теоремы исчисления высказываний
- •Теорема о полноте исчисления высказываний
- •Независимость аксиом исчисления высказываний
- •Исчисление предикатов
- •Пример задачи логики предикатов
- •Формальная теория исчисление предикатов
- •Алфавит.
- •Формулы.
- •Аксиомы.
- •Правила вывода.
- •Интерпретация
- •Литература
Вычислимые функции
Далее в нашем курсе будем рассматривать только машины Тьюринга с алфавитом A = {1}. Каждой такой машине M соответствует частичная функция fM : N0 → N0.
Определение 3.1.10 . Пусть, M - машина Тьюринга. Тогда, для любого i ∈ N0,
L(β), fM (i) =
если M (11...1) = DqβD - стандартная
i
конечная конфигурация;
неопред., иначе.
Пример 3.1.2 . Машина M×2. A = {1}, Q = {q1, q2, ..., q9}.
α = 111...1 - слово из n единиц. β = 111...1 - слово из 2n единиц.
Программа машины M×2 представлена графом переходов на рисунке 19.
Выпишем конфигурации, в которых будет находиться машина M×2 в процессе своей работы, если α = 1 (рисунок 20). Результатом работы оказывается слово 11, что соответствует удвоенному входному слову.
1:R
1:R
1:R 1:L
q
q
q
q
1: :R :R1 2 3 4
:R
:1 :1
q
q
5 6
:L
1:L q8
1:L q7
:R
q9 :R
Рисунок 19: Граф переходов машины удвоения
-
D
q11
D
D
D
D
D
q2D
D
D
D
D
D
D
q3D
D
D
D
D
D
D
q4D
D
D
D
D
D
q51
D
D
D
D
D
1
q5D
D
D
D
D
1
q61
D
D
D
D
q61
1
D
D
D
q6D
1
1
D
D
q7D
D
1
1
D
D
D
q9D
1
1
D
D
D
D
q91
1
D
Рисунок 20: Конфигурации в процессе работы машины M×2
Работа машины M×2 на входном слове из двух и более единиц рассматривается аналогично.
×2
Очевидно, fM(i) = 2i для любых i ∈ N0.
Определение 3.1.11 . Функция f : N0 → N0 называется вычислимой,
если существует такая машина Тьюринга M , что f = fM . В
противномслучае,f-невычислимаяфункция.
Утверждение 3.1.1 (О существовании невычислимых функций).
Существует невычислимая функция f : N0 → N0.
Доказательство. 1) Для начала покажем, что множество машин Тьюринга счетно.
Во-первых, множество машин Тьюринга не может быть конечным. Мы ранее упомянали, что для любого n ∈ N можно построить машину
Mn, с n состояниями, которая рисует n единиц, начиная работу с пустой ленты. Если мы построим последовательность машин Тьюринга M1, M2,
..., Mn, ..., которая будет иметь счетную длину. Значит, множество машин Тьюринга не менее, чем счетно.
Как было замечено ранее в параграфе 3.1.3, машина Тьюринга практически полностью определяется своей программой. Значит, чтобы пересчитать различные машины Тьюринга, достаточно пересчитать различные программы.
Сопоставим любому множеству команд I, отвечающих определению программы машины Тьюринга число как описано ниже.
Рассмотрим алфавит X = {D, 1, ∗, L, R}. Пусть D < 1 < ∗ < L < R.
Тогда на множестве слов алфавита X можно определить строгий
линейный (например, лексикографический) порядок. Пронумеруем все слова алфавита X следующим образом: сначала по порядку идут все слова алфавита X длины 1, следующие номера получают в том же порядке слова длины 2, затем - длины 3 и так далее. Так мы пронумеруем натуральными числами все слова алфавита X. Каждой
команде программы qia → qj b сопоставим слово
∗...∗ a ∗...∗ b
i
j
в алфавите X. Такое слово однозначно описывает команду. Действительно, для определения состояний нам достаточно знать их номера (никакая другая информация об элементах множества Q машиной
Тьюринга не используется), а для любых a ∈ {D} ∪ A = {D, 1},
b ∈ {D, L, R} ∪ A = {D, L, R, 1} у нас имеются подходящие символы в
алфавите X.
Программе I можно сопоставить конкатенацию таких слов; очевидно, что разным программам не могут соответствовать совпадающие конкатенации и по такой конкатенации можно однозначно восстановить исходную программу. Но, поскольку команды в программе не упорядочены, одной программе могут соответствовать записи, полученные одна из другой изменением порядка команд. Из всех записей, сопоставленных одной и той же программе будем выбирать ту, номер которой, в выбранной ранее нумерации всех слов алфавита X, будет наименьшим; этот номер сопоставим программе I.
Таким образом, все различные программы машин Тьюринга пронумерованы числами из некоторого подмножества множества натуральных чисел и, следовательно, число машин Тьюринга не более чем счетно.
С другой стороны, множество машин Тьюринга не может быть конечным. Чтобы показать это, достаточно вспомнить про множество
машин Тьюринга Mn, i = 1, ∞, из примера 3.1.1, которые рисуют n
единичек, начиная работу с пустой ленты. Все эти машины различны
и их счетное число. Следовательно число машин Тьюринга счетно.
Теперь покажем, что число частичных функций f : N0 → N0 более
чем счетно.
Рассмотрим множество всех частичных функций N0 → N0:
A = {f | f : N0 → N0}
и рассмотрим подмножество этого множества
B = {f | f : N0 → {0, 1}, f - всюду определена на N0}.
Если мы докажем, что множество B более чем счетно, то, очевидно, это будет верно и для множества A.
Предположим, что множество B счетно. Тогда все функции из B можно пронумеровать натуральными числами. Пусть тогда,
B = {f1, f2, f3, ....}.
Рассмотрим функцию f , определенную следующим выражением:
f (i) = 1 − fi(i), i = 1, ∞. (31) По определению это функция f : N0 → {0, 1} и всюду определена на N0. Тогда должен существовать индекс k, которым функция f пронумерована
в множестве B, но из формулы 31 следует, что f (k) = 1 − fk(k) /= fk?!
Это противоречие доказывает, что как бы мы не нумеровали элементы
B, всегда найдется ненумерованная функция. Следовательно, множество B имеет несчетную мощность, а, значит, и множество A также более чем счетно.
Поскольку число машин Тьюринга счетно, а число частичных функций f : N0 → N0 более чем счетно, мы не можем сопоставить каждой
функции свою машину Тьюринга. Таким образом, должны существовать функции, которые не будут являться вычислимыми, что и требовалось доказать.
D