Articulo de referencia

Función recursiva general

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 natura...

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":

  1. Funciones constantes C k n : Para cada número natural n y cada k
    donortek(incógnita1,,incógnitak) =dmiF norte{\displaystyle C_{n}^{k}(x_{1},\ldots ,x_{k})\ {\stackrel {\mathrm {def} }{=}}\ n}
    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 .
  2. Función sucesora S:
    S(incógnita) =dmiF incógnita+1{\displaystyle S(x)\ {\stackrel {\mathrm {def} }{=}}\ x+1\,}
  3. Función de proyecciónPAGik{\displaystyle P_{i}^{k}}(también llamada función identidad ): Para todos los números naturalesi,k{\displaystyle i,k}de tal manera que1ik{\displaystyle 1\leq i\leq k}:
    PAGik(incógnita1,,incógnitak) =dmiF incógnitai.{\displaystyle P_{i}^{k}(x_{1},\ldots ,x_{k})\ {\stackrel {\mathrm {def} }{=}}\ x_{i}\,.}

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):

  1. operador de composición{\displaystyle \circ \,}(también llamado operador de sustitución ): Dada una función m -ariah(incógnita1,,incógnitametro){\displaystyle h(x_{1},\ldots ,x_{m})\,}y m funciones k -ariasgramo1(incógnita1,,incógnitak),,gramometro(incógnita1,,incógnitak){\displaystyle g_{1}(x_{1},\ldots ,x_{k}),\ldots ,g_{m}(x_{1},\ldots ,x_{k})}:
    h(gramo1,,gramometro) =dmiF F,dóndeF(incógnita1,,incógnitak)=h(gramo1(incógnita1,,incógnitak),,gramometro(incógnita1,,incógnitak)).{\displaystyle h\circ (g_{1},\ldots ,g_{m})\ {\stackrel {\mathrm {def} }{=}}\ f,\quad {\text{where}}\quad f(x_{1},\ldots ,x_{k})=h(g_{1}(x_{1},\ldots ,x_{k}),\ldots ,g_{m}(x_{1},\ldots ,x_{k})).}
    Esto significa queF(incógnita1,,incógnitak){\displaystyle f(x_{1},\ldots ,x_{k})}se define solo sigramo1(incógnita1,,incógnitak),,gramometro(incógnita1,,incógnitak),{\displaystyle g_{1}(x_{1},\ldots ,x_{k}),\ldots ,g_{m}(x_{1},\ldots ,x_{k}),}yh(gramo1(incógnita1,,incógnitak),,gramometro(incógnita1,,incógnitak)){\displaystyle h(g_{1}(x_{1},\ldots ,x_{k}),\ldots ,g_{m}(x_{1},\ldots ,x_{k}))}están todos definidos.
  2. Operador de recursión primitiva ρ : Dada la función k -ariagramo(incógnita1,,incógnitak){\displaystyle g(x_{1},\ldots ,x_{k})\,}y función k +2 -ariah(y,z,incógnita1,,incógnitak){\displaystyle h(y,z,x_{1},\ldots ,x_{k})\,}:
    ρ(gramo,h) =dmiF Fdonde el k+1función -aria F se define porF(0,incógnita1,,incógnitak)=gramo(incógnita1,,incógnitak)F(S(y),incógnita1,,incógnitak)=h(y,F(y,incógnita1,,incógnitak),incógnita1,,incógnitak).{\displaystyle {\begin{aligned}\rho (g,h)&\ {\stackrel {\mathrm {def} }{=}}\ f\quad {\text{where the }}k+1{\text{-ary function }}f{\text{ is defined by}}\\f(0,x_{1},\ldots ,x_{k})&=g(x_{1},\ldots ,x_{k})\\f(S(y),x_{1},\ldots ,x_{k})&=h(y,f(y,x_{1},\ldots ,x_{k}),x_{1},\ldots ,x_{k})\,.\end{aligned}}}
    Esto significa queF(y,incógnita1,,incógnitak){\displaystyle f(y,x_{1},\ldots ,x_{k})}se define solo sigramo(incógnita1,,incógnitak){\displaystyle g(x_{1},\ldots ,x_{k})}yh(z,F(z,incógnita1,,incógnitak),incógnita1,,incógnitak){\displaystyle h(z,f(z,x_{1},\ldots ,x_{k}),x_{1},\ldots ,x_{k})}están definidos para todosz<y.{\displaystyle z<y.}
  3. Operador de minimización μ : Dada una función ( k +1)-ariaF(y,incógnita1,,incógnitak){\displaystyle f(y,x_{1},\ldots ,x_{k})\,}, la función k -ariaμ(F){\displaystyle \mu (f)}se define por:
    μ(F)(incógnita1,,incógnitak)=zdmiF F(i,incógnita1,,incógnitak)>0parai=0,,z1yF(z,incógnita1,,incógnitak)=0{\displaystyle {\begin{aligned}\mu (f)(x_{1},\ldots ,x_{k})=z{\stackrel {\mathrm {def} }{\iff }}\ f(i,x_{1},\ldots ,x_{k})&>0\quad {\text{for}}\quad i=0,\ldots ,z-1\quad {\text{and}}\\f(z,x_{1},\ldots ,x_{k})&=0\quad \end{aligned}}}

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 yμ(F){\displaystyle \mu (f)}no está definido para el argumento(incógnita1,,incógnitak).{\displaystyle (x_{1},\ldots ,x_{k}).}

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 igualdad{\displaystyle \simeq }se puede utilizar para comparar funciones μ-recursivas parciales. Esto se define para todas las funciones parciales f y g de modo que

F(incógnita1,,incógnitak)gramo(incógnita1,,incógnital){\displaystyle f(x_{1},\ldots ,x_{k})\simeq g(x_{1},\ldots ,x_{l})}

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(z+1)2>incógnita{\displaystyle (z+1)^{2}>x}. Utilizando el operador de minimización, una definición recursiva general esIsqrt=μ(NoGt(Mul(SPAG12,SPAG12),PAG22)){\displaystyle \operatorname {Isqrt} =\mu (\operatorname {Not} \circ \operatorname {Gt} \circ (\operatorname {Mul} \circ (S\circ P_{1}^{2},S\circ P_{1}^{2}),P_{2}^{2}))}donde Not , Gt y Mul son negación lógica , mayor que y multiplicación, [ 9 ] respectivamente. De hecho,(NoGt(Mul(SPAG12,SPAG12),PAG22))(z,incógnita)=(¬S(z)S(z)>incógnita){\displaystyle (\operatorname {Not} \circ \operatorname {Gt} \circ (\operatorname {Mul} \circ (S\circ P_{1}^{2},S\circ P_{1}^{2}),P_{2}^{2}))\;(z,x)=(\lnot S(z)*S(z)>x)}es0 si, y solo si,S(z)S(z)>incógnita{\displaystyle S(z)*S(z)>x}se sostiene. Por lo tantoIsqrt(incógnita){\displaystyle \operatorname {Isqrt} (x)}es el menor z tal queS(z)S(z)>incógnita{\displaystyle S(z)*S(z)>x}sostiene. 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.U(y){\displaystyle U(y)\!}yT(y,mi,incógnita1,,incógnitak){\displaystyle T(y,e,x_{1},\ldots ,x_{k})\!}de tal manera que para cualquier función μ-recursivaF(incógnita1,,incógnitak){\displaystyle f(x_{1},\ldots ,x_{k})\!}con k variables libres existe un e tal que

F(incógnita1,,incógnitak)U(μ(T)(mi,incógnita1,,incógnitak)){\displaystyle f(x_{1},\ldots ,x_{k})\simeq U(\mu (T)(e,x_{1},\ldots ,x_{k}))}.

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 elU{\displaystyle U}La 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ámetrosincógnita1,incógnita2,,incógnitanorte{\displaystyle x_{1},x_{2},\ldots ,x_{n}}se abrevia comoincógnita{\displaystyle x}:

  • Función constante : Kleene utiliza "doqnorte(incógnita)=q{\displaystyle C_{q}^{n}(x)=q}" y Boolos-Burgess-Jeffrey (2002) (BBJ) utilizan la abreviatura "doonortestnorte(incógnita)=norte{\displaystyle \mathrm {const} ^{n}(x)=n}":
p.ejdo137(r,s,t,,v,w,incógnita)=13{\displaystyle C_{13}^{7}(r,s,t,u,v,w,x)=13}
p.ejdoonortest13(r,s,t,,v,w,incógnita)=13{\displaystyle \mathrm {const} ^{13}(r,s,t,u,v,w,x)=13}
  • Función sucesora : Kleene utilizaincógnita{\displaystyle x'}yS{\displaystyle S}para "Sucesor". Como "sucesor" se considera primitivo, la mayoría de los textos usan el apóstrofo de la siguiente manera:
S(a)=a+1;=dmiF;a{\displaystyle S(a)=a+1;{\overset {\mathrm {def} }{=}};a'}, dónde
1=dmiF0{\displaystyle 1{\overset {\mathrm {def} }{=}}0'},
2=dmiF0{\displaystyle 2{\overset {\mathrm {def} }{=}}0''}, etc.
  • Función identidad : Kleene (1952) utilizaUinorte{\displaystyle U_{i}^{n}}para indicar la función identidad sobre las variablesincógnitai{\displaystyle x_{i}}; BBJ utiliza la función identidadidinorte{\displaystyle \mathrm {id} _{i}^{n}}sobre las variablesincógnita1{\displaystyle x_{1}}aincógnitanorte{\displaystyle x_{n}}:
Uinorte(incógnita)=idinorte(incógnita)=incógnitai{\displaystyle U_{i}^{n}(x)=\mathrm {id} _{i}^{n}(x)=x_{i}}
p.ejU37(r,s,t,,v,w,incógnita)=id37(r,s,t,,v,w,incógnita)=t{\displaystyle U_{3}^{7}(r,s,t,u,v,w,x)=\mathrm {id} _{3}^{7}(r,s,t,u,v,w,x)=t}
  • Operador de composición (sustitución) : Kleene utiliza una negrita.Smetronorte{\displaystyle \mathbf {S} _{m}^{n}}(no confundir con suS{\displaystyle S}para "sucesor"!). El superíndicemetro{\displaystyle m}se refiere a lametroth{\displaystyle m^{th}}funciónFmetro{\displaystyle f_{m}}, mientras que el subíndicenorte{\displaystyle n}se refiere a lanorteth{\displaystyle n^{th}}variableincógnitanorte{\displaystyle x_{n}}:
Si se nos da
h(incógnita)=gramo(F1(incógnita),,Fmetro(incógnita)){\displaystyle h(x)=g(f_{1}(x),\ldots ,f_{m}(x))}
entonces
h(incógnita)=Smetronorte(gramo,F1,,Fmetro){\displaystyle h(x)=\mathbf {S} _{m}^{n}(g,f_{1},\ldots ,f_{m})}
De manera similar, pero sin los subíndices ni los superíndices, BBJ escribe:
h(incógnita)=dogramo,F1,,Fmetro{\displaystyle h(x')=Cg,f_{1},\ldots ,f_{m}}
  • Recursión primitiva : Kleene utiliza el símboloRnorte(paso base,paso de inducción){\displaystyle R^{n}({\text{base step}},{\text{induction step}})}donde n indica el número de variables; BBJ utilizaPr(paso base,paso de inducción)(incógnita){\displaystyle \Pr({\text{base step}},{\text{induction step}})(x)}. Dado:
  • paso base:h(0,incógnita)=F(incógnita){\displaystyle h(0,x)=f(x)}
  • Paso de inducción:h(y+1,incógnita)=gramo(y,h(y,incógnita),incógnita){\displaystyle h(y+1,x)=g(y,h(y,x),x)}
Ejemplo: definición de recursión primitiva dea+b{\displaystyle a+b}
  • paso base:F(0,a)=a=U11(a){\displaystyle f(0,a)=a=U_{1}^{1}(a)}U 1 1 (a)
  • Paso de inducción:F(b,a)=(F(b,a))=gramo(b,F(b,a),a)=gramo(b,do,a)=do=S(U23(b,do,a)){\displaystyle f(b',a)=(f(b,a))'=g(b,f(b,a),a)=g(b,c,a)=c'=S(U_{2}^{3}(b,c,a))}
R2(U11(a),;S(U23(b,do,a))){\displaystyle R^{2}\left(U_{1}^{1}(a),;S(U_{2}^{3}(b,c,a))\right)}
Pr(U11(a),;S(U23(b,do,a))){\displaystyle \Pr \left(U_{1}^{1}(a),;S(U_{2}^{3}(b,c,a))\right)}

Ejemplo : Kleene da un ejemplo de cómo realizar la derivación recursiva deF(b,a)=b+a{\displaystyle f(b,a)=b+a}(nótese la inversión de variables)a{\displaystyle a}yb{\displaystyle b}). Empieza con3{\displaystyle 3}funciones iniciales

  1. S(a)=a{\displaystyle S(a)=a'}
  2. U11(a)=a{\displaystyle U_{1}^{1}(a)=a}
  3. U23(b,do,a)=do{\displaystyle U_{2}^{3}(b,c,a)=c}
  4. gramo(b,do,a)=S(U23(b,do,a))=do{\displaystyle g(b,c,a)=S(U_{2}^{3}(b,c,a))=c'}
  5. paso base:h(0,a)=U11(a){\displaystyle h(0,a)=U_{1}^{1}(a)}
Paso de inducción:h(b,a)=gramo(b,h(b,a),a){\displaystyle h(b',a)=g(b,h(b,a),a)}

Él llega a:

a+b=R2(U11,;S13(S,U23)){\displaystyle a+b=R^{2}\left(U_{1}^{1},;S_{1}^{3}(S,U_{2}^{3})\right)}

Ejemplos

Véase 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 , 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. "
  3. Kleene, Stephen C. (1936). "λ-definibilidad y recursividad" . Duke Mathematical Journal . 2 (2): 340– 352. doi : 10.1215/s0012-7094-36-00227-2 .
  4. 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:λ-definible{\displaystyle \lambda {\mbox{-definable}}}triv{\displaystyle {\stackrel {triv}{\implies }}}λ-K-definible{\displaystyle \lambda {\mbox{-}}K{\mbox{-definable}}}160{\displaystyle {\stackrel {160}{\implies }}}Computable por Turing{\displaystyle {\mbox{Turing computable}}}161{\displaystyle {\stackrel {161}{\implies }}}μ-recursivo{\displaystyle \mu {\mbox{-recursive}}}Klmiminortemi{\displaystyle {\stackrel {Kleene}{\implies }}}[ 3 ]λ-definible{\displaystyle \lambda {\mbox{-definable}}}
  5. 1 2 Enderton, HB, Introducción matemática a la lógica, Academic Press, 1972
  6. 1 2 Boolos, GS, Burgess, JP, Jeffrey, RC, Computabilidad y lógica, Cambridge University Press, 2007
  7. 1 2 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#Juntores , 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) . Transactions of the American Mathematical Society . 53 (1): 41–73 . doi : 10.1090/S0002-9947-1943-0007371-8 .
  11. 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.
  • Entrada de la Enciclopedia de Filosofía de Stanford
  • Un compilador para transformar una función recursiva en una máquina de Turing equivalente.