Funciones recursivas Roberto Moriyón.

Slides:



Advertisements
Presentaciones similares
Capítulo 2 Algoritmos.
Advertisements

Problemas Teóricos Resueltos Sobre Límites de Funciones
Funciones En nuestra vida cotidiana tenemos experiencia con relación o correspondencias de magnitudes . Ejemplos : En un almacén , a cada producto le corresponde.
La regla de L´Hôpital Aplicaciones de la derivada al cálculo de límites.
Tema: Decibilidad Integrantes: Ileana Rdguez Soto
Programas y Máquinas de Turing
DERIVADA DE UNA FUNCION REAL
Presenta: M. en C. Marcos Campos Nava
COLEGIO NACIONAL DE EDUCACIÓN PROFESIONAL TÉCNICA
Combinadores SK.
5. Propiedades de los Lenguajes Recursivamente
CLASIFICACION DE LAS MAQUINAS DE TURING
DERIVADAS PARCIALES Gráficas.
Tomado de UNIMET Prof. Antonio Syers
Representaciones de conjuntos y funciones Roberto Moriyón.
PROGRAMACIÓN LÓGICA.
Teoremas de Completitud e Incompletitud de Gödel
Complejidad Roberto Moriyón.
EXPONENTES Y RADICALES
TALF 2 Introducción Roberto Moriyón. Objetivo general del curso Estudiar los límites de los algoritmos: –Hay más algoritmos de los que conocemos? Estudiar.
Autómatas de Pila Teoría del Autómata.
Desigualdades e Inecuaciones
Derivadas. Teoremas 2º Bachillerato
Introducción a Funciones de una variable
Material de apoyo Unidad 4 Estructura de datos
Ecuaciones diferenciales 1. Ecuaciones diferenciales de primer orden
Funciones Reales de Varias Variables
TEMA 3: Preliminares sobre Funciones reales
Funciones compuestas La regla de la cadena Ejemplos
Curso de Teoría del Autómata
Operaciones con funciones
Unidad II: Variables Aleatorias Concepto Discreta y Continua Fun. de densidad Fun. de probabilidad F. de distribución Esperanza y Varianza Propiedades.
TEMA 2: FUNCIONES DE UNA VARIABLE
Problemas de grafos y Tratabilidad Computacional
Estudios Profesionales para la Empresa
Operaciones con funciones
Distribuciones de probabilidad bidimensionales o conjuntas
TEMA 4: LÍMITES Y CONTINUIDAD
INAOE CURSO PROPEDEUTICO PARA LA MAESTRIA EN ELECTRONICA
Derivadas. Tasa de variación media Derivada de una función en un punto
Límites y continuidad Podríamos empezar diciendo que los límites son importantes en el cálculo, pero afirmar tal cosa sería infravalorar largamente su.
1 Definición 2 Clasificación 3 Características
Funciones. Concepto de función Dominio e imagen de una función
Matemáticas Aplicadas CS I
COMPOSICIÓN DE FUNCIONES
Reglas Básicas del Álgebra de Boole
Operaciones sobre Funciones
Tasa de variación media de una función
Operaciones con funciones
Presente un cuestionario con los aspectos mas importantes sobre los
Conceptos Básicos.  Alumno: Javier Sánchez Sánchez  Registro:  Grupo: B207  Fecha: 12/02/10.
X y 0 x y 0. Sean las funciones h(x) compuestas de las funciones f y g. Determina en cada caso la función interior y la exterior. a) h 1 (x) = 1 x3x3x3x3.
Introducción a las Funciones
Lic. Carla Aguirre Montalvo
FUNCIONES REALES PROPIEDADES GLOBALES
Teoremas sobre límites
MATRICES.
@ Angel Prieto BenitoApuntes Matemáticas 2º BCS1 MATEMÁTICAS A. CS II Tema VI Límites y continuidad.
Lic. JOSEPH V, RUITON RICRA. Sean los siguientes polinomios en “x”: P(x) = 5x + 2, x  {-1; 0; 1; 3; 4; 9} Q(x) = x 2 + 3x - 1, x  {-2; -1; 0; 3; 9}
6. Sistemas de ecuaciones diferenciales lineales
Regla de la cadena en varias variables
DOMINIO-RANGO-CLASES DE FUNCIONES
Soluciones en Serie de Ecuaciones Lineales
Mini-video 2 de 5 Materia: Límites de funciones Continuidad de funciones Prácticas con Introducción a Funciones de una variable.
1 Unidad 2: La derivada Reglas de derivación.. 2 ¿Cómo se obtiene la derivada de ¡Reflexión! Técnicas de derivación ó sin tener que usar la definición.
TEMA 1.  Objetivos.  Conjuntos numéricos.  Funciones reales de una variable real.  Límites de funciones.  Continuidad de funciones.  Derivabilidad.
TEMA 2 INTEGRAL DE RIEMANN.
Ecuaciones Diferenciales Ordinarias de Primer Orden. Tema # 1.
8. Funciones. Operaciones.. Las operaciones de suma, resta, multiplicación y división entre funciones son posibles y semejantes a las correspondientes.
3.6 Manejo de E/S Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos.
Transcripción de la presentación:

Funciones recursivas Roberto Moriyón

Ejemplo: Función de Ackerman F(i,x) = (i=0) ? x+1 : ((x=0) ? F(i-1,1) : F(i-1,F(i,x-1))) Ejemplos: F(0,x) = x+1 F(1,1) = F(0,F(1,0)) = F(0,F(0,0)) = F(0,1) = 2 F(1,2) = F(0,F(1,1)) = F(0,2) = 3 F(1,x) = F(0,F(1,x-1)) = … = F(0,x) = x+1 F(2,1) = F(1,F(2,0)) = F(1,F(1,1)) = F(1,2) = 3 F(2,x) = F(1,F(2,x-1)) = … = F(1,2x-1) = 2x+1 …

Definiciones recursivas primitivas Ejemplo con un argumento: F(x+1) = 2*F(x) F(x+1) = g(F(x)) F(0) = 1 F(0) = h Definición general: F(x1+1, x2, …, xn) = g(F(x1, x2, …, xn), x1, x2, …, xn) F(0, x2, …, xn) = h(x2, …, xn) Ejemplos: La definición de Ackerman no lo es F(x+1,y) = F(x, y)+2 F(0,y) = y+2

Funciones recursivas primitivas: Funciones básicas Las funciones recursivas básicas numéricas son: Sucesor: s(x) = x+1 Anulación: n(x) = (x=0) ? 1 : 0 Proyecciones: uin(x1, …, xn) = xi

Funciones recursivas primitivas Se pueden definir a partir de las básicas mediante recursión primitiva y composición Ejemplos: F(x) = s(s(x)) G(x+1, y) = F(G(x, y)) G(0,y) = F(y)

h(y1,…,ym) = f(g1(y1,…,ym),…,gn(y1,…,ym)) Composición En general, si f(x1,…,xn), g1(y1,…,ym),…, gn(y1,…,ym) son funciones, diremos que la función h(y1,…,ym) = f(g1(y1,…,ym),…,gn(y1,…,ym)) se obtiene a partir de ellas mediante composición. En realidad corresponde a la composición de G con f, donde G es la función vectorial con coordenadas g1, …, gn.

Totalidad y computabilidad de las funciones recursivas primitivas Si f es RP, es total La función prev: N - { 0 }  N definida mediante prev(x+1) = x no es total (y tampoco RP) Las funciones RP son computables, pues tanto f(x)=y como f(x)y se pueden determinar algorítmicamente en tiempo finito.

EJERCICIOS: Demostrar que las siguientes funciones son RP [RPN1] fk(x) = k [RPN2] suma(x, y) [RPN3] restap(x, y) // Da 0 si y > x [RPN4] producto(x, y) [RPN5] restaabs(x, y) // |x-y| [RPN6] positivo(x) // x > 0 ? 1 : 0 [RPN7] max(x, y) [RPN8] min(x, y) [RPN9] factorial(x) [RPN10] potencia(x, y) // xy [RPN11] par(x) // x = 2*(x/2) ? 1 : 0

EJERCICIOS: Demostrar que las siguientes funciones son RP [RPN12] cocientedefecto(x, 2) [RPN13] cocientedefectop(x, y) // (x, 0)  0 [RPN14] iguales(x, y) [RPN15] menoroigual(x, y) [RPN16] menor(x, y) [RPN17] divisor(x, y) [RPN18] primo(x) [RPN19] restodivision(x, y) [RPN20] primomayor(x) // Primero mayor [RPN21] mcd(x, y) [RPN22] mcm(x, y)

Funciones recursivas primitivas sobre cadenas de caracteres Las funciones recursivas básicas sobre cadenas de caracteres son: Anteposición: s(x). Ejemplo: sa(“abc”)=“aabc” Vacuidad: v(x) = (x=) ?  :  Proyecciones uin(x1, …, xn) = xi Ejemplos: f(x) = s(s(x)) g(,y) = fab(y) g(sa(x),y) = fab(g(x,y)) g(sb(x),y) = fba(g(x,y))

Funciones recursivas primitivas sobre cadenas de caracteres, II Una recursión primitiva sobre cadenas está formada por ||+1 reglas: f(s(w1),x2,…,wn) = g(f(w1,w2,…,wn),w1,w2,…, wn) f(0, w2, …, wn) = h(w2, …, wn) donde cada g y h son funciones recursivas primitivas. Las funciones recursivas primitivas sobre cadenas también son totales y computables

Funciones recursivas primitivas sobre cadenas de caracteres, III La función resto: +  * que elimina el primer carácter no es total ni, por lo tanto, recursiva primitiva

EJERCICIOS: Demostrar que las siguientes funciones son RP [RPC1] fv(w) = v [RPC2] start(v) // start(“ab”)=“a”, start(0) = 0 [RPC3] fin(v) // end(“ab”)=“b”, end(0)=0 [RPC4] cuenta(v) // cuentaa(“abbaba”)=“aaa” [RPC5] concatena(v, w) [RPC6] invierte(v) [RPC7] esPalíndrome(v) [RPC8] esVacía(v)

EJERCICIOS: Demostrar que las siguientes funciones son RP [RPC9] iguales(v, w) [RPC10] contiene(v, w) // contiene(“abcba”, “bcb”) = “a” // contiene(“abcba”, “bab”) = 0 [RPC11] sustituye(u, v, w) [RPC12] longitud(v) // longitud(“abc”) = “aaa”

Funciones recursivas primitivas: Suma recursiva Suponemos que f(n) es recursiva primitiva g(m) = f(0) + f(1) + … + f(m) g(0) = 0 g(m+1) = suma(g(m), f(s(m)) = h(g(m),m) donde h(x,y) = suma(x,f(s(y)) es primitiva recursiva, luego g también lo es.

Ejercicios Suponemos que f(m) es recursiva primitiva. Demostrar que las siguientes funciones también lo son: [RPA1], [RPA2], [RPA3], [RPA4] g(m,x) = min(f(0), f(1), …, f(m)) g(m,x) = f(f(…f(f(x))…)) // m concatenaciones de f g(x) = 1 si mx, f(m)=0, y g(x) = 0 en caso contrario g(x) = 1 si ∀mx, f(m)=0, y g(x) = 0 en caso contrario

Totalidad y computabilidad de la función de Ackerman F(i,x) = (i=0) ? x+1 : ((x=0) ? F(i-1,1) : F(i-1,F(i,x-1))) Es total Es computable Sin embargo, no es recursiva primitiva: Fj(x) = F(j, x) = Fj-1(Fj-1(…(Fj-1(0)…)) Fx(x) crece más rápido que cualquier función de la sucesión f0(x)=x+1, fj+1(x)=fj(fj(…(fj(0)…)) Las funciones R.P. crecen como alguna de las funciones anteriores

Formas de definición de las funciones recursivas Definición usual: Aplicar la definición repetidamente, utilizando una pila de cálculos parciales, hasta que se llegue al resultado Ejemplo: Para la función de Ackerman, F(1,1) = F(0,F(1,0)) = F(0,F(0,0)) = F(0,1) = 2

Formas de definición de las funciones recursivas, II Forma rigurosa (aunque teórica): Definir F sobre un primer dominio, D0, donde se puede calcular directamente Ejemplo: Para la función de Ackerman, D0={(i,x)|i=0}, en cuyo caso f0(i,x)=x+1 Definir F sobre un dominio Dj+1 si su cálculo se puede reducir al de F sobre Dj Ejemplo: D1=D0∪{(i,x) | x=0}; f1(i,x) = … D2=D1∪{(1,1)}; f2(i,x) = …, etc

Formas de definición de las funciones recursivas, III Interpretación de la forma anterior: punto fijo de un operador P(f)(x) = (i=0) ? x+1 : ((x=0) ? f(i-1,1) : f(i-1,f(i,x-1))) P(f0) = f1 P(f1) = f2 … F es un punto fijo de P: P(F) = F

h(x, y) = (x = 0) ? 1 : h(x – 1, h(|x – y|, y)) EJERCICIOS [REC 1] Calcular el dominio y los valores de las imágenes de las funciones f y g definidas mediante f(x,y) = 2.f(y, 2.x) g(x) = (x < 5) ? f(x, x) : ((x = 5) ? 1 : x*g(x-1)) [REC 2] Calcular el dominio y los valores de las imágenes de la función h definida mediante h(x, y) = (x = 0) ? 1 : h(x – 1, h(|x – y|, y))

Funciones recursivas: Minimización Si f(x,y) es una función recursiva, entonces g(x) = min { y | f(x,y) ≠ 0 } define otra función recursiva Demostración: Definimos gaux(x, z) = min { y | f(x, z+y) ≠ 0 } entonces gaux(x, z) = (f(x, z) ≠ 0) ? 0 : 1 + gaux(x, z+1) g(x) = gaux(x,0)

EJERCICIOS Suponiendo que la función f(x,y) sea recursiva, demostrar que también lo es la función g(x) cuyo valor es la suma f(x,0) + f(x,1) + … + f(x,n) donde n se elije de manera que los sumandos sean diferentes de 0 y f(x,n+1)=0.

Ejemplo de funciones recursivas: Máquinas de Turing Dada una máquina de Turing determinista M, la función transita(x, y), donde x e y son estados instantáneos de ejecución de M, que vale “a” si la máquina M lleva la cinta del estado x al y y  en caso contrario, es recursiva (pero no recursiva primitiva)

Ejemplo de funciones recursivas: Máquinas de Turing, II Demostración: transita(x, y) = esEstado(x) & esEstado(y) & & ((x=y) ? “a” : transita(aplicaRegla(x), y)) La función aplicaRegla(x) devuelve el resultado de aplicar una regla de transición de M a partir del estado de ejecución x; si no se puede, devuelve x. EJERCICIO: [MT REC] Demostrar que las funciones esEstado(x) y aplicaRegla(x) son recursivas primitivas.

Ejemplo de funciones recursivas: Máquinas de Turing, III Dada una máquina de Turing determinista M, la función ejecuta(x, y), donde x, y*, que devuelve el estado instantáneo de ejecución de M a partir de y después de |x| transiciones, es recursiva primitiva. Demostración: ejecuta(, y) = Sqº(y) ejecuta(S(x), y) = aplicaRegla(ejecuta(x, y))

Ejemplo de funciones recursivas: Máquinas de Turing, IV Dada una máquina de Turing determinista M, la función produce(x), que a cada cadena x le hace corresponder el contenido de la cinta cuando M se para a partir de x es recursiva (pero puede no ser recursiva primitiva) Demostración: produce(x) = quitaEstado(ejecuta(x,miny(para(ejecuta(x, y))))) Observación: miny se puede definir en este caso de forma análoga a como se hace con números.

Forma normal de funciones recursivas Todas las funciones recursivas se pueden escribir en la forma f(x) = p(miny(q(x, y))) donde p y q son funciones recursivas primitivas. Las funciones p y q se pueden elegir de manera que p simplemente elimine el contenido de la cinta previo a un separador.

Forma normal: programas La construcción anterior también se puede hacer con programas en lugar de máquinas de Turing: a partir de cualquier programa podemos construir otro equivalente que incorpora un contador y emula al primero paso a paso y cuando el inicial se para sigue ejecutándose sin hacer nada y guardando en una variable booleana fin la información de que el programa emulado ha terminado.

Forma normal: programas, II El cálculo del programa inicial se puede realizar buscando el valor mínimo del contador del programa emulador para el cual la variable fin es cierto, y devolviendo la variable que contiene el valor del programa emulado.

Ejemplo de funciones recursivas: Máquinas de Turing, V Si una máquina de Turing tiene una definición mediante submáquinas que es recursiva, la función que define sobre cadenas de caracteres es recursiva. Como consecuencia de lo anterior, las máquinas de Turing definidas recursivamente mediante submáquinas no proporcionan un mecanismo de computación más potente que las máquinas de Turing simples.

Ejemplo de funciones recursivas: Máquinas de Turing, VI La demostración de la afirmación anterior se basa en la función FM(q, u, x, v), que da el estado final de ejecución (q’, u’, x’, v’) calculado por la máquina a partir del estado q con la palabra uxv sobre la cinta, apuntando a la x. Su definición es FM(q, u, x, v) = FM(q’, 234(FN(q, u, x, v))) donde N es la submáquina correspondiente a la transición. Esto da lugar a una definición recursiva de las funciones FM. Si la submáquina es indeterminista, se demuestra de manera análoga utilizando conjuntos de estados en lugar de estados.

Qué funciones son recursivas? Todas las calculables Es consecuencia de lo anterior También es consecuencia de la construcción de una máquina universal que emula máquinas de Turing con submáquinas recursivas

Qué funciones son recursivas?, II Las que se obtienen a partir de las recursivas primitivas básicas mediante composición, recursión primitiva y minimización Es consecuencia de lo anterior