stringtranslate.com

Función recursiva general

En lógica matemática e informática , una función recursiva general , una función recursiva parcial o una 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 formal . Si la función es total, también se le llama función recursiva total (a veces abreviada como función recursiva ). [1] En la teoría de la computabilidad , se muestra que las funciones μ-recursivas son precisamente las funciones que pueden ser calculadas por las máquinas de Turing [2] [4] (este es uno de los teoremas que sustenta 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 todas las funciones recursivas totales son funciones recursivas primitivas; el ejemplo más famoso es la función de Ackermann .

Otras clases de funciones equivalentes son las funciones del cálculo lambda y las funciones que pueden calcularse mediante 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 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 está cerrada bajo composición, recursividad primitiva y el operador de minimización μ .

La clase más pequeña de funciones que incluye las funciones iniciales y cerradas bajo composición y recursividad primitiva (es decir, sin minimización) es la clase de funciones recursivas primitivas . Si bien todas las funciones recursivas primitivas son totales, esto no es cierto 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 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":

  1. Funciones constantes Ckn
    : Para cada número natural n y cada k
    Las definiciones alternativas utilizan en cambio 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.
  2. Función sucesora S:
  3. Función de proyección (también llamada función de identidad ): para todos los números naturales tales que :

Operadores (el dominio de una función definida por un operador es el conjunto de los valores de los argumentos de modo que cada aplicación de función que debe realizarse durante el cálculo proporcione un resultado bien definido):

  1. Operador de composición (también llamado operador de sustitución ): Dadas una función m-aria y m funciones k-arias :
    Esto significa que está definido sólo si y están todos definidos.
  2. Operador de recursión primitiva ρ : Dada la función k -aria y la función k +2 -aria :
    Esto significa que se define sólo si y se definen para todos
  3. Operador de minimización μ : Dada una función aria ( k +1) , la función aria k se 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 uno encuentra un argumento para el cual f no está definido, entonces la búsqueda nunca termina y no está definida para el argumento.

Mientras que algunos libros de texto utilizan el operador μ como se define aquí, [5] [6] otros como [7] [8] exigen que el operador μ se aplique a funciones totales f únicamente. Aunque esto restringe el operador μ en comparación con la definición dada aquí, la clase de funciones recursivas μ sigue siendo la misma, como se desprende del Teorema de la forma normal de Kleene (ver más abajo). [5] [6] La única diferencia es que resulta 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]

El operador de igualdad fuerte se 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 sólo si para cualquier elección de argumentos ambas funciones están definidas y sus valores son iguales o ambas funciones no están definidas.

Ejemplos

Se pueden encontrar ejemplos que no involucran al operador de minimización en Función recursiva primitiva#Ejemplos .

Los siguientes ejemplos pretenden simplemente demostrar el uso del operador de minimización; también podrían definirse sin él, aunque de una manera más complicada, ya que todos son recursivos primitivos.

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 llama función recursiva total si está definida para cada entrada o, de manera equivalente, si puede calcularse mediante una máquina de Turing total . No hay forma de saber computablemente si una función recursiva general dada es total; consulte Problema de detención .

Equivalencia con otros modelos de computabilidad

En la equivalencia de modelos de computabilidad , se establece un paralelo 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 ilimitada no se puede definir mediante las reglas de recursividad primitiva, ya que no proporcionan un mecanismo para "bucles infinitos" (valores indefinidos).

Teorema de la forma normal

Un teorema de forma normal debido a Kleene dice que para cada k hay funciones recursivas primitivas y que para cualquier función μ-recursiva con k variables libres hay una e tal que

.

El número e se llama í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 se puede definir utilizando una única instancia del operador μ aplicado a una función recursiva primitiva (total).

Minsky observa que lo definido anteriormente es, en esencia, el equivalente μ-recursivo de la máquina universal de Turing :

Construir U es escribir la definición de una función recursiva general U(n, x) que interprete correctamente el número n y calcule 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 construir la máquina universal de Turing [11].

Simbolismo

En la literatura se utilizan varios simbolismos diferentes. Una ventaja de utilizar el simbolismo es que la derivación de una función "anidando" los operadores uno dentro del otro es más fácil de escribir en forma compacta. A continuación, la cadena de parámetros x 1 , ..., x n se abrevia como x :

por ejemplo C7
13
(r, s, t, u, v, w, x) = 13
por ejemplo, constante 13 (r, s, t, u, v, w, x) = 13
S(a) = a +1 = def a', donde 1 = def 0', 2 = def 0 ' ', etc.
Ud.n
yo
( x ) = identificaciónn
yo
( x ) = x yo
por ejemplo, U7
3
= identificación7
3
(r, s, t, u, v, w, x) = t
Si nos dan h( x )= g( f 1 ( x ), ... , f m ( x ) )
h( x ) = Sm
(g, f 1 , ... , f m )
De manera similar, pero sin los subíndices y superíndices, BBJ escribe:
h( x' )= Cn[g, f 1 ,..., f m ]( x )
  • paso base: h( 0, x )= f( x ), y
  • paso de inducción: h( y+1, x ) = g( y, h(y, x ), x )
Ejemplo: definición de recursividad primitiva de a + b:
  • paso base: f( 0, a ) = a = U1
    1
    (a)
  • paso de inducción: f( b' , a ) = ( f ( b, a ) )' = g( b, f( b, a), a ) = g( b, c, a ) = c' = S(U3
    2
    (b,c,a))
R2 { U1
1
(a), S [(U3
2
( b, c, a ) ] }
Pr{U1
1
(a), S[(U3
2
( b, c, a ) ] }

Ejemplo : Kleene da un ejemplo de cómo realizar la derivación recursiva de f(b, a) = b + a (observe la inversión de las variables a y b). Comienza con 3 funciones iniciales.

  1. S(a) = a'
  2. Ud.1
    1
    (un) = un
  3. Ud.3
    2
    ( b, c, a ) = c
  4. gramo(b, c, a) = S(U3
    2
    ( b, c, a )) = c'
  5. paso base: h( 0, a ) = U1
    1
    (a)
paso de inducción: h( b', a ) = g( b, h( b, a ), a )

Llega a:

a+b = R 2 [ U1
1
, S3
1
(S, U3
2
) ]

Ejemplos

Ver también

Referencias

  1. ^ "Funciones recursivas". La Enciclopedia de Filosofía de Stanford . Laboratorio de Investigación en Metafísica, Universidad de Stanford. 2021.
  2. ^ Enciclopedia de Filosofía de Stanford , Funciones recursivas de entrada, Sección 1.7: "[La clase de funciones recursivas μ] resulta coincidir con la clase de funciones computables de Turing introducidas por Alan Turing, así como con la clase de λ -funciones definibles introducidas por Alonzo Church " .
  3. ^ Kleene, Stephen C. (1936). "λ-definibilidad y recursividad". Revista de Matemáticas de Duke . 2 (2): 340–352. doi :10.1215/s0012-7094-36-00227-2.
  4. ^ Turing, Alan Mathison (diciembre de 1937). "Computabilidad y λ-Definibilidad". Revista de Lógica Simbólica . 2 (4): 153–163. doi :10.2307/2268280. JSTOR  2268280. S2CID  2317046.Esquema de prueba en la página 153: [3]
  5. ^ ab Enderton, HB, Introducción matemática a la lógica, Academic Press, 1972
  6. ^ ab Boolos, GS, Burgess, JP, Jeffrey, RC, Computabilidad y lógica, Cambridge University Press, 2007
  7. ^ ab Jones, ND, Computabilidad y complejidad: desde una perspectiva de programación, The MIT Press, Cambridge, Massachusetts, Londres, Inglaterra, 1997
  8. ^ 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
  9. ^ definido en Función recursiva primitiva#Junctors , Función recursiva primitiva#Predicado de igualdad y Función recursiva primitiva#Multiplicación
  10. ^ Stephen Cole Kleene (enero de 1943). "Predicados y cuantificadores recursivos" (PDF) . Transacciones de la Sociedad Matemática Estadounidense . 53 (1): 41–73. doi : 10.1090/S0002-9947-1943-0007371-8 .
  11. ^ Minsky 1972, págs.189.
En las páginas 210-215, Minsky muestra cómo crear el operador μ utilizando el modelo de máquina de registro , demostrando así su equivalencia con las funciones recursivas generales.

enlaces externos