- •Введение
- •1. Алгебра (логика) высказываний
- •1.1. Высказывания и операции над ними
- •Отрицание (логическая связка «не»)
- •Логическое умножение (конъюнкция)
- •Логическое сложение (дизъюнкция)
- •Логическое следование (импликация)
- •Логическое тождество (эквиваленция)
- •Исключающее «или» (неравнозначность)
- •1.2. Формулы алгебры высказываний
- •Примеры
- •1.3. Логические функции высказываний
- •Пример
- •1.4. Равносильность формул
- •Пример
- •1.5. Полные системы логических функций
- •1.6. Тавтологии. Выполнимые формулы
- •Примеры
- •1.7. Нормальные формы для формул
- •Примеры
- •1.8. Проблема разрешения и методы ее решения
- •Примеры
- •1.9. Гипотезы и следствия в алгебре высказываний
- •Примеры
- •1.10. Основные схемы логически правильных умозаключений
- •2. Логика предикатов
- •2.1. Предикаты
- •Примеры
- •2.2. Кванторы
- •Примеры
- •2.3. Формулы логики предикатов
- •Примеры
- •2.4. Основные равносильности, содержащие кванторы
- •2.5. Предваренная нормальная форма
- •Примеры
- •2.6. Тавтологии логики предикатов
- •Примеры
- •3. Теория алгоритмов
- •3.1. Машина Тьюринга
- •Пример
- •Примеры
- •Универсальная кодировка машины Тьюринга
- •Пример
- •3.2. Алгоритмически неразрешимые проблемы
- •3.3. Рекурсивные функции. Тезис Чёрча
- •Операция суперпозиции
- •Примеры
- •Операция примитивной рекурсии
- •Операция минимизации
- •Пример
- •Рекомендуемая литература
Универсальная кодировка машины Тьюринга
Построим универсальную кодировку программы машины Тьюринга M. Для этого занумеруем алфавит {a0, a1, , ak }, со-
стояния {q0, q1, , qn} и сдвиги натуральными числами:
R |
L |
S |
a0 |
a1 |
|
ak |
q0 |
q1 |
|
qn |
1 |
3 |
5 |
7 |
9 |
|
2k+1 |
0 |
2 |
|
2n |
Тогда любую команду можно закодировать набором из 5 чисел, а этот набор представить на ленте с помощью алфавита
{1, } стандартным образом, помещая вместо разделяющих ну-
лей символ . При этом мы получим код команды, который обозначим через K .
Теперь можно составить код всей программы
K(M ) =K1 K2 K p ,
где Ki — коды всех команд программы. Отметим, что по коду всегда можно восстановить программу.
Пример
Построить код машины Тьюринга с программой:
q11 → q11R , q10 → q21L, q21 → q21L, q20 → q00R .
Решение. Закодируем набором из 5 чисел каждую команду, используя таблицу кодов:
2 9 2 9 1, 2 7 4 9 3, 4 9 4 9 3, 4 7 0 7 1.
69