Частично рекурсивные функции — различия между версиями
(→Вычислимые и частично рекурсивные функции) |
(→Вычислимые и частично рекурсивные функции) |
||
Строка 23: | Строка 23: | ||
|proof= | |proof= | ||
Программа вычисляющая частично рекурсивную функцию легко пишется на любом удобном для читателя языке программирования. Поэтому нам достаточно показать что любая вычислимая функция примитивно рекурсивная. Функции <tex> IN </tex>, <tex> OUT </tex>, <tex> N </tex>, и как представляется состояние машины Тюринга описано в доказательстве [[Рекурсивные функции|теоремы о примитивной рекурсивности вычислимых функций]]. | Программа вычисляющая частично рекурсивную функцию легко пишется на любом удобном для читателя языке программирования. Поэтому нам достаточно показать что любая вычислимая функция примитивно рекурсивная. Функции <tex> IN </tex>, <tex> OUT </tex>, <tex> N </tex>, и как представляется состояние машины Тюринга описано в доказательстве [[Рекурсивные функции|теоремы о примитивной рекурсивности вычислимых функций]]. | ||
− | Функция <tex> T([L,R,S,C]) возвращает минимальное число шагов за которое программа вычисляющая нашу функцию попадет в состояние <tex> Accepted </tex>. Покажем что она частично рекурсивная. Т([L,R,S,C] = /mu t (p_2(N([L,R,S,C],t)) = Accepted), где p_i - взятие <tex> i </tex> - того элемента списка. Операции сравнения здесь реализованы также как и примитивно рекурсивных функциях. | + | Функция <tex> T([L,R,S,C]) </tex> возвращает минимальное число шагов за которое программа вычисляющая нашу функцию попадет в состояние <tex> Accepted </tex>. Покажем что она частично рекурсивная. Т([L,R,S,C] = /mu t (p_2(N([L,R,S,C],t)) = Accepted), где p_i - взятие <tex> i </tex> - того элемента списка. Операции сравнения здесь реализованы также как и примитивно рекурсивных функциях. |
В итоге F(args) = OUT(N(IN(args),T(IN(args))) - частично рекурсивная функция. | В итоге F(args) = OUT(N(IN(args),T(IN(args))) - частично рекурсивная функция. | ||
}} | }} |
Версия 03:14, 20 января 2013
Основные определения
Рассмотрим следующее правило преобразования функций:
- Рассмотрим -местную функцию . Тогда после преобразования у нас появится - местная функция минимальное при котором .
- Это правило называется правилом минимизации и часто для него используют обозначения
Определение: |
Частично рекурсивными называют функции, которые можно получить с помощью правил минимизации, подстановки и рекурсии из константной функции , функции и набора функций где . |
Заметим что частично рекурсивная функция может быть неопределена для некоторых значений аргументов.
Определение: |
Общерекурсивными называют всюду определенные частично рекурсивные функции. |
Любая примитивно рекурсивная функция является общерекурсивной. Поэтому и для частично рекурсивных функций можно считать что у них в качестве аргумента и результата могут быть списки из натуральных чисел.
Вычислимые и частично рекурсивные функции
Теорема: |
Множества вычислимых и частично рекурсивных функций совпадают. |
Доказательство: |
Программа вычисляющая частично рекурсивную функцию легко пишется на любом удобном для читателя языке программирования. Поэтому нам достаточно показать что любая вычислимая функция примитивно рекурсивная. Функции теоремы о примитивной рекурсивности вычислимых функций. Функция возвращает минимальное число шагов за которое программа вычисляющая нашу функцию попадет в состояние . Покажем что она частично рекурсивная. Т([L,R,S,C] = /mu t (p_2(N([L,R,S,C],t)) = Accepted), где p_i - взятие - того элемента списка. Операции сравнения здесь реализованы также как и примитивно рекурсивных функциях. В итоге F(args) = OUT(N(IN(args),T(IN(args))) - частично рекурсивная функция. , , , и как представляется состояние машины Тюринга описано в доказательстве |