MODELOS DE COMPUTACION Ing. Jonatan Gómez Perdomo Profesor Universidad Nacional Procedimiento Efectivo – Algoritmo La noción de algoritmo es mas o menos conocida por todas aquellas personas ( ingenieros de sistemas, matemáticos, científicos de la computación, etc. ), que de una u otra forma han tenido contacto con la teoría de la computación. Dicha noción se puede sintetizar de la siguiente manera: Un algoritmo es una secuencia finita de tareas bien especificada cada una de las cuales requiere una cantidad finita (pero no acotada) de memoria y de tiempo. Una definición más precisa de algoritmo es la siguiente: Un algoritmo es un procedimiento general que para toda pregunta valida la respuesta puede ser obtenida por el uso de un computo simple de acuerdo a un método especifico. La ejecución de dicho computo esta claramente especificada a todo nivel de detalle del mismo. Algunas de las características que debe cumplir un procedimiento para ser considerado algoritmo son las siguientes: Discreción: Cada computo debe ser realizado en una unidad discreta de tiempo, los valores de entrada y salida deben provenir de conjuntos discretos. Determinismo: para una misma entrada se debe obtener la misma respuesta. Composición: Se debe poder descomponer es una secuencia de pasos elementales. Maquina de Turing Maquina de Post • Es un diagrama de flujo con una variable x, sobre las palabras de un alfabeto agregando un símbolo especial . Cada nodo tiene la siguiente forma: Reconoce el lenguaje = { (anbn)m : n,m = 0,1,... } Programas de Conteo • Un conjunto finito de variables que almacenan números naturales (X,Y,Z,.....) • Las siguientes operaciones sobre estas variables: X 0, X Y+1, X Y-1 • Dos estructuras de control: la secuencia y el condicional ir a. if X=0 goto G donde X es una variable y G es una etiqueta a una sentencia. Un programa de conteo es una secuencia finita de sentencias opcionalmente etiquetadas. Programas de Conteo A: U 0 Z 0 if X=0 goto G B: X X-1 V Y+1 V V-1 if V=0 goto A V V-1 Z Z+1 if U=0 goto B Programa que calcula X*Y Redes Neuronales Artificiales Módelo de McCulloch-Pitts n 1 n w i1 2 F w i i2 n i u n j w ij Neurona Función de Activación Redes Neuronales Artificiales Función umbral Función lineal a trozos Función sigmoide Función Gausssiana Otras funciones de Activación Redes Neuronales Artificiales La interconexión de varias unidades de procesamiento (neuronas), forman Redes Neuronales Artificiales. Las cuales toman entradas, las procesan y emiten salidas. Neuronas Conexiones Redes Neuronales Artificiales =0.5 ? 0.5 -1 0.5 0.5 ? 0.5 =0 -1 =0.5 Red NAND ? Autómatas Celulares Consta de: • Una teselación homogénea sobre un espacio, a cada tesela se le llama celda. • Un conjunto de estados que puede tomar cada celda. • Un conjunto de celdas, igualmente definida, para cada celda x. Este conjunto de celdas es llamado la vecindad de x. • Una regla de evolución que se aplica en un instante de reloj a todas las celdas. Autómatas Celulares LIFE Es uno de los autómatas celulares mas famosos. • Teselación : Cuadricula homogénea ( en R2 ). • Estados : vivo (negro) y muerto (blanco). • Vecindad : las 8 celdas que la rodean. • Regla : Una celda permanece viva si hay 2 o 3 vecinos vivos, de lo contrario muere. Una celda muerta cambia a viva si hay exactamente 3 vecinas vivas. Computación Molecular • El ADN es una doble cadena entrelazada, de cuatro diferentes nucleótidos : Adenina (A), Citocina (C), Guanina (G), y Timina (T). Una cadena es el complemento de la otra asi : Adenina-Timina (A-T) y Guanina-Citocina (G-C). AACCTTGGACTG TTGGAACCTGAC • El proceso que permite el encadenamiento de nucleótidos sencillos para formar cadenas de ADN es llamado Polimerización. Computación Molecular • El ADN se puede replicar mediante un proceso conocido como PCR (Polymerase Chain Reaction ) • El ADN se puede reparar por medio de ligasa CTTC + CAAGGAA = CTTCCAAGGAA GAAGGTT CCTT GAAGGTTAATT • El ADN se puede cortar por medio de nucleasas o enzimas de restricción CTTCCAAGGAA = CTTC GAAGGTTAATT + CAAGGAA GAAGGTT CCTT Sistema de Kleene Funciones Recursivas Primitivas 1. Funciones Básicas cero Z(n)= 0 sucesor proyección S(n)= el número el cual le sigue a n en los números naturales pik ( x1, x2, ..., xk ) = xi para i=1,2,...,k 2. Operaciones Básicas composición para todo n • Si g es recursiva primitiva de m variables y h1,.., hm son recursivas primitivas de k variables entonces f(x)=g(h1(x),....,hm(x)) también lo es. Recursión primitiva • Si h y g son recursivas primitivas entonces f dada por h con base g así : f(0,x)=g(x) f( S(n), x) = h(f(n,x),n,x) es recursiva primitiva. Funciones Parcialmente Recursivas • Operador de búsqueda mínimo y{f(x,y)=0}=z si: f(x,z) = 0 y para todo y<z se tiene que f(x,y) esta definido y f(x,y)>0 • La clase de funciones parcialmente recursivas es la menor clase conteniendo la función cero, sucesor y proyección que es cerrada bajo composición, recursión primitiva y operador de búsqueda mínimo . Lambda Cálculo Reglas de reemplazo: M ::= x | ( M M ) | ( x M ), donde x : es obtenido de una clase de identificadores sintácticos primitivos. La expresión ( M N ) es llamada una aplicación de la función M al argumento N. La expresión ( x M ) es llamada una abstracción de una función, donde el cuerpo es M y el argumento es x Lambda Cálculo • Sustitución (xy)(xx) [N/x] = (Ny)(NN) • Reducción (xM)N M[N/x] La función f(x) = x+5 se puede escribir (abusando de la notación) en lambda calculo como ( x x+5) El término ( x x+5)(4) se reduciría 4+5 Tesis Church-Turing • Todo procedimiento efectivo puede ser realizado por una maquina de Turing • ¿ tesis o definición? • Existe una forma de pasar de todo otro modelo a una maquina de Turing y visceversa Bibliografía • Mathematical Theory of Computation. Zohar Manna • Wulf W., Shaw M., Hilfinger P., y Flon L., “Fundamental Structures of Computer Science”, Addison Wesley, 1981. • Models of Masive Parallelism. Max Garzón • Memorias Primer Congreso de Neurocomputación. Universidad Nacional. 1995 • Computabily. Richard Epstein • Aventuras Informáticas. A K. Dewdney • Cursillo Básico de Redes Neuronales. Fabio González y Jonatan Gómez. Universidad Nacional. 1998 • Computing with DNA. Leonard Adleman. Scientific American. Agosto 1998. Pag 34-41. • Semantics of Programming Languajes. Carl A. Gunter • Algorithmics. David Harel