Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Вычислимые функции. Частично рекурсивные и общерекурсивные функции

Читайте также:
  1. HLA - система; классы антигенов, биологические функции, практическое значение HLA-типирования.
  2. II закон термодинамики. Характеристические функции системы. Уравнение энергетического баланса системы, его анализ.
  3. IV.Функции герундия в предложении.
  4. Python. Модуль math. Математические функции
  5. Агрегатные функции. Предложения GROUP BY, HAVING.
  6. Аккумулирующие сосуды и сосуды возврата крови к сердцу. Их функции. Временное и длительное депонирование крови.
  7. Алгоритм поиска подстроки Кнута-Морриса-Пратта (на основе префикс-функции)

Для алгоритмических проблем типичным является то обстоятельство, что требуется найти алгоритм для решения задачи, в условия которой входят значения некоторой конечной системы целочисленных параметров x1, x2,…, xn, а искомым результатом также является целое число y. Следовательно, стоит вопрос о существовании алгоритма для вычисления значений числовой функции y, зависящей от целочисленных значений аргументов x1, x2,…, xn.

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

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

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

1. l(x) = x + 1 (оператор сдвига),

2. O(x) = 0 (оператор аннулирования),

3. Inm(x1, x2,…, xn) = xm (оператор проектирования).

Ясно, что все три простейшие функции всюду определены и интуитивно вычислимы.

Далее вводятся операции над функциями.

1. Суперпозиция функций. Пусть определены функции f1(x1, x2,…, xn), f2(x1, x2,…, xn), …, fm(x1, x2,…, xn) и функция j(x1, x2,…, xm). Говорят, что функция y(x1, x2,…, xn) получена суперпозицией функций fi(x1, x2,…, xn), если справедливо равенство

y(x1, x2,…, xт) = j(f1(x1, x2,…, xn), f2(x1, x2,…, xn), …, fm(x1, x2,…, xn)).

Если каким-либо образом можно вычислить функции fi для определенных значений ai переменных xi, то, очевидно можно вычислить и функцию y.

2. Схема примитивной рекурсии. Пусть имеются две функции j(x2, x3,…, xn) и y(x1, x2,…, xn, xn+1) (n > 1). Рассмотрим новую функцию, которая удовлетворяет следующим равенствам:

f(0, x2, x3,…, xn) = j(x2, x3,…, xn),

f(y + 1, x2, x3,…, xn) = y(y, f(y, x2, x3,…, xn), x2, x3,…, xn).

Отметим, что функция j зависит от n – 1 аргументов, y – от n + 1, а f – от n.

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

В качестве примера рассмотрим функцию f(y, x):

f(0, x) = x,

f(y + 1, x) = f(y, x) + 1.

Здесь функция j(x) = x, а y(y, f(y, x), x) = y + 1. Рассмотрим, как можно вычислить значение функции f(y, x) при y = 5, x = 2. Так как f(0, x) = j(2) = 2, то из второго равенства последовательно имеем (начиная с y = 0):

f(1, 2) = y(0, 2, 2) = 2 + 1 = 3,

f(2, 2) = y(1, 3, 2) = 3 + 1 = 4,

f(3, 2) = y(2, 4, 2) = 4 + 1 = 5,

f(4, 2) = y(3, 5, 2) = 5 + 1 = 6,

f(5, 2) = y(4, 6, 2) = 6 + 1 = 7 – искомое значение функции.

3. Операция минимизации (m-оператор). Пусть задана некоторая функция f(x, y). Зафиксируем значение x и выясним, при каком значении y f(x, y) = 0. Так как результат зависит от x, то наименьшее значение y, при котором f(x, y) = 0, есть функция от x. Принято обозначение

j(x) = my[f(x, y) = 0].

(читается: «наименьшее y такое, что f(x, y) = 0»)

Аналогично можно определить функцию для многих переменных:

j(x1, x2,…, xn) = my[f(x1, x2,…, xn, y) = 0].

Переход от функции f к функции j называется применением m-оператора.

Функция j может быть вычислена следующим образом:

1. Вычислим f(x1, x2,…, xn, 0). Если это значение f = 0, то полагаем j(x1, x2,…, xn) = 0 и завершаем вычисление. Иначе переходим к следующему шагу.

2. Вычислим f(x1, x2,…, xn, 1). Если это значение f(x1, x2,…, xn, 1) = 0, то полагаем j(x1, x2,…, xn) = 1 и завершаем вычисление. Иначе переходим к следующему шагу. И т.д.

Если окажется, что для всех достижимых (т.е. принадлижащих области определения) значений у функция f(x1, x2,…, xn, у) ¹ 0, то функцию j(x1, x2,…, xn) считают неопределенной.

Определение 2. Функция f(x1, x2,…, xn) называется частично рекурсивной, если она может быть получена за конечное число шагов из простейших функций при помощи операций суперпозиции, схем примитивной рекурсии и m-оператора.

Определение 3. Функция f(x1, x2,…, xn) называется общерекурсивной, если она частично рекурсивна и всюду определена.

Примерами общерекурсивных функций являются: f(x, y) = x + y, f(x, y) = x × y, f(x, y) = x + n.

Тезис А. Чёрча. Каждая интуитивно вычислимая функция является частично рекурсивной.

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


Дата добавления: 2015-10-30; просмотров: 114 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Уточнение понятия алгоритма| Машины Тьюринга.

mybiblioteka.su - 2015-2024 год. (0.01 сек.)