MODELOS DE COMPUTACION

Anuncio
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
Descargar