Definiciones de computabilidad OTROS MODELOS COMPUTACIONALES. Computabilidad-Turing. Tesis de Church-Turing

Documentos relacionados
Entscheidungsproblem I LENGUAJES RECURSIVAMENTE ENUMERABLES MÁQUINAS DE TURING. DECIDIBILIDAD OTROS MODELOS COMPUTACIONALES. Máquinas de Turing (TM)

Lenguajes de programación LÓGICA COMPUTACIONAL LENGUAJES DE PROGRAMACIÓN. Sintaxis y semántica formales. Lenguaje IMP

Lenguajes de programación ANÁLISIS LÓGICO LENGUAJES DE PROGRAMACIÓN. Sintaxis y semántica formales. Lenguaje IMP

Sintaxis LÓGICA COMPUTACIONAL CÁLCULO DE PROPOSICIONES. Funciones boolenas. Semántica

Lenguajes funcionales: λ-cálculo

Introducción TEORÍA DE LA COMPUTACIÓN INTRODUCCIÓN. Lógica

Análisis lógico Cálculo de proposiciones

Lenguaje de programación S (Davis/Sigal/Weyuker) Lógica y Computabilidad. Ejemplo 1. Ejemplo 2

Introducción TEORÍA DE LA COMPUTACIÓN INTRODUCCIÓN. Lógica

Inducción en definiciones y demostraciones AUTÓMATAS Y LENGUAJES FORMALES PRELIMINARES MATEMÁTICOS. Números naturales. Inducción matemática

Resumen ANÁLISIS LÓGICO INDUCCIÓN Y RECURSIÓN. Conjuntos inductivos. Definiciones circulares

Tecnología de la Programación

Lenguajes de Programación Programación funcional

Inducción en definiciones y demostraciones AUTÓMATAS Y LENGUAJES FORMALES PRELIMINARES MATEMÁTICOS. Números naturales. Inducción matemática

Los modelos abstractos de cómputo. Tema 1: Introducción. El modelo transductor. El modelo reconocedor. ordenador. datos. Modelo Abstracto de Cómputo

Entscheidungsproblem I LENGUAJES RECURSIVAMENTE ENUMERABLES MÁQUINAS DE TURING. DECIDIBILIDAD. Máquinas de Turing (TM) Procedimiento efectivo

Bases Formales de la Computación

Contenido del curso Fundamentos de Lenguajes de Programación

Temas. Objetivo. Que el estudiante logre:

Resumen LÓGICA COMPUTACIONAL INDUCCIÓN Y RECURSIÓN. Conjuntos inductivos. Definiciones circulares

Cálculo Lambda - primera parte. Paradigmas de Lenguajes de Programación. Primer cuatrimestre

Sintaxis LÓGICA COMPUTACIONAL CÁLCULO DE PROPOSICIONES. Funciones boolenas. Semántica

Gramáticas independientes del contexto TEORÍA DE LA COMPUTACIÓN LENGUAJES INDEPENDIENTES DEL CONTEXTO Y AUTÓMATAS DE PILA. Otras definiciones I

Entscheidungsproblem I TEORÍA DE LA COMPUTACIÓN MÁQUINAS DE TURING Y DECIDIBILIDAD. Máquinas de Turing (TM) Procedimiento efectivo

los lenguajes WHILE y LOOP X2 := X1; while X2 0 do X1 := X1 + 1; X2 := X2 1 od

Lambda-Cálculo. Mauro Jaskelioff 6/9/2011

1 Relaciones entre la lógica y la computación. 2 Descripción y análisis de lenguajes. 3 Otras tres áreas de aplicación directa de la lógica

Funciones Recursivas Primitivas

Ejercicios resueltos. Teoría de la Computabilidad. Tema 3

Términos LÓGICA COMPUTACIONAL CÁLCULO DE PREDICADOS. Variables libres y ligadas. Fórmulas. Tenemos dos conjuntos básicos.

Clase Práctica 1 - Inducción estructural, conectivos adecuados y consecuencia - Viernes 23 de marzo de 2012

Tema 5: Funciones recursivas

Verificación de programas. Algoritmos y Estructuras de Datos I. Semánticas formales: Primer cuatrimestre de 2016

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Lógica y Computabilidad Capítulo 3

En 1936 se introdujeron dos modelos computacionales: Alan Turing inventó la máquina de Turing y la noción de función computable en sus

Ejercicios resueltos. Computación. Tema 3

1. Programas y funciones computables

Lambda cálculo no tipado

Terminaremos el capítulo con una breve referencia a la teoría de cardinales.

Contenido. Prólogo... Prólogo a la edición en español Argumentos y proposiciones lógicas Introducción

Expresiones Regulares

Funciones primtivas recursivas y clases PRC (parte I)

Introducción LÓGICA COMPUTACIONAL PROGRAMACIÓN LÓGICA. Unificación. Ejemplos

Introducción al Lambda Cálculo (C)

Funciones recursivas

Matemática Discreta. Números, inducción y recursión. Números, inducción y recursión: principio de inducción

Introducción a la indecidibilidad

Clase 02/10/2013 Tomado y editado de los apuntes de Pedro Sánchez Terraf

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional

Cálculo Lambda - primera parte. Paradigmas de Lenguajes de Programación. Segundo cuatrimestre

Capítulo IV: FUNCIONES RECURSIVAS

Funciones recursivas

Coordinación de Ciencias Computacionales INAOE. Teoría de Autómatas y Lenguajes Formales. Temario detallado para examen de ingreso 2012

Fundamentos de Ciencias de la Computación

la máquina de Turing (MT) como sustituto formal del concepto de algoritmo 0 0 r 1

Gramáticas independientes del contexto AUTÓMATAS Y LENGUAJES FORMALES LENGUAJES INDEPENDIENTES DEL CONTEXTO Y AUTÓMATAS DE PILA. Otras definiciones I

Ejercicios de Teoría de conjuntos

Indice COMPUTABILIDAD Y COMPLEJIDAD. Introducción. Introducción

Introducción al Cálculo Lambda

CONJUNTOS Y NÚMEROS. HOJA 2

12 OTRO MUNDO ES POSIBLE: AL

Máquinas de Turing Definición y descripción

Números naturales y recursividad

Lógica e hipercomputación. 25 de marzo de 2004

Departamento de Tecnologías de la Información. Tema 6. Funciones recursivas. Ciencias de la Computación e Inteligencia Artificial

Entendiendo expresiones lambda en C# con Mono

Computabilidad y Lenguajes Formales: Teoría de la Computabilidad: Máquinas de Turing

Tema 01: Fundamentos del Análisis Asintótico de Algoritmos

El lenguaje P. Lógica y Computabilidad ( ) símbolos p. Verano convenciones. Lógica Proposicional - clase 1

Autómatas Finitos Deterministicos (DFA)

a partir de otras funciones. Entonces C es la menor clase de funciones que contiene a las funciones básicas y es cerrada por los p. d.

Lógica Proposicional

Lambda Cálculo Tipado (1/3)

Autómatas Finitos Deterministicos (DFA)

LENGUAJES Y COMPILADORES

Matemática computable

Definiciones generales. Alfabeto de la lógica proposicional. Conectivos. Conectivos

Tema 5: Programas Universales

Ciencias de la Computación I

Construcción Formal de Programas en Teoría de Tipos

Autómatas Finitos Deterministicos (DFA) Introducción a la Complejidad Computacional FFHA, Universidad Nacional de San Juan

Inducción en definiciones y demostraciones AUTÓMATAS Y LENGUAJES FORMALES PRELIMINARES MATEMÁTICOS LENGUAJES REGULARES I.

Lógica Proposicional. Significado de una Fórmula Proposicional

UNIDAD IV Programación Funcional. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM

Lógica Proposicional

Teoría de Autómatas y Lenguajes Formales.

Teorema de incompletitud de Gödel

Lógica proposicional. Semántica Lógica 2018

Solución Primer Parcial Matemática

Máquinas Secuenciales, Autómatas y Lenguajes. Tema 4: Expresiones Regulares. Luis Peña

El lenguaje While. Yolanda Ortega Mallén. Dpto. de Sistemas Informáticos y Computación Universidad Complutense de Madrid

Axiomas del Cálculo de Predicados

Teoría de la Computación y Leguajes Formales

Lenguajes de Programación

Ampliación Matemática Discreta. Justo Peralta López

LÓGICA FORMAL TEORIAS DE PRIMER ORDEN. Axiomática

Teoremas de Taylor. Capítulo 7

CIENCIAS FORMALES CIENCIAS FÁCTICAS

Transcripción:

Definiciones de computabilidad OTROS MODELOS COMPUTACIONALES Francisco Hernández Quiroz Departamento de Matemáticas Facultad de Ciencias, UNAM E-mail: fhq@ciencias.unam.mx Página Web: www.matematicas.unam.mx/fhq Facultad de Ciencias Turing propuso sus máquinas como una definición formal de la noción intuitiva de calculabilidad efectiva. Él mismo aplicó su definición a dos problemas: la determinación de qué es un número computable y la demostración de irresolubilidad del Entscheidungsproblem. Otros matemáticos contemporáneos propusieron otras formas de definir la calculabilidad efectiva: el cálculo lambda, las gramáticas formales, etc. Es posible demostrar que, una vez que se acepta una noción de equivalencia adecuada, todos estas definiciones son equivalentes, en el sentido de que nos permiten calcular la misma clase de funciones. Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 1 / 35 Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 2 / 35 Tesis de Church-Turing La equivalencia entre modelos de computación llevó a plantear la siguiente afirmación: Toda función es calculable efectivamente si y sólo si es calculable por una máquina de Turing. Esta afirmación es conocida como la tesis de Church-Turing, pues se deriva del trabajo de ambos Dado que afirma que una noción intuitiva (calculabilidad efectiva) es capturada por una noción formal, no se puede decir propiamente que está demostrada. Pero es una hipótesis de trabajo conveniente y los resultados de computabilidad vistos en la sección anterior pueden formularse de manera más general si se acepta la validez de la tesis. También es posible reformularla de manera que no se vea como una afirmación dogmática, sino como un conjunto de axiomas de los cuales se pueden derivar los mismos resultados Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 3 / 35 Computabilidad-Turing Para poder comparar los modelos que estudiaremos adoptaremos una convención similar a la que vimos antes. Sea M TM, con Σ y Γ como alfabetos de entrada y de la cinta, respectivamente. Entonces, podemos definir una función f M : Σ Γ como {(α, β) s M, α, 0 M t, β, n }. Obsérvese que f M no tiene por qué ser total. Por otro lado, diremos que la función σ : Σ es: (a) Turing-computable sii existe una M TM tal que σ = f M ; (b) computable sii existe una M TM total tal que σ = f M. Esta convención se puede modificar para que se refiera a números naturales y no a cadenas. Por ejemplo, podemos pensar en que la cadena α se refiere al número natural que corresponde al lugar que ocupa α en el orden lexicográfico. Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 4 / 35

Funciones recursivas µ Funciones nuevas I Las funciones recursivas-µ son otro modelo de computabilidad. La terminología adoptada presupone la tesis de Church-Turing. Estas funciones son el mínimo conjunto cerrado bajo las operaciones de composición, recursión primitiva, minimización acotada y que contiene a las siguientes funciones básicas (donde x = x 1,..., x n ): Cero. La constante c : N 0 N, con c = 0 es computable. Sucesor. La función s : N N, con s(x) = x + 1, es computable. Proyecciones. Las funciones π n k : Nn N y π n k (x 1,..., x n ) = x k, con 1 k n, son computables. De ahora en adelante usaremos la siguiente abreviatura x def x 1,..., x n. Las operaciones para crear nuevas funciones son: Composición. Si las funciones f : N k N y g 1,..., g k : N n N son computables entonces también lo es la función f (g 1,..., g k ) : N n N, definida por f(g 1 ( x),..., g k ( x)). Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 5 / 35 Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 6 / 35 Funciones nuevas II Recursión primitiva. Si y h 1,..., h k : N n N g 1,..., g k : N n+k+1 N son computables, entonces también lo son las funciones definidas a continuación f 1,..., f k : N n+1 N, f i (0, x) = h i ( x) f i (s(n), x) = g i (n, x, f 1 (n, x),..., f k (n, x)). Funciones nuevas III Minimización no acotada. Sea g : N n+1 N una función computable. Entonces, también es computable la función definida por f : N n N, f( x) = el mínimo valor m tal que: g(m, x) = 0 y n m. g(n, x) está definida = indefinida, en caso de que no exista tal m El valor de f( x) se denota con la expresión µy. g(y, x) = 0. Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 7 / 35 Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 8 / 35

Ejemplos Cálculo lambda I La función + suele definirse por medio de las siguientes ecuaciones 0 + x = x s(y) + x = s(y + x) En la notación de las funciones µ tendríamos: h = π 1 1 g = s π3 3 f(0, x) = π1 1 (x) f(s(y), x) = s(π3 3 (y, x, f(y, x))) Las funciones recursivas también son expresables en el cálculo λ. El conjunto de términos del cálculo λ se denotará por Λ. La sintaxis del cálculo lambda es al siguiente Λ V (λx. Λ) (ΛΛ) donde V denota una variable: w, x, y, z, w 1,... La segunda cláusula en la definición anterior se conoce como abstracción (se usa para definir funciones) y la tercera como aplicación (se usa para aplicarlas). Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 9 / 35 Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 10 / 35 Cálculo lambda II La siguiente abreviatura nos ayudará a definir funciones con más de un parámetro: λx 1 x 2... x n. M def (λx 1. (λx 2. (... (λx n. M)... ) La regla básica es la reducción β ((λx. M)N) β M [x/n] Por ejemplo, la siguiente es una función que duplica su argumento aplicada al término z y su resultado al aplicar la reducción β ((λx. xx)z) β (xx) [x:=z] = zz Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 11 / 35 Funciones recursivas en el cálculo lambda I Sean M y N Λ. Entonces: V def λxy. x F def λxy. y [M, N] def λz. zmn 0 def λx. x n + 1 def [F, n] S def λx. [F, x] P def λx. xf C def λx. 0 Cero def λx. xv πi n def λx 1,..., x n. x i Y def λf. (λx. f(xx))(λx. f(xx)) Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 12 / 35

Funciones recursivas en el cálculo lambda II Funciones recursivas en el cálculo lambda III Obviamente, 0 y n + 1 definen los números naturales. S y P son las funciones predecesor y sucesor. V y F son los valores de verdad, Cero es una función que nos da V si su argumento es 0 y F en caso contrario. π n i es, por supuesto, la proyección i-ésima con n argumentos. El término Y será útil más adelante para definir la recursión. Supongamos que f : N k N y g 1,..., g k : N n N son funciones definidas por los términos F y G 1,... G k Λ, respectivamente. La composición f (g 1,..., g k ) : N n N se define con el término La función recursiva primitiva f : N n+1 N definida a partir de h y g se expresa por medio del término λ: Yλf. λyx 1... x n. (Cero y)(hx 1... x n )(G(P y)x 1... x n (f(p y)x 1... x n )). λx 1... x n. F(G 1 x 1... x n )... (G k x 1... x n ). También es posible definir las funciones recursivas primitivas en el cálculo λ. Por simplicidad, nos limitaremos a la definición de una sola función recursiva. Supongamos que h : N n N y g : N n+2 N son funciones computables definidas por los términos H, G Λ. Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 13 / 35 Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 14 / 35 Ejemplo. Función recursiva primitiva en el cálculo λ Minimización no acotada en el cálculo λ Sea g : N n+1 N una función computable. Como se vio antes, es posible definir la función f : N n N Supongamos que ahora queremos definir la función suma presentada como ejemplo en las funciones recursivas µ en términos de Λ. Entonces: H def λx 1. x 1 G def λz, x 1, x 2. S((λx 1, x 2, x 3. x 3 )zx 1 x 2 ) SUMA def Yλf. λyx. (Cero y)(hx)(g(p y)x(f(p y)x)) f( x) = µy. g(y, x) = 0. Usando una notación informal, que no es parte de las funciones recursivas µ, la función anterior se podría expresar así: f (x 0, x) def if g(x 0, x) = 0 then x 0 else f (s(x 0 ), x) f( x) def f (0, x). Si el término G Λ calcula la función g, definimos el término F como el equivalente a la función f: F def Yλf. λx 0 x 1... x n. (Cero (G x 0 x 1... x n ))x 0 (f(s x 0 )x 1... x n ) F def λx 1... x n. F 0 x 1... x n. Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 15 / 35 Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 16 / 35

Lenguaje de programación IMP Semántica operacional estructural I Se trata de un CFL. Empezaremos con las expresiones aritméticas: A n X (A + A) (A A) (A A) donde n Z y X Loc. Tenemos ahora las expresiones booleanas EB: B V F (A = A) (A < A) B (B B) (B B) donde A EA. Finalmente, los comandos del lenguaje se definen así: C ::= skip X := A (C ; C) (if B then C else C) (while B do C). donde A EA y B EB. La forma más común de definir el significado de las construcciones de un lenguaje es por medio de explicaciones en una lengua natural (inglés, generalmente). Sin embargo, el lenguaje natural se presta a las ambigüedades y éstas, a los errores o a las divergencias entre las diferentes implementaciones de un mismo lenguaje. Para evitar estos problemas, aquí se usarán reglas de semántica operacional estructural o SOE, para abreviar. Una regla de inferencia tiene la forma siguiente: p 1,..., p n q donde p 1,..., p n son las premisas y q es la conclusión. Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 17 / 35 Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 18 / 35 Semántica operacional estructural II Qué es la programación imperativa? Las reglas de SOE son un tipo particular de reglas de inferencia en las que las premisas y la conclusión son transiciones. Una transición tiene la forma α β La forma concreta de las expresiones α y β, así como las transiciones aceptables, se definirán más adelante. IMP es un lenguaje imperativo típico: el comando básico es la asignación de valor a las localidades de la memoria de la computadora. Para definir el significado de una asignación se parte de la existencia de una máquina virtual que posee una memoria con localidades con nombre: Loc = {X, Y, Z, X 0,... } Las localidades pueden tomar valores de Z. Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 19 / 35 Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 20 / 35

Estados de la memoria Un estado de la memoria es una función σ : Loc Z. La expresión σ(x) nos dice qué valor contiene la localidad X en el estado σ. La alteración del valor de una sola localidad de la memoria cuando se encuentra en el estado σ se representa con la función σ [X:=m], donde X es la localidad modificada y m es el nuevo valor. Formalmente: { σ(y) si X Y σ [X:=m] (Y) = m en caso contrario. El conjunto de estados es Σ. Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 21 / 35 SOE para IMP. Expresiones aritméticas En el caso de las expresiones aritméticas, las transiciones α β tiene la forma a, σ n donde a EA, σ Σ y n Z. Diremos que evaluar operacionalmente la expresión a en el estado σ da como resultado el valor n. Dicha evaluación se realiza de acuerdo con las siguientes reglas: n, σ n X, σ σ(x) a 0, σ n 0 a 1, σ n 1 n 0 op Z n 1 = n a 0 op a 1, σ n En esta regla op puede ser +, o y op Z, + Z, Z o Z (ambos operadores deben coincidir). Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 22 / 35 SOE para IMP. Expresiones booleanas I SOE para IMP. Expresiones booleanas II En las expresiones booleanas, una transición es b, σ T, con b EB, σ Σ y T {V, F}. Las reglas operacionales son: V, σ V a 0, σ n a 1, σ m a 0 = a 1, σ V F, σ F sii n y m son iguales b, σ V b, σ F b, σ F b, σ V a 0, σ n a 1, σ m a 0 = a 1, σ F sii n y m no son iguales b 0, σ T 0 b 1, σ T 1 b 0 b 1, σ T con T = V si T 0, T 1 = V y T = F en caso contrario a 0, σ n a 1, σ m a 0 < a 1, σ V sii n es menor que m b 0, σ T 0 b 1, σ T 1 b 0 b 1, σ T con T = V si T 0 = V o T 1 = V y T = F en caso contrario a 0, σ n a 1, σ m a 0 < a 1, σ F sii n no es menor que m Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 23 / 35 Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 24 / 35

SOE para IMP. Comandos I SOE para IMP. Comandos II Las reglas de transición de los comandos son así: c, σ σ, donde c IMP y σ, σ Σ. El valor de σ se infiere de este modo: skip, σ σ Comandos atómicos a, σ m X := a, σ σ [X:=m] Composición secuencial c 0, σ σ c 1, σ σ c 0 ; c 1, σ σ Condicionales b, σ V c 0, σ σ b, σ F c 1, σ σ if b then c 0 else c 1, σ σ if b then c 0 else c 1, σ σ Ciclos b, σ F while b do c, σ σ b, σ V c, σ σ while b do c, σ σ while b do c, σ σ Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 25 / 35 Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 26 / 35 Funciones recursivas y programas while I Funciones recursivas y programas while II Lo haremos por inducción en la funciones recursivas. Las funciones µ también son definibles por medio de programas de IMP. Sea f : N n N una función recursiva. El objeto es definir un programa P con al menos las localidades X 0,..., X n tal que si P, σ σ entonces σ (X 0 ) = f(σ(x 1 ),..., σ(x n )). P 0 def X 0 := 0 P S def X 0 := X 1 + 1; P π n i def X 0 := X i ; Sean P f y P g1,..., P gk los programas correspondientes a las funciones f : N k N y g 1,..., g k : N n N. Entonces, el programa correspondiente a h = f (g 1,..., g k ) es P h def Y 1 := X 1 ;... ; Y n := X n ; P g1 ; Z 1 := X 0 ; X 1 := Y 1 ;... ; X n := Y n ; P g2 ; Z 2 := X 0 ;... X 1 := Y 1 ;... ; X n := Y n ; P gk ; Z k := X 0 ; X 1 := Z 1 ;... X k := Z k ; P f Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 27 / 35 Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 28 / 35

Funciones recursivas y programas while III Veamos ahora un caso restringido para la recursión primitiva. Supongamos que tenemos las funciones h : N N y g : N 3 N y a partir de ellas definimos la función f : N 2 N: f(0, x 1 ) = h(x 1 ) f(s(n), x 1 ) = g(n, x 1, f(n, x 1 )) Queremos un programa P f tal que si P, σ σ entonces σ (X 0 ) = f(σ(z), σ(x 1 )). Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 29 / 35 Funciones recursivas y programas while IV Por hipótesis inductiva, suponemos la existencia de dos programas σ (X 0 ) = h(σ(x 1 )) donde P h, σ σ σ (X 0 ) = g(σ(z), σ(x 1 ), σ(x 2 )) donde P g, σ σ Entonces P f es el programa W := Z; Y 1 := X 1 ; % Guardamos los argumentos originales de f Y 0 := 0; % Usaremos a Y 0 como contador P h ; % Ejecutamos el programa del caso base while Y 0 < W do Z := Y 0 ; X 1 := Y 1 ; X 2 := X 0 ; P g Y 0 := Y 0 + 1 Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 30 / 35 Funciones recursivas y programas while V Por ejemplo, si tenemos la función recursiva Funciones recursivas y programas while VI y entonces, el programa P suma tal que si P suma, σ σ entonces suma(0, x 1 ) = x 1 suma(s(n), x 1 ) = s(suma(n, x 1 )) aquí la función base h : N N se define como la proyección π 1 1 (x 1) = x 1 y la función g : N 3 N es s π 3 3 (n, x 1, x 2 ) = s(x 2 ). Los programas P h y P g tales que si P h, σ σ y P g, σ 1 σ 1 son: σ (X 0 ) = π 1 1 (σ(x 1)) σ 1 (X 0) = s π 3 3 (σ(z), σ(x 1), σ(x 2 )) P h = X 0 := X 1 P g = X 0 := X 2 + 1 queda así: W := Z; Y 1 := X 1 ; Y 0 := 0; P h ; while Y 0 < W do Z := Y 0 ; X 1 := Y 1 ; X 2 := X 0 ; P g ; Y 0 := Y 0 + 1 σ (X 0 ) = suma(σ(z), σ(x 1 )) Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 31 / 35 Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 32 / 35

Máquinas de registros Las máquinas de registros ilimitados (URM) son una abstracción del procesador central de una computadora. La memoria es como la del lenguaje IMP, pero las localidades se llaman registros: Reg = {R 1, R 2... } Los programas para URM se basan en unas cuantas instrucciones: Nombre Sintaxis Significado Cero Z(n) R n := 0 Sucesor S(n) R n := R n + 1 Transferencia T(n, m) R n := R m Salto J(n, m, k) si R n = R m entonces ve a la instrucción k-ésima; si no, continúa con la siguiente Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 33 / 35 Los registros guardan números naturales y los estados posibles son Σ = {σ : Reg N} Este programa calcula la suma de los números en R 1 y R 2. La tabla presenta el estado de la memoria después de cada instrucción: R 1 R 2 R 3 1.1 1 2 0 2.1 2 2 0 1 J(2, 3, 5) 3.1 2 2 1 2 S(1) 4.1 2 2 1 3 S(3) 1.2 2 2 1 4 J(1, 1, 1) 2.2 3 2 1 5 3.2 3 2 2 4.2 3 2 2 1.3 3 2 2 5.1 3 2 2 Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 34 / 35 Funciones recursivas y URM Las funciones recursivas µ pueden calcularse por medio de URM de una manera muy similar a los programas en IMP: Las funciones cero, sucesor y proyecciones tienen una implementación muy simple. Para la composición de funciones hay que adoptar convenciones para guardar resultados parciales de funciones y presentar parámetros de manera similar a como se hizo con los programas IMP. Además, hay que reenumerar las direcciones referidas en la operación de salto, para evitar interferir en el código de otros programas. Finalmente, la recursión y la minimalización se manejan como se hizo con los ciclos while en IMP. Francisco Hernández Quiroz Teoría de la Computación Máq. de Turing y Mod. de Comp. 35 / 35