
- •Введение
- •Тема 1. Логика высказываний
- •1.1. Понятие высказывания
- •1.2. Логические операции
- •1. Отрицание или инверсия ( – не)
- •4. Импликация () “если а, то b”
- •6. Сумма по модулю два
- •7. Штрих Шеффера ( , обратная конъюнкция и – не)
- •8. Стрелка Пирса (, обратная дизъюнкция или – не )
- •1.3. Булевы функции
- •1.3.1. Некоторые определения из теории множеств
- •1.3.2. Булевы функции
- •1.4. Формулы
- •1.5. Равносильные формулы
- •1.6. Подстановка и замена
- •1.7. Формы представления высказываний
- •1.8. Минимизация сложных высказываний методом Квайна
- •1.9. Полные системы функций
- •1.9.1. Система функций {}
- •1.9.2. Замкнутые классы
- •1.9.3. Функциональная полнота
- •Тема 2. Логические исчисления
- •2.1. Интерпретация формул
- •2.2. Примеры тождественно истинных формул высказываний
- •2.3. Формальные теории
- •2.5. Интерпретация формальных теорий
- •2.6. Исчисление высказываний.
- •2.7. Производные правила вывода
- •2.8. Дедукция
- •2.9. Некоторые теоремы теории £
- •Тема 3. Логика и исчисление предикатов
- •3.1. Предикаты
- •3.2. Исчисление предикатов
- •3.3. Интерпретация
- •3.4. Основные равносильности для предикатов
- •3.5. Приведенная форма представления предикатов
- •Тема 4. Автоматическое доказательство теорем
- •4.1. Постановка задачи
- •4.2. Доказательство от противного
- •4.3.Правило резолюции для исчисления высказываний
- •4.4. Правило резолюции для исчисления предикатов
- •4.5. Основные положения мр (выводы)
- •4.6. Логическое программирование
- •Тема 5. Теория алгоритмов
- •5.1. Интуитивное понятие алгоритма
- •5.2. Конкретизация понятия алгоритма
- •5.2.1. Машины Тьюринга
- •5.2.3. Рекурсивные функции
- •5.2.3. Нормальные алгорифмы Маркова
- •5.3. Алгоритмически неразрешимые проблемы
- •5.3.1. Проблема самоприменимости
- •5.3.1.1. Нумерация мт
- •5.3.1.2. Самоприменимость мт
- •5.3.2. Проблема останова
- •5.3.3. Разрешимые и неразрешимые задачи математики
- •5.4. Характеристики сложности вычислений
- •5.5. Классы сложности задач
- •5.5.1. Р задачи
- •5.5.2. NPзадачи
5.2.3. Рекурсивные функции
Будем рассматривать только числовые функции, т. е. функции, аргументы и значения которых принадлежат множеству натуральных чисел N(N=0,1,2,…).
Если область определения функции
совпадает с множеством
,
то функция называется всюду определенной,
иначе – частично определенной.
Пример:
f(x,y)=x+y– всюду определенная функция,
f(x,y)=x-y– частично определенная функция, т. к.
она определена только для.
Рекурсивное определение функции – это такое определение, при котором значение функции для данных аргументов определяется значениями той же функции для более простых аргументов или значениями более простых функций.
Примеры:
1. Числа Фибоначчи (1, 1, 2, 3, 5, 8, …) это последовательность чисел f(n), гдеf(0)=1,f(1)=1,f(n+2)=f(n)+f(n+1).
2. Факториал (n!=1*2*3*…*n)f(0)=1,f(n+1)=f(n)*(n+1).
Рекурсивные функции строятся на основе трех примитивных (заведомо однозначно понимаемых и реализуемых) функций. Их также называют простейшими.
S(x)=x+1 – функция следования.
Примеры:S(0)=1,S(1)=2,S(-5) – не определена.
О(х)=0 – нуль-функция;
Примеры:О(0)=0, О(1)=0, О(-5) – не определена.
Im(x1,x2,…,xn)=xm, (m=1,2,…n) – функция проектирования (выбора аргумента).
Пример: I2(1,2,3,4,…n)=2.
С примитивными функциями можно производить различные манипуляции, используя три оператора: суперпозиции, примитивной рекурсии и минимизации.
1. Оператор суперпозиции (подстановки).
Пусть f–m-местная функция,g1,…gm –n-местные операции на множествеN. Оператор суперпозицииSставит в соответствие операциямfиg1,…gm n-местную функциюh.
Примеры:
Используя оператор суперпозиции, можно получить любую константу.
S(O(x))=0+1=1
S(S(O(x)))=0+1+1=0+2=2
S(S…(O(x))…)=0+n, где число вложений функций следованияn.
Используя оператор суперпозиции, можно выполнить сдвиг на константу n.
S(x)=x+1
S(S(x))=x+1+1=x+2
S(S…(S(x))…)=x+n.
2. Оператор примитивной рекурсии
Оператор Rкаждой (n+2)-местной операцииfиn-местной операцииgставит в соответствие (n+1)-местную операциюh=R(f,g), удовлетворяющую следующей схеме:
Для n=0 схема примитивной рекурсии имеет вид:
,
где а – константа,
Пример:Вычисление факториала с использованием оператора примитивной рекурсии будет выглядеть следующим образом.
Схема примитивной рекурсии образует
процесс построения функции h,
при котором на нулевом шаге используется
функцияg, а на каждом
последующем шаге значение функцииfот аргументов,
номераyпредыдущего шага
и значения функцииh,
вычисленного на предыдущем шаге.
Функция называется примитивно-рекурсивной (ПРФ),если она может быть получена из простейших функций с помощью оператора суперпозиции или оператора примитивной рекурсии.
Примеры:
1)
- примитивно-рекурсивная функция.
Схема примитивной рекурсии:
2)
-
примитивно-рекурсивная функция.
3. Оператор минимизации (-оператор)
,
гдеy– выделенная
переменная.
Работу
-оператора
можно описать следующим образом.
Выделяется переменнаяy,
затем фиксируются остальные переменные
.
Значение у последовательно увеличивается,
начиная с 0. Значением
-оператора
будет то значение у, при котором функция
впервые обратилась в 0.
Если функция не обратилась в 0 или
принимает отрицательное значение, то
значение
-оператора
считается неопределенным.
Пример: g(x,y)=x-y+3;
Зафиксируем х=1 и будем менять y.
,
т. к. 1-1+3=3
,
т. к. 1-2+3=2
,
т. к. 1-3+3=1
,
т. к. 1-1+3=0
Следовательно,
.
Функция f(x1,x2,…,xn) называется частично рекурсивной (ЧРФ), если она может быть получена из простейших функций с помощью конечного числа применений операций суперпозиции, примитивной рекурсии и минимизации.
Пример.
f(x,y)=x-y- частична, т. к. она не определена, еслиx<y. Чтобы сделать эту функцию полностью определенной на множестве натуральных чиселN, рассматривают усеченную разность.
Свойства усеченной разности.
1)
2)
3)
Докажем, что
- примитивно-рекурсивная функция.
Функция
примитивно рекурсивна, т. к. по схеме
примитивной рекурсии:
1) При х=0
.
2)
Т. о. ее можно получить из простейших функций О(х) и Im(x1,…xn) с помощью оператора простейшей рекурсииR.
Докажем, что
- примитивно-рекурсивная функция.
По схеме примитивной рекурсии
1)
2)
Т. о. функцию
можно получить с помощью операции
примитивной рекурсии из функций
иh(x,y,z)=
.
Функция
также является примитивно-рекурсивной
- примитивно-рекурсивная функция.
Функцию f(x,y)=x-yможно получить с помощью оператора минимизации:
.
Следовательно, функция f(x,y)=x-yявляется частично-рекурсивной функцией.
Всюду определенная частично-рекурсивная функция является общерекурсивной (ОРФ).
Для алгоритмических проблем типичной является ситуация, когда требуется найти алгоритм для вычисления числовой функции f(x1,…xn). Числовые функции, значения которых можно вычислить с помощью некоторого алгоритма, называются вычислимыми функциями. Это понятие интуитивно, т. к. интуитивно понятие алгоритма.
Функция f(x1,…xn) эффективно вычислима, если существует алгоритм, с помощью которого можно найтиf(k1,…kn), если известныk1,…kn.
Тезис Черча. Всякая эффективно вычислимая функция является частично-рекурсивной функцией.
В формулировку тезиса Черча входит понятие эффективной вычислимости. Поэтому его нельзя ни доказать, ни опровергнуть в математическом смысле.
Частичная рекурсивность – это уточнение понятия вычислимой функции. С его помощью можно уточнять или опровергать вычислимость.
Любая частично-рекурсивная функция является вычислимой по Тьюрингу и наоборот.