Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Лекция 3.docx
Скачиваний:
22
Добавлен:
02.10.2020
Размер:
71.11 Кб
Скачать

Теория рекурсивных функций

Формализовать понятие «алгоритм» возможно путем подбора известных понятий в математике, для которых уже разработан формализм.

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

Числовая функция – это функция, аргументы и значения которой принадлежат множеству натуральных чисел   N=(0, 1, 2, …).

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

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

Тезис Черча: «всякий алгоритм может быть реализован частично-рекурсивной функцией».

Тезис связывает понятие алгоритма и строгое математическое понятие функции.

Если не существует эквивалентная частично-рекурсивная функция, то это означает, что не существует алгоритма решения соответствующей задачи.

Гёдель впервые определил алгоритм как последовательность правил построения сложных математических функций из более простых.

Это была первая система, позволившая формализовать понятие алгоритма, на основе использования арифметических (целочисленных) функций, получивших специальное название рекурсивных функций.

Общие черты алгоритма и функции

  • у функции есть область определения - у алгоритма есть область применимости;

  • у функции есть область допустимых значений - у алгоритма есть определенное множество результатов.

Отличия понятия алгоритма и функции

  • алгоритм определяет некоторый процесс, который называется вычислительным.

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

  • алгоритм однозначно ставит в соответствие исходным данным определенный результат.

Т.е. математическое понятие функции не подходит для формализации алгоритма.

Утверждение: «для всякой функции существует вычисляющий ее алгоритм» неверно.

Но утверждать, что процесс построения функции является алгоритмом, можно т.к. он:

  • начинается с исходных данных, выбираемых из базового набора;

  • выполняется пошагово (в дискретном времени);

  • на каждом шаге выполняется одна из элементарных операций;

  • результат каждого шага строго определен;

  • процесс заканчивается через конечное число шагов.

Все известные вычислимые функции являются рекурсивными функциями.

Рекурсией называется способ задания функции, при котором значение функции для произвольных значений аргументов выражается известным образом через значения функции для меньших значений аргументов.

Рекурсивные функции вычислимы путем определенной процедуры механического характера. Т.е. для любой рекурсивной функции можно указать алгоритм вычисления ее значений.

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

Примером рекурсивного определения являются числа Фибоначчи:

1, 1, 2, 3, 5, 8, 13

  • каждое последующее число является суммой двух предыдущих чисел.

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

  • задать несколько простых базовых функций

  • задать операции над функциями (не над значениями), функции выступают в качестве операндов и дают в результате новые функции

  • над базовыми функциями, по-разному комбинируя их в качестве аргументов, производят все возможные операции.

Получим новый набор функций, над которыми вновь произведем все возможные операции и т.д.

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

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

Рекурсивный алгоритм будет эффективным, если выполняются условия:

  • процедуры анализа исходных данных имеющих рекурсивную структуру будут более эффективны, если они сами рекурсивны;

  • если алгоритм обработки набора данных построить, разбивая данные на части и обрабатывая каждую часть отдельно, то из частичных решений можно получить общее;

  • если необходимо выбрать оптимальный вариант из некоторого множества решений, то искомое решение может быть найдено через конечное число шагов, на каждом из которых удаляется часть информации, и далее задача решается на меньшем объеме данных.

Соседние файлы в папке Лекции