русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Рекурсивные функции


Дата добавления: 2013-12-23; просмотров: 918; Нарушение авторских прав


Подстановок слово

Нормальная схема преобразуемое

 
 


xx ® y xxxyyyzzz

xy ® x yxyyyzzz

yzy ® x yxyyzzz

zz ®. z yxyzzz

yy ® x yxzzz

yxzz

 

МУХА

Х ® К МУКА

М ® Р РУКА

КА ® ЛОН РУЛОН

РУ ®. СЛ СЛОН

 

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

Удвоение исходной строки

aх ® хbхa

aу ® уbуa

bхх ® хbх

bху ® уbх

bух ® хbу

bуу ® уbу

b ®

a ®.

® a

Обращение исходной строки

aa ® ba

ba ® b

bх ® хb

bу ® уb

b ® .

aху® уaх

aух ® хaу

® a

 

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

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

При этом как аргументы, так и функции находятся в области натуральных чисел - N.

Рекурсивные функции строятся на основе трех примитивных (заведомо однозначно понимаемых и реализуемых) функций.

1. Нуль-функция: Z(x) = 0.

Например, Z(1) = 0, Z(5) = 0., но Z(-5) - не определено.

4. Функция следования: S(x) = x + 1.

Тонкость заключается в том, что операции сложения (+) мы здесь пока не определили и запись " + 1" понимается как взятие следующего элемента естественно упорядоченного множества N.

То есть в множестве N. всегда можно найти следующий аргумент, например: S(5) = 6.

3.Функция проектирования (выбора аргумента). Ii( n) (x1, x2,...,xi,...,xn) = xi.

Или частный случай - тождественная функция: I (x) = x.



 

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

 

1.Оператор суперпозиции: Позволяет из функции f (у1, …, уm) и функций

h1(x1,...,xn), h2(x1,...,xn), ... ,hm(x1,...,xn) сконструировать функцию

f(h1(x1,...,xn), ... , hm(x1,...,xn)).

Например, с помощью оператора суперпозиции можно получить любую константу

S(S( …(Z(x)) …)) = n, где число вложенных функций следования равно n.

Или сдвига числа на константу n, также равную числу вложенных функций следования.

S(S( …(S(x)) …)) = x + n,

 

2. Оператор примитивной рекурсии. Этот оператор позволяет получит

n + 1-местную функцию из n-местной и n + 2 - местной функций.

Оператор задается двумя равенствами:

f(x1,...,xn, 0) = g(x1,...,xn)

f(x1,...,xn, y) = h(x1,...,xn, y-1, f(x1,...,xn, y-1))

Позволяет по n+1-местной функции получить n-местную.

Частный случай - функция одного аргумента:

f(0) = const

f(y) = h(y - 1, f(y - 1))

 

Функции, которые могут быть построены из примитивных с помощью операторов суперпозиции и примитивной рекурсии называются примитивно-рекурсивными.

 

Пример: функция суммирования.

fS(x, 0) = g(x) = I(x) = x

fS(x, 1) = h(x, 0, fS(x, 0)) = h(x, 0, x) = h`(I3(3)((x, 0, x)) = S(x) = x + 1

fS(x, 2) = h(x, 1, fS(x,1)) = h(x, 1, x+1) = S(x + 1) = x + 2

. . .

fS(x, y) = h(x, 1, fS(x, y - 1)) = S(fS (x, y - 1)) = x + y

то есть в традиционной записи определение сложения, как примитивно-рекурсивной функции, будет:

x + y = x + (y - 1) + 1

 

Функция умножения.

fp(x, 0) = y(x) = z(0) = 0

fp(x, 1) = h(x, 0, fp(x, 0)) = h(x, 0, 0) = h`(I1,3(3)((x, 0, 0)) = fS(x, 0) = x

fp(x,2) = h`(x, fp(x, 1)) = fS(x, x) = 2x

fp(x,y) = fS(x, fp(x, y - 1))

то есть в традиционной записи определение умножения, как примитивно-рекурсивной функции, будет

x*y = x*(y - 1) + x



<== предыдущая лекция | следующая лекция ==>
Нормальные алгорифмы Маркова | L-исчисление


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.318 сек.