Изменения

Перейти к: навигация, поиск

Примитивно рекурсивные функции

94 байта добавлено, 22:40, 15 ноября 2016
Рекурсивные функции
Рассмотрим примитивы, из которых будем собирать выражения:
<ol>
<li> <tex>\mathrm{Z}</tex>.</li>
# <tex>\mathrm{Z}: \mathbb{N} \rightarrow \mathbb{N}</tex>, <tex>\mathrm{Z}(x) = 0</tex># <li> <tex>\mathrm{N}: </tex>.</li> <tex>\mathbb{N} \rightarrow \mathbb{N}</tex>, <tex>\mathrm{N}(x) = x'</tex># <li> Проекция. </li>  <tex>\mathrm{U^n_i}: \mathbb{N}^{n} \rightarrow \mathbb{N}</tex>, <tex>\mathrm{U^n_i} (x_1, ... x_n) = x_i</tex># <li> Подстановка. </li>  Если <tex>\mathrm{f}: \mathbb{N}^{n} \rightarrow \mathbb{N}</tex> и <tex>\mathrm{g_1}, ... \mathrm{g_n}: \mathbb{N}^{m} \rightarrow \mathbb{N}</tex>, то <tex>\mathrm{S}\langle{}\mathrm{f},\mathrm{g_1},...\mathrm{g_n}\rangle: \mathbb{N}^{m} \rightarrow \mathbb{N}</tex>. При этом <tex>\mathrm{S}\langle{}\mathrm{f},\mathrm{g_1},...\mathrm{g_n}\rangle (x_1,...x_m) = \mathrm{f}(\mathrm{g_1}(x_1,...x_m), ... \mathrm{g_n}(x_1,...x_m))</tex># <li> Примитивная рекурсия. </li> Если <tex>\mathrm{f}: \mathbb{N}^{n} \rightarrow \mathbb{N}</tex> и <tex>\mathrm{g}:\mathbb{N}^{n+2} \rightarrow \mathbb{N}</tex>, то <tex>\mathrm{R}\langle{}\mathrm{f},\mathrm{g}\rangle:\mathbb{N}^{n+1} \rightarrow\mathbb{N}</tex>, при этом <tex>\mathrm{R}\langle{}\mathrm{f},\mathrm{g}\rangle (x_1,...x_n,y) = \left\{\begin{array}{ll}
\mathrm{f}(x_1,...x_n) & , y = 0\\
\mathrm{g}(x_1,...x_n,y-1,\mathrm{R}\langle{}\mathrm{f},\mathrm{g}\rangle(x_1,...x_n,y-1)) &, y > 0
\end{array}\right.</tex>
# Минимизация. Если <tex>\mathrm{f}: \mathbb{N}^{n+1} \rightarrow \mathbb{N}</tex>, то <tex>\mu \langle{}\mathrm{f}\rangle: \mathbb{N}^n \rightarrow \mathbb{N}</tex>, при этом <tex>\mu \langle{}\mathrm{f}\rangle (x_1,...x_n)</tex> &mdash; такое минимальное число <tex>y</tex>, что <tex>\mathrm{f}(x_1,...x_n,y) = 0</tex>. Если такого <tex>y</tex> нет, результат данного примитива неопределен.
<li> Минимизация.</li>
 
Если <tex>\mathrm{f}: \mathbb{N}^{n+1} \rightarrow \mathbb{N}</tex>, то <tex>\mu \langle{}\mathrm{f}\rangle: \mathbb{N}^n \rightarrow \mathbb{N}</tex>, при этом <tex>\mu \langle{}\mathrm{f}\rangle (x_1,...x_n)</tex> &mdash; такое минимальное число <tex>y</tex>, что <tex>\mathrm{f}(x_1,...x_n,y) = 0</tex>. Если такого <tex>y</tex> нет, результат данного примитива неопределен.
</ol>
Если некоторая функция <tex>\mathbb{N}^{n} \rightarrow \mathbb{N}</tex> может быть задана с помощью данных примитивов, то она называется рекурсивной. Если некоторую функцию можно собрать исключительно из первых 5 примитивов (то есть без использования операции минимизации), то такая функция называется примитивно-рекурсивной.
313
правок

Навигация