En lógica matemática e informática , una función recursiva general , función recursiva parcial o función μ-recursiva es una función parcial de números naturales a números naturales que es "computable" en un sentido intuitivo, así como en uno formal . Si la función es total , también se la llama función recursiva total (a veces abreviada como función recursiva ). [ 1 ] En la teoría de la computabilidad , se demuestra que las funciones μ-recursivas son precisamente las funciones que pueden ser computadas por máquinas de Turing [ 2 ] [ 4 ] (este es uno de los teoremas que apoya la tesis de Church-Turing ). Las funciones μ-recursivas están estrechamente relacionadas con las funciones recursivas primitivas , y su definición inductiva (a continuación) se basa en la de las funciones recursivas primitivas. Sin embargo, no toda función recursiva total es una función recursiva primitiva ; el ejemplo más famoso es la función de Ackermann .
Otras clases equivalentes de funciones son las funciones del cálculo lambda y las funciones que pueden ser calculadas por algoritmos de Markov .
El subconjunto de todas las funciones recursivas totales con valores en {0,1} se conoce en la teoría de la complejidad computacional como la clase de complejidad R.
Definición
Las funciones μ-recursivas (o funciones recursivas generales ) son funciones parciales que toman tuplas finitas de números naturales y devuelven un único número natural. Son la clase más pequeña de funciones parciales que incluye las funciones iniciales y es cerrada bajo composición, recursión primitiva y el operador de minimización μ .
La clase más pequeña de funciones, que incluye las funciones iniciales y es cerrada bajo composición y recursión primitiva (es decir, sin minimización), es la clase de funciones recursivas primitivas . Si bien todas las funciones recursivas primitivas son totales, esto no se cumple para las funciones recursivas parciales; por ejemplo, la minimización de la función sucesora no está definida. Las funciones recursivas primitivas son un subconjunto de las funciones recursivas totales, que a su vez son un subconjunto de las funciones recursivas parciales. Por ejemplo, se puede demostrar que la función de Ackermann es totalmente recursiva y no primitiva.
Funciones primitivas o "básicas":
- Funciones constantes C k n : Para cada número natural n y cada k
- Las definiciones alternativas utilizan en su lugar una función cero como función primitiva que siempre devuelve cero, y construyen las funciones constantes a partir de la función cero, la función sucesora y el operador de composición .
- Función sucesora S:
- Función de proyección(también llamada función identidad ): Para todos los números naturalesde tal manera que:
Operadores (el dominio de una función definida por un operador es el conjunto de valores de los argumentos tales que cada aplicación de la función que deba realizarse durante el cálculo proporciona un resultado bien definido):
- operador de composición(también llamado operador de sustitución ): Dada una función m -ariay m funciones k -arias:
- Esto significa quese define solo siyestán todos definidos.
- Operador de recursión primitiva ρ : Dada la función k -ariay función k +2 -aria:
- Esto significa quese define solo siyestán definidos para todos
- Operador de minimización μ : Dada una función ( k +1)-aria, la función k -ariase define por:
Intuitivamente, la minimización busca —comenzando la búsqueda desde 0 y avanzando hacia arriba— el argumento más pequeño que hace que la función devuelva cero; si no existe tal argumento, o si se encuentra un argumento para el cual f no está definido, entonces la búsqueda nunca termina yno está definido para el argumento
Si bien algunos libros de texto utilizan el operador μ tal como se define aquí, [ 5 ] [ 6 ] otros [ 7 ] [ 8 ] exigen que el operador μ se aplique solo a funciones totales f . Aunque esto restringe el operador μ en comparación con la definición dada aquí, la clase de funciones μ-recursivas permanece igual, lo cual se deduce del teorema de la forma normal de Kleene (véase más adelante ). [ 5 ] [ 6 ] La única diferencia es que se vuelve indecidible si una definición de función específica define una función μ-recursiva, ya que es indecidible si una función computable (es decir, μ-recursiva) es total. [ 7 ]
La fuerte relación de igualdadse puede utilizar para comparar funciones μ-recursivas parciales. Esto se define para todas las funciones parciales f y g de modo que
Se cumple si y solo si, para cualquier elección de argumentos, ambas funciones están definidas y sus valores son iguales, o bien ambas funciones no están definidas.
Ejemplos
Ejemplos que no involucran el operador de minimización se pueden encontrar en Función recursiva primitiva#Ejemplos .
Los siguientes ejemplos tienen como único objetivo demostrar el uso del operador de minimización; también podrían definirse sin él, aunque de una manera más compleja, ya que todos son recursivos primitivos.
- La raíz cuadrada entera de x se puede definir como el menor z tal que. Utilizando el operador de minimización, una definición recursiva general esdonde Not , Gt y Mul son negación lógica , mayor que y multiplicación, [ 9 ] respectivamente. De hecho,es0 si, y solo si,se sostiene. Por lo tantoes el menor z tal quesostiene. El conjuntivo de negación Not es necesario ya que Gt codifica la verdad por1 , mientras que μ busca0 .
Los siguientes ejemplos definen funciones recursivas generales que no son recursivas primitivas; por lo tanto, no pueden evitar el uso del operador de minimización.
Función recursiva total
Una función recursiva general se denomina función recursiva total si está definida para cada entrada o, equivalentemente, si puede ser calculada por una máquina de Turing total . No existe una forma computacional de determinar si una función recursiva general dada es total; véase el problema de la parada .
Equivalencia con otros modelos de computabilidad
En la equivalencia de modelos de computabilidad , se establece un paralelismo entre las máquinas de Turing que no terminan para ciertas entradas y un resultado indefinido para esa entrada en la función recursiva parcial correspondiente. El operador de búsqueda no acotado no puede definirse mediante las reglas de la recursión primitiva, ya que estas no proporcionan un mecanismo para los "bucles infinitos" (valores indefinidos).
Teorema de la forma normal
Un teorema de forma normal debido a Kleene dice que para cada k existen funciones recursivas primitivas.yde tal manera que para cualquier función μ-recursivacon k variables libres existe un e tal que
- .
El número e se denomina índice o número de Gödel para la función f . [ 10 ] : 52–53 Una consecuencia de este resultado es que cualquier función μ-recursiva puede definirse utilizando una única instancia del operador μ aplicada a una función recursiva primitiva (total).
Minsky observa elLa definición anterior es, en esencia, el equivalente μ-recursivo de la máquina de Turing universal :
Construir U es escribir la definición de una función recursiva general U ( n , x ) que interpreta correctamente el número n y calcula la función apropiada de x . Construir U directamente implicaría esencialmente la misma cantidad de esfuerzo, y esencialmente las mismas ideas , que hemos invertido en la construcción de la máquina de Turing universal [ 11 ]
Simbolismo
En la literatura se utilizan varios simbolismos diferentes. Una ventaja de usar el simbolismo es que la derivación de una función mediante el "anidamiento" de operadores uno dentro del otro es más fácil de escribir de forma compacta. A continuación, la cadena de parámetrosse abrevia como:
- Función constante : Kleene utiliza "" y Boolos-Burgess-Jeffrey (2002) (BBJ) utilizan la abreviatura "":
- p.ej
- p.ej
- Función sucesora : Kleene utilizaypara "Sucesor". Como "sucesor" se considera primitivo, la mayoría de los textos usan el apóstrofo de la siguiente manera:
- , dónde
- ,
- , etc.
- Función identidad : Kleene (1952) utilizapara indicar la función identidad sobre las variables; BBJ utiliza la función identidadsobre las variablesa:
- p.ej
- Operador de composición (sustitución) : Kleene utiliza una negrita.(no confundir con supara "sucesor"!). El superíndicese refiere a lafunción, mientras que el subíndicese refiere a lavariable:
- Si se nos da
- entonces
- De manera similar, pero sin los subíndices ni los superíndices, BBJ escribe:
- Recursión primitiva : Kleene utiliza el símbolodonde n indica el número de variables; BBJ utiliza. Dado:
- paso base:
- Paso de inducción:
- Ejemplo: definición de recursión primitiva de
- paso base:U 1 1 (a)
- Paso de inducción:
Ejemplo : Kleene da un ejemplo de cómo realizar la derivación recursiva de(nótese la inversión de variables)y). Empieza confunciones iniciales
- paso base:
- Paso de inducción:
Él llega a:
Ejemplos
Véase también
Referencias
- ↑ "Funciones recursivas" . La Enciclopedia de Filosofía de Stanford . Laboratorio de Investigación en Metafísica, Universidad de Stanford. 2021.
- ↑ Enciclopedia de Filosofía de Stanford , Entrada Funciones recursivas , Sec. 1.7: "[La clase de funciones μ-recursivas] resulta coincidir con la clase de funciones computables por Turing introducida por Alan Turing, así como con la clase de funciones definibles por λ introducida por Alonzo Church. "
- ↑ Kleene, Stephen C. (1936). "λ-definibilidad y recursividad" . Duke Mathematical Journal . 2 (2): 340– 352. doi : 10.1215/s0012-7094-36-00227-2 .
- ↑ Turing, Alan Mathison (dic . 1937). "Computabilidad y λ-definibilidad". Journal of Symbolic Logic . 2 (4): 153– 163. doi : 10.2307/2268280 . JSTOR 2268280. S2CID 2317046 . Esquema de la demostración en la página 153:[ 3 ]
- 1 2 Enderton, HB, Introducción matemática a la lógica, Academic Press, 1972
- 1 2 Boolos, GS, Burgess, JP, Jeffrey, RC, Computabilidad y lógica, Cambridge University Press, 2007
- 1 2 Jones, ND, Computabilidad y complejidad: desde una perspectiva de programación, The MIT Press, Cambridge, Massachusetts, Londres, Inglaterra, 1997
- ↑ Kfoury, AJ, RN Moll y MA Arbib, Un enfoque de programación para la computabilidad, 2.ª ed., Springer-Verlag, Berlín, Heidelberg, Nueva York, 1982
- ↑ definido en Función recursiva primitiva#Juntores , Función recursiva primitiva#Predicado de igualdad y Función recursiva primitiva#Multiplicación
- ↑ Stephen Cole Kleene (enero de 1943). "Predicados y cuantificadores recursivos" (PDF) . Transactions of the American Mathematical Society . 53 (1): 41–73 . doi : 10.1090/S0002-9947-1943-0007371-8 .
- ↑ Minsky 1972 , págs. 189.
- Kleene, Stephen (1991) [1952]. Introducción a la metamatemática . Walters-Noordhoff & North-Holland. ISBN 0-7204-2103-9.
- Soare, R. (1999) [1987]. Conjuntos y grados recursivamente enumerables: Un estudio de funciones computables y conjuntos generados computacionalmente . Springer-Verlag. ISBN 9783540152996.
- Minsky, Marvin L. (1972) [1967]. Computación: Máquinas finitas e infinitas . Prentice-Hall. págs. 210–215 . ISBN 9780131654495.
- En las páginas 210-215, Minsky muestra cómo crear el operador μ utilizando el modelo de máquina de registros , demostrando así su equivalencia con las funciones recursivas generales.
- Boolos, George ; Burgess, John ; Jeffrey, Richard (2002). "6.2 Minimización" . Computabilidad y lógica (4.ª ed.). Cambridge University Press. págs. 70–71 . ISBN 9780521007580.
Enlaces externos
- Entrada de la Enciclopedia de Filosofía de Stanford
- Un compilador para transformar una función recursiva en una máquina de Turing equivalente.
- teoría de la computabilidad
- Teoría de la computación