La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Teoría de la Computación Funciones Recursivas

Presentaciones similares


Presentación del tema: "Teoría de la Computación Funciones Recursivas"— Transcripción de la presentación:

1 Teoría de la Computación Funciones Recursivas

2 El concepto de función recursiva fue introducido por Kleene el año 1936
Son una clase de funciones numérico-teóricas (f:m) que pueden ser evaluadas mediante un algoritmo Al igual que Turing, Kleene pretendía formalizar la noción intuitiva de procedimiento efectivo aplicada a cantidades numéricas Más tarde se descubrió que las funciones de Kleene y las máquinas de Turing eran formulaciones equivalentes un algoritmo puede ser realizado por una máquina de Turing ssi puede ser expresado como una función recursiva

3 Funciones recursivas Una máquina de Turing especifica los límites del poder de los procesos computacionales Tesis de Church-Turing El poder de las máquinas de Turing como aceptadores de lenguajes es equivalente al poder generativo de las gramáticas El poder computacional de las máquinas de Turing es equivalente al poder computacional de otros sistemas computacionales Funciones recursivas Sistemas de Post Lambda Calculus

4 Funciones recursivas Existen varios problemas que el programador puede resolver utilizando un lenguaje de programación determinado Tal vez este lenguaje ponga limitaciones a los problemas que el programador pueda resolver ¿Es posible superar esta limitaciones desarrollando lenguajes de programación más poderosos? ¿Existe algún punto en el cual la adición de características a un LP, o el cambio a otro LP, no incremente el poder de solución de problemas al programador?

5 Funciones recursivas Para responder las preguntas anteriores, identificaremos una clase de funciones que contiene la totalidad de las funciones computables aquellas que pueden calcularse mediante un algoritmo esta clase de funciones puede calcularse por medio de una máquina de Turing por medio de algoritmos sencillos escritos en algún LP determinado Conclusión los límites detectados por la máquina de Turing y la mayor parte de los LPs, son el reflejo de las limitaciones de los procesos computacionales, y no del diseño de la máquina o del LP que se use

6 Funciones recursivas Función computable
MT: enfoque operativo forma de calcularla Funciones recursivas: enfoque funcional, qué funciones, qué característica tienen Elementos básicos de una definición recursiva 1) una base (axiomas o condiciones límite) de funciones simples, que no cabe duda que son computables 2) una regla de construcción recursiva que nos dice como determinar otros valores de la función a partir de valores conocidos 3) una afirmación de que la función sólo toma aquellos valores que resultan por la aplicación de un número finito de veces de las reglas de construcción recursiva

7 Funciones recursivas Es decir, una definición recursiva especifica un procedimiento efectivo para evaluar una función, siempre que la función esté definida Si un sistema computacional, como un LP, o un computador, abarca todas estas funciones, entonces tiene todo el poder posible, sino es innecesariamente restrictivo Se puede considerar cualquier función computable como una función cuyas entradas sean tuplas de enteros no negativos

8 Funciones recursivas Supongamos una función f (n+1)-aria
el dominio de f puede ser dividido en pedazos tal que para x1,x2,...,xn tomemos valores fijos y x0 varíe sobre  fijando valores particulares n1,n2,...,nn para x1,x2,...,xn obtenemos una función f(x0,n1,n2,...,nn) En vez de trabajar sobre f(x0,x1,x2,...,xn) que es ((n+1)-aria, podemos trabajar sobre muchas funciones unarias f(x0,n1,n2,...,nn) por cada n-tupla Cuando hacemos esto estamos tomando a x1,x2,...,xn como parámetros

9 Funciones recursivas Ejemplo Entonces
f(x0,x1,x2)= x0+ (x1·x2) donde x1, x2 serán parámetros Entonces f(0,x1,x2)= 0+ (x1·x2) f(1,x1,x2)= 1+ (x1·x2) = f(0,x1,x2) + 1 ... f(n+1,x1,x2) = n+1+(x1·x2) = ((x1·x2) +n) +1 = f(n,x1,x2) +1

10 Funciones recursivas Recordemos la composición de funciones Ejemplo
Si f(x) y g(x) son funciones de una variable, podemos definir h(x) = f º g(x) donde f º g(x) = g(f(x)) Ejemplo f(x) = x y g(x) = x2, entonces h(x) = f º g(x) = g(f(x)) = g(x - 5) = (x - 5)2

11 Funciones recursivas Podemos extender la composición a varias variables supongamos que tenemos f0, f1, ..., fm funciones sobre n+1 variables y g es una función sobre m+1 variables entonces podemos definir h(x0,x1,...,xn) = g(f0(x0,x1,...,xn), f1(x0,x1,...,xn), ..., fm(x0,x1,...,xn)) Si f0, f1, ..., fm y g son computables, entonces h también es computable

12 Definición de funciones recursivas primitivas
Tomaremos como conjunto base 3 funciones que por definición son recursivas primitivas iniciales: 1) función nula (o función cero) N(x) = 0 , x   2) función sucesor S(x) = x + 1 3) función proyección (o identidad generalizada) Ii(x1,x2,...,xn) = Ii(X) = xi, 1  i  n ejemplos: I3(2, 3, 1, 4, 2) = 1, I1(6) = 6, I2(7, 9) = 9 la función I1 es llamada función identidad n n 5 1 2 1

13 Definición de funciones recursivas primitivas
Un caso especial es I0(x1,x2,...,xn) = () Estas funciones son totales, ya que X, N(X), S(X) e I(X) están perfectamente definidas, así como lo está su valor asociado Además estas 3 funciones son computables Veremos a continuación las reglas para obtener las restantes funciones primitivas recursivas

14 Reglas inductivas Composición de funciones
supongamos que las funciones g1, g2, ..., gm tal que el dominio de gi es n , para 1  i  m y la función h con dominio m son recursivas primitivas tenemos m funciones recursivas primitivas de n argumentos y una función recursiva primitiva de m argumentos se define la función f de n argumentos como (1) f(x1,x2,...,xn) = h(g1(x1,x2,...,xn), ..., gm (x1,x2,...,xn)) La función f(X) así obtenida es una función recursiva primitiva ya que las funciones g1, g2, ..., gm y h son funciones totales, f es una función total con dominio n

15 Reglas inductivas También se dice que f es la composición de los gi ,con 1  i  m, mediante h A veces la composición se denomina substitución y a la expresión (1), esquema de substitución ejemplo g1(x, y) = x + y g2(x, y) = x - y g3(x, y) = x · y h(g1, g2, g3) = 2 · g1 + g2 + g3 entonces f(x, y) = 2(x+ y) + (x - y) + (x · y)

16 Reglas inductivas Recursión
supongamos que g y h son funciones recursivas primitivas (1) f(0, x) = g(x) x=(x1,x2,...,xn) (2) f(y’, x) = h(x, y, f(x, y)) y’ sucesor de y define una función recursiva primitiva La ecuación (1) es la condición límite de la definición y la ecuación (2) es la ecuación de recursión dado que g y h son totales, f también lo es

17 Reglas inductivas Ya que f(0, x) = g(x) está definida, una vez que hemos calculado f(y,x), el valor de f(y’,x) se obtiene evaluando la función total h La variable y recibe el nombre de variable de recursión las variables x1,x2,...,xn se denominan parámetros al par de ecuaciones (1) y (2) se denomina esquema de recursión

18 Reglas inductivas Caso particular: operación recursiva sin parámetros
resulta de hacer n = 0 las ecuaciones se convierten en f(0) = K f(y´) = h(y, f(y)) siendo K una constante natural

19 Reglas inductivas Ejemplo por recursión primitiva
g(x1,x2) = x1·x2 h(x1,x2, y, z)=y+z+x1+x2 z=f(y,x1,x2) por recursión primitiva f(0,x1,x2)= g(x1,x2) = x1·x2 f(y’,x1,x2)= h(x1,x2, y, f(y,x1,x2)) =y+f(y,x1,x2) +x1+x2 Por ejemplo calcular f(3,5,2) f(3,5,2)=2+f(2,5,2)+5+2 = 9+ f(2,5,2) f(2,5,2)=1+f(1,5,2)+5+2 = 8+ f(1,5,2) f(0,5,2)=0+f(2,5,2)+5+2 = 7+ f(0,5,2) f(0,5,2)=5 ·2 =10  f(3,5,2) = 34

20 Definición inductiva de funciones recursivas primitivas
a) Las funciones bases N(x), S(x) e Ii(x1,x2,...,xn) son funciones recursivas primitivas b) Las funciones obtenidas a partir de funciones recursivas primitivas mediante las reglas de composición y recursión son funciones recursivas primitivas c) Sólo son funciones recursivas primitivas las obtenidas mediante a) y b). n

21 Algunas funciones recursivas primitivas importantes
1) La función constante Ck(x) = k x es recursiva primitiva para cualquier k Ck= k = S...S(N(x)) = Sk(N(x)) donde Sk denota la k-ésima composición de sí misma k veces

22 Algunas funciones recursivas primitivas importantes
2) La función predecesor P(y’) = y P(0) = 0 Aplicando la regla de recursión sin parámetros tenemos: P(y’) = h(y, P(y)) = I1(y, P(y)) 2

23 Algunas funciones recursivas primitivas importantes
3) La función suma Sea f(x,y) = x+y, la adición normal en los naturales Informalmente f(0,x) = x  x = x f(y’,x) =f(y,x)’  y’ + x = (y +x)’ Formalmente, aplicando recursión con el parámetro x, tenemos f(0,x) = I1(x) f(y’,x) = h(x,y,f(y,x)) = S(I3(x,y,f(y,x))) 1 3

24 Algunas funciones recursivas primitivas importantes
Otra forma de verlo h(0,x) = I1(x) h(y+1,x) = S(I3(y,x, h(y,x)) = S(h(y,x)) Ejemplo h(2,3) = S(h(1,3)) = S(S(h(0,3))) = S(S(3)) = 5 4) La función producto ¿...? 1 3

25 Def.: La clase C de funciones recursivas primitivas es la clase más pequeña de funciones sobre los naturales tales que: 1.- Las funciones base están en C 2.- C es cerrada bajo las operaciones de composición y recursión Esta definición proporciona la base para probar que una función f particular es f.r.p. Construimos una secuencia de funciones f1, f2, ..., fn tal que fn= f y cada fi o bien es una función base, o se obtiene a partir de algún subconjunto de las funciones f1, f2, ..., fn por composición o recursión

26 Es fácil probar que f es computable
aceptando el supuesto que las funciones base son efectivamente computables suponemos, por inducción, que se han construido algoritmos par evaluar f1, f2, ..., fi-1 aplicando las reglas de composición y recursión construimos un algoritmo para evaluar fi, utilizando los algoritmos para evaluar las f1, f2, ..., fi-1 como subrutinas La recursividad primitiva es una condición suficiente pero no necesaria para que una función total sea computable

27 Esto es, existen funciones totales computables que no son recursivas primitivas
Ejemplo: función de Ackermann A: 2   A(0, y) = y A(x+1, 0) = A(x, 1) A(x+1, y+1) = A(x, A(x+1, y)) La clase de funciones totales computables se conocen como funciones -recursivas Funciones computables Funciones -recursivas Funciones recursivas primitivas Funciones base

28 Funciones totales, regulares y parciales
Definición: Una función (n+1)-aria f, que está definida para todo (x0, ..., xn)  (n+1) se llama función total Si existe una n-tupla (x0, ..., xn)  (n+1) para el cual f no está definida, entonces f es una función parcial ejemplo: div(x,y) = la parte entera de x/y, con x,y , y  0. Es una función parcial de 2 Si f es una función parcial en el dominio k , sea D el dominio de f, entonces D  k Observe que D no necesita ser subconjunto propio de k

29 Funciones totales, regulares y parciales
Definición: Si f es una función (n+1)-aria tal que para cada n-tupla (x1, ..., xn)  n existe al menos un n  tal que f(n, x1, ..., xn) = 0, se dice que f es una función regular

30 Minimalización Ahora nos ampliaremos para incluir funciones parciales computables introduciremos el operador  llamado operador de minimalización Permite construir una función f: n   a partir de otra función g: (n+1)   Esto se hace encontrando el menor y  tal que g(X,y)=0 y g(X,z) esté definida para todos los enteros no negativos z menores a y

31 Minimalización Sea g: (n+1)   una función total, no necesariamente recursiva primitiva Definimos la función f: n   como f(X) = y[g(X, y) = 0] Se lee f(X) es igual al menor y para el cual g(X, y) es cero y g(X, z) está definida para todos los enteros no negativos z menores que y Esto significa que la función f(X) = y con X = (x1, ..., xn) e y el menor entero y  0 para el cual g (x1, ..., xn, y) = 0 Entonces decimos que f se ha obtenido de g por minimalización

32 Minimalización La minimalización puede producir funciones que no están definidas para ciertas entradas (funciones parciales) Ejemplos f(x)=y[+(x,y)=0] está definida para f(0) con 0, pero y tal que x+y=0 div(x,y)= t[((x+1)(mult(t,y)+y))=0]

33 Minimalización Si la función parcial g es computable, entonces se puede calcular f(X)=y[g(X,y)=0] calculando los valores de g(X,0), g(X,1), g(X,2), etc. hasta encontrar un y para el cual g(X,y)=0, en cuyo caso f(X)=y o hasta llegar a un z para el cual g(X,z)= no definido, en este caso f(X) no está definida para X Luego el proceso de minimalización aplicado a una función parcial computable (g) produce una función parcial computable (f) Las funciones parciales computables se llaman funciones recursivas parciales

34 Minimalización Una función f es definida como recursiva parcial si:
es una función base (función cero, sucesor o proyección) es definida por composición de funciones recursivas parciales es definida por el esquema de recursión a partir de funciones recursivas parciales es definida utilizando la operación de minimalización sobre una función recursiva parcial Así como la Tesis de Turing propone que las MTs tienen el poder computacional de cualquier sistema computacional, la tesis de Church plantea que la clase de funciones recursivas parciales contiene todas las funciones parciales computables

35 Equivalencia entre MTs y funciones recursivas parciales
Si una función parcial puede calcularse con una máquina de Turing, decimos que es computable por una MT Para mostrar esta equivalencia es necesario demostrar que i) todas las funciones recursivas parciales son computables por una máquina de Turing Teorema: Toda función recursiva parcial es computable por una máquina de Turing

36 Equivalencia entre MTs y funciones recursivas parciales
ii) el poder computacional de una MT está restringido al cálculo de funciones recursivas parciales Teorema: Todo proceso computacional realizado por una máquina de Turing es en realidad el cálculo de una función recursiva parcial

37 Funciones recursivas Existen varios problemas que el programador puede resolver utilizando un lenguaje de programación determinado Tal vez este lenguaje ponga limitaciones a los problemas que el programador pueda resolver ¿Es posible superar esta limitaciones desarrollando lenguajes de programación más poderosos? ¿Existe algún punto en el cual la adición de características a un LP, o el cambio a otro LP, no incremente el poder de solución de problemas al programador?

38 Poder de los Lenguajes de Programación
Nos interesa saber qué poder computacional tiene un LP Lo esencial que un LP debe tener para calcular cualquier función recursiva parcial, de acuerdo con la tesis de Church-Turing, es proporcionar la representación del tipo entero no negativo operación para incrementar un valor operación para decrementar un valor ejecutar un ciclo while Todo lo demás es ayuda al programador

39 Conjuntos Recursivamente Enumerables
Un conjunto S (de números naturales) es recursivo si existe una función recursiva f tal que f(n) = si n  S f(n) = si n  S Un conjunto de números naturales es recursivo ssi es Turing-decidible Ejemplos cualquier conjunto de un elemento, cualquier conjunto finito, el conjunto vacío , { kn  n   } para un k fijo el conjunto de los primos

40 Conjuntos Recursivamente Enumerables
Un conjunto S de números naturales que es la imagen de una función unaria parcial recursiva es un conjunto recursivamente enumerable Es decir, S es r.e. si existe una f.r.p. f tal que f( )=S f recibe el nombre de función que genera a S o función que enumera a S Ejemplos el conjunto de los enteros positivos, el conjunto {2}, cualquier conjunto finito

41 Conjuntos Recursivamente Enumerables
Generalmente se consideran conjuntos de números que representan, por medio de la numeración de Gödel, conjuntos de objetos tales como máquinas de Turing, funciones recursivas parciales, fórmulas, etc. Una vez que se ha mostrado que el conjunto de objetos a ser considerado puede ser sometido al proceso de numeración de Gödel, y que el conjunto de números es recursivamente enumerable, se puede decir que el conjunto de objetos es recursivamente enumerable

42 Conjuntos Recursivamente Enumerables
Teorema : Un conjunto S es recursivo ssi S y su complemento -S son recursivamente enumerables Teorema : Si S es un conjunto recursivamente enumerable, entonces existe una función recursiva que lo genera Teorema : Un conjunto S es recursivamente enumerable ssi es el dominio de una función recursiva parcial Teorema : Un conjunto S   es recursivamente enumerable ssi es Turing aceptable


Descargar ppt "Teoría de la Computación Funciones Recursivas"

Presentaciones similares


Anuncios Google