- •1. Исчисление высказываний
- •1.1. Алгоритмы проверки общезначимости и противоречивости в исчислении высказываний
- •1.2. Метод резолюций в исчислении высказываний
- •1.3. Метод резолюций для хорновских дизъюнктов
- •Задачи и упражнения
- •2. Логика и исчисление предикатов
- •2.1. Логика предикатов
- •2.2. Алгебра предикатов
- •2.2.1. Логические операции
- •2.2.2. Правила записи сложных формул
- •2.2.3. Законы алгебры предикатов
- •2.2.4. Предваренная нормальная форма
- •2.2.4.1. Алгоритм приведения формулы к виду пнф
- •2.2.5. Сколемовская стандартная форма
- •2.2.5.1. Алгоритм Сколема
- •2.3. Исчисление предикатов
- •2.3.1. Интерпретация формул
- •2.3.2. Правила вывода
- •2.3.3. Метод дедуктивного вывода
- •2.3.4. Метод резолюций в исчислении предикатов
- •2.4. Проблемы в исчислении предикатов
- •2.5. Логическое программирование
- •Задачи и упражнения
- •3. Элементы теории алгоритмов
- •3.1. Рекурсивные функции
- •3.1.1. Базовые функции
- •3.1.2. Элементарные операции
- •3.2. Машина Тьюринга
- •3.2.1. Описание машины Тьюринга
- •3.2.2. Примеры машин Тьюринга
- •3.2.3. Условные обозначения и схемные соединения машин Тьюринга
- •3.2.4. Рекурсивные функции и вычисления на машинах Тьюринга
- •3.3. Конечные автоматы
- •4. Неклассические логики
- •4.1. Пропозиционные логики
- •4.2. Алгоритмические логики
- •Задачи и упражнения
- •Заключение
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
3.1. Рекурсивные функции
Известно, что рекурсия есть способ определения значения функции в некоторой точке через известные значения этой функции в других, предшествующих точках. Очевидно, что в каждой точке должен быть задан набор значений аргументов данной функции, а в некоторой исходной точке – значение самой функции.
В тех случаях, когда речь идет о числовых функциях, области определения и значения которых заданы на множестве целых положительных чисел, это описание рекурсии задает способ вычисления численных значений определяемой функции для заданного набора числовых значений аргументов и числовых значений этой функции в исходной точке.
Числовые функции, для которых существует алгоритм вычисления их значений, называют рекурсивными функциями.
Если числовая функция определена не для всех значений аргументов, ее называют частично рекурсивной функцией. Если для всех значений – то общерекурсивной функцией.
Иследование алгоритмов на множестве рекурсивных функций оправдано тем, что любое вещественное число может быть представлено цепочкой <целое> «.»<целое>, для которой существует только одна синтаксическая переменная – <целое>. Следовательно, любую функцию можно свести к рекурсивной, если значения аргументов и значения функции рассматривкать принадлежащими синтаксической переменной <целое>.
Последовательность функциональных равенств, описывающих по шагам дискретный процесс вычисления числовой функции от ее исходного значения при заданных значениях независимых переменных аргумента, называют рекурсивным описанием, или протоколом.
Формализм вычисления является универсальной моделью описания последовательности шагов в реализации алгоритма.
Для этой модели должны быть заданы наборы элементарных объектов и элементарных действий в описании механизма реализации алгоритма. Такими элементарными объектами являются три базовые функции, а элементарными действиями – три элементарных операции.
3.1.1. Базовые функции
Простейшие одношаговые рекурсивные функции называются базовыми. К числу таких функций относятся функции константа, тождества и следования.
Функция константа. Если f = {(x1; x2; ... xn; у) | xiX; yY} = cn, то любым значениям аргументов функции ставится в соответствие ее значение, равное постоянной величине – cn, чаще всего нулю.
Например, если f = (x1; x2; x3; у) = c3, то для x1 = 5, x2 = 4, x3 = 7 и c3 = 0 имеем у = 0; если f = x1; x2; x3; у) = cз, то для x1= 5, x2 = 4, x3 = 7 и cз = 1 имеем у = 1.
Функция тождества. Если f = {(x1; x2; ... xn; у) | xiX; yY}= Jn;m, то любым значениям переменных аргумента функции ставится в соответствие ее значение, равное значению m-го независимого аргумента, где 1 m n – номер выбранного независимого аргумента.
Например, если f = (x1; x2; ... xn; у) = j3,2 , то для x1 = 5, x2= 4, x3 = 7 имеем у=4; если f = (x1; x2; ... xn; у) = j3,3, то для x1= 5, x2= 4, x3= 7 имеем у = 7.
Функция следования. Если f = (х; у) = , то любому значению независимой переменной аргумента функции ставится в соответствие ее значение, равное числу, непосредственно следующиму за числом, являющимся значением независимой аргумента.
Например, если f = (х; у) = (х), то для х = 5 имеем у = (х+1) = (5+1) = 6; если f = (х; у) = (х), то для х = 7 имеем у = (х +1) = (7 +1)= 8.