Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
98
Добавлен:
09.02.2015
Размер:
68.57 Кб
Скачать

Оператор построения по первому нулю

Этот оператор называют обычно оператором наименьшего числа, а в некоторых книгах – оператором минимизации; Этот оператор по заданной функции, зависящей от n+1 аргументов, строит новую функцию от п аргументов. Исчезающий аргумент является вспомогательным и используется при выполнении оператора. Обозначают оператор построения по первому нулю буквой ; его применение обозначают строкой вида

f ::= µ[f1; (x)],

где х – исчезающий аргумент. С помощью оператора построения по первому нулю получают функцию f, значения которой определяются при выполнении сопутствующего ей алгоритма, который гласит: «Придавать вспомогательному аргументу последовательные значения, начиная с 0, до тех пор, пока не окажется, что функция f стала (в первый раз) равной нулю. Полученное значение вспомогательного аргумента принять за значение определяемой функции, соответствующее тем значениям основных аргументов, при которых осуществлялся описанный процесс».

Другими словами, пусть дана функция (x1, x2, …, xn). Выберем одну из переменных xk и назовем её у. Получим (x1x2, …, xk-1y, xk+1, …, xn). Обозначим

.

Пусть задано уравнение . Найдем корень этого уравнения относительноу при фиксированном значении .

Возможны три ситуации:

  1. нет ни одного корня для натурального значения у;

  2. существует один корень при натуральном у;

  3. существует более чем один корень при натуральном у.

По смыслу задачи нужно найти наименьший или первый корень. В первом случае это невозможно, следовательно, минимизация не определена. Для поиска минимального корня используем следующий простой алгоритм:

  1. выбираем у=0;

  2. проверяем равны ли нулю значения функции f при заданном у. Если равны, то у – первый корень и выходим из алгоритма. Если y≠0, то переходим к следующему пункту;

  3. увеличиваем у на единицу, у=у+1;

  4. возвращаемся к пункту 2.

Если функция имеет конечный корень среди натуральных чисел, то алгоритм обязательно даст результат. Если корней несколько, то обязательно будет найден самый меньший среди натуральных корней. Пользуясь данным алгоритмом поиска корня, можно построить функцию g(x1x2, …, xk-1, xk+1, …, xn).

Запишем алгоритм построения функции g:

  1. фиксируем значение переменных x1, x2, …, xn;

  2. строим некую функцию f, к которой будет добавлена переменная xk;

  3. определяем, имеет ли относительно этой переменной функция f натуральный корень. Если корней нет, то при данных значениях функция g не определена. Если корни есть, то находим минимальный корень у. Этот корень и есть искомое значение функции g, g=y.

Подобный алгоритм определяет некоторую функцию, которая при одних значениях аргумента определена, а при других значениях не определена.

Функция, полученная по приведенному выше алгоритму, обозначается

g(x1x2, …, xk-1, xk+1, …, xn) = µ[f(x1x2, …, xk-1xk+1, …, xn), y]

Построим µ[f(x, y), y] для f(x, y) = xy + 1. Очевидно, что данная функция равна нулю при у = х – 1, следовательно g(x) = x – 1, при этом функция g не определена при х = 0. То есть, µ[f(x, y) = xy + 1, y] = x – 1.

Заметим, что базовые функции и функции, получаемые при помощи операторов подстановки и рекурсии, но без применения оператора построения по первому нулю, определены (имеют значения) для любых значений аргументов. Иначе обстоит дело с функциями, полученными при помощи оператора построения по первому нулю. Для некоторых комбинаций значений аргументов (даже для очень многих) они могут быть не определены, потому что исходная функция не принимает нулевых значений.

Итак, рекурсивными называются базовые функции и любые функции, получаемые из них с помощью конечного числа операторов подстановки, рекурсии и построения по первому нулю. При этом функции, получаемые без использования оператора построения по первому нулю, называются примитивно рекурсивными. Это наиболее простые из рекурсивных функций. Примитивно рекурсивные функции, вместе с теми рекурсивными функциями, которые невозможно получить, не прибегая к оператору построения по первому нулю, но которые определены для любых значений аргументов, называют общерекурсивными. Рекурсивные функции, которые определены не для всех возможных значений аргументов, называют частично рекурсивными. Построенная нами выше функция р(х) является частично рекурсивной.

Правило минимизации. Если функция получена с помощью минимизации рекурсивной функции, то она частично рекурсивна, если функция получена с помощью оператора минимизации из частично рекурсивной функции, то она так же частично рекурсивна.

Можно доказать, что функция, полученная из частично рекурсивных функций с помощью операций суперпозиции и примитивной рекурсии является частично рекурсивной.

Изучая рекурсивные и частично рекурсивные функции, можно сформулировать еще один тезис.

Тезис Черча. Любая всюду определенная вычислимая числовая функция является общерекурсивной. И, наоборот, если всюду определенная числовая функция не является общерекурсивной, то она невычислима.

Перенося тезис Черча на алгоритмы, сопутствующие рекурсивным функциям, мы можем высказать для них следующую гипотезу.

Основной тезис. Каков бы ни был алгоритм, перерабатывающий наборы целых неотрицательных чисел в целые неотрицательные числа, существует алгоритм, сопутствующий рекурсивной функции, который ему эквивалентен.

Тезис Клини. Любая вычислимая, но не всюду определенная числовая функция является частично рекурсивной. Если частично определенная числовая функция не является частично рекурсивной, то она не вычислима.

Соседние файлы в папке Мат. логика все лекции