- •Математическая логика и теория алгоритмов
- •Воронеж 2011
- •1. Логика высказываний
- •1.1. Алгебра высказываний
- •Операции над высказываниями
- •1.1.2. Правила записи сложных формул
- •1.1.3. Таблицы истинности
- •1.1.4. Равносильность формул
- •1.1.5. Дизъюнктивные и конъюнктивные нормальные формы
- •1.1.6. Логическое следствие
- •1.2. Исчисление высказываний
- •1.2.1. Алгоритмы проверки общезначимости и противоречивости в исчислении высказываний
- •1.2.2. Метод резолюций в исчислении высказываний
- •1.2.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.3. Конечные автоматы
- •4. Неклассические логики
- •4.1. Пропозиционные логики
- •4.2. Алгоритмические логики
- •Задачи и упражнения
- •Заключение
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
Выразим с помощью схемы примитивной рекурсии:
Итак, в предположении справедливости формулы (2) доказана формула (3). На основании метода математической индукции утверждаем, что предположении (1) справедливо для всех .
Ответ: .
Операция минимизации (поиск наименьшего корня). Если дана (n + 1)-местная функция f(x1; x2; ... xn; у), то значение n-местной функции (x1; x2; ... xn) можно определить, придавая вспомогательному аргументу у последовательно значения 0; 1; 2; 3; ..., пока не окажется, что функция f (x1; x2; ... xn; у) в первый раз стала равной нулю, т.е. f(x1; x2; ... xn; у) = 0. Полученное значение вспомогательного аргумента у принять за значение определяемой функции, соответствующей заданным значениям независимых переменных аргумента (x1 = a1; x2 =a2; ... xn = an), при которых выполнялся вычислительный процесс.
Поиск значений функции (x1; x2; ... xn) может быть задан с помощью -оператора, который может быть записан так:
(x1; x2; ... xn) = y (f (x1; x2; ... xn; y) = 0.
Операция минимизации по i-ой переменной функции обозначается и определяется следующим образом:
Рассмотрим соотношение
, (*)
которое будем рассматривать как уравнение относительно y. Это уравнение будем решать подбором, подставляя вместо y числа 0, 1, 2 и т.д. Возможны случаи:
1) на некотором шаге левая часть соотношения (*) не определена. В этом случае считаем, что на наборе операция минимизации не определена;
2) на каждом шаге левая часть соотношения (*) определена, но ни при каких y равенство не выполняется. В этом случае также считаем, что на наборе операция минимизации не определена;
3) левая часть соотношения (*) определена при …, но при равенство (*) не выполняется, а при оно выполняется. В этом случае число z считается значением операции минимизации на наборе .
Пример. Найти функции, получаемые из числовой функции с помощью операции минимизации по каждой ее переменной.
Решение.
1. Минимизируем данную функцию по переменной . Рассмотрим уравнение . (4)
а) Если , то при подстановке вместо y нуля получаем верное равенство.
б) Если , , то при подстановке в уравнение (4) вместо y единицы в левой части уравнения (4) появляется неосмысленное выражение – дробь , значит, в этом случае операция минимизации не определена.
в) Если , но , уравнение (4) примет вид . Это уравнение не может выполниться ни при каких .
г) Если , но , то при уравнение (4) выполнится.
Итак,
2. Минимизируем данную функцию по переменной . Рассмотрим уравнение . (5)
Если , а , то уравнение (5) примет вид и имеем решением число .
Если , то на самом первом шаге, при подстановке вместо y нуля, в левой части уравнения (5) возникает отрицательное число, т.е. неосмысленное выражение.
Итак,
3. Минимизируем данную функцию по переменной . Рассмотрим уравнение . (6)
Это уравнение на самом первом шаге, при подстановке вместо y нуля теряет смысл, операция минимизации по переменной нигде не определена.
4. Минимизируем данную функцию по переменной . Рассмотрим уравнение . (7)
Если набор переменных таков, что левая часть уравнения (7) имеет смысл и уравнение выполнимо, то можно считать, что оно выполнимо при подстановке в (7) переменной y на самом первом шаге, т.е. при y=0.
В остальных случаях значение операции минимизации не определено. Итак,
Использование оператора y-удобное средство для поиска обратных рекурсивных функций.
Как правило, область определения функции (x1; x2; ... xn) меньше области определения функции f (x1; x2; ... xn; у), что позволяет утверждать о частичной рекурсивности функции (x1; x2; ... xn).
Пример. Пусть f (x1; x2; ... xn; у) = f (x; у) = y2 – x.
Тогда (x) = y ( (x; y) = y2 –x = 0 или (x) =y = .
Так как (x) является рекурсивной функцией, то должен иметь только целое положительное значение. Таким образом, (x) определена только для значения х = 1, 4, 9, 16... и имеет значение, соответственно, 1, 2, 3, 4, ... Таким образом, функция (x) также является частично рекурсивной.
Если дан алгоритм вычисления функции f (a1; a2; ... an; у), то значение функции (a1; a2; ... an) вычисляется следующим образом:
шаг 1: принять у = 0 и вычислить значение функции f (a1; a2; ... an; у).
шаг 2: если f (a1; a2; ... an; у) = 0, то конец, значение функции (a1; a2; ... an) = у, иначе принять у = у + 1 и перейти к шагу 1.
Пример. Пусть f (a1; a2; ... an; у)=(x1 – x2 – x3 – y), где x1 = 7, x2 = 1, xз = 2.
Тогда по алгоритму минимизации имеем:
f =(7; 1; 2; 0) = 7 – 1 – 2 – 0 0;
f = (7; 1; 2; 1) = 7 – 1 – 2 – 1 0;
f = (7; 1; 2; 2) = 7 – 1 – 2 – 2 0;
f = (7; 1; 2; 3) = 7 – 1 – 2 – 3 0;
f = (7; 1; 2; 4) = 7 – 1 – 2 – 4 = 0.
Следовательно, (x1; x2; ... xn) = (7; 1; 2) = 4.
Операция итерации. Повторное выполнение какого-либо процесса до тех пор, пока не будет удовлетворено заданное условие, называют итерацией. При этом выполнение процесса производится каждый раз полностью. Однократное выполнение процесса называют шагом итерации.