Você está na página 1de 22

1

Introduccin

_________________________________________________________________________

1.1 Breve historia de la Computacin


El desarrollo formal de la teora de la computacin se origin casi cincuenta aos antes de
que apareciera el primer ordenador digital, el ENIAC (1945) diseado por John Eckert y
John Mauchly (con objeto de calcular trayectorias balsticas). Sus races se encuentran en
los trabajos de Hilbert, Gdel, Rosser, Kleene, Church, Turing y Post, sobre la potencia del
razonamiento matemtico con respecto a un problema computacional, propuesto por el
alemn David Hilbert, hace ms de 90 aos. Este problema, llamado el Problema de
Decisin (Entscheidungsproblem), se puede establecer de una manera informal:

Dada una representacin formal de una afirmacin


(enunciado) matemtica, disear un algoritmo
(programa) que determine si la afirmacin es
verdadera (teorema) o falsa (no vlida lgicamente).

David Hilbert (1862-1943)

Si tal programa existe, cualquier conjetura se puede probar o refutar expresndola


formalmente y construyendo mecnicamente una demostracin, de manera que todo el
razonamiento matemtico se basa en un fundamento lgico, donde todos los enunciados
(afirmaciones) ciertos son demostrables (al igual que los falsos) y cada afirmacin es
verdadera o falsa. As cualquier teora matemtica estara formada por un conjunto de
axiomas y un conjunto de reglas de inferencia que permiten generar enunciados vlidos
adicionales a partir de enunciados vlidos dados. La verdad de cada axioma se admite a
priori.
Dicho programa se puede escribir si se puede encontrar un conjunto de axiomas que:
sean lo suficientemente potentes para permitir que se pueda probar cualquier
enunciado verdadero, y que
no admitan contradicciones, es decir, que una afirmacin y su negacin no puedan ser
ciertas al mismo tiempo.

En 1931, el matemtico austriaco Kurt Gdel publica su famoso teorema de


incompletitud que establece que no puede existir un conjunto de axiomas con las dos
propiedades anteriores y, por lo tanto, el programa anterior no se podr escribir. Ms
concretamente:

"Ningn sistema de razonamiento matemtico es lo


suficientemente potente para ser capaz de probar toda
afirmacin cierta acerca de las propiedades de los
nmeros naturales".

Kart Gdel (1906-1978)

La Teora de la Computabilidad se ocupa de construir un formalismo matemtico para


razonar sobre la existencia o no existencia de algoritmos efectivos para problemas
particulares. Los resultados que se prueben dentro de esta teora deben ser aplicables a
todas las arquitecturas de ordenadores, independientemente de sus parmetros, como
pueden ser la velocidad del procesador o el tamao de la memoria. Para ello tiene como
base el concepto de modelo de computacin. Ejemplos de modelos de computacin son las
mquinas de Turing, las mquinas RAM, las mquinas de Post y los algoritmos de Markov.
Por lo tanto, necesitamos saber qu entendemos por algoritmo efectivo y por problema.
Aunque el desarrollo formal de la teora de la computabilidad se realiza en el siglo XX, sin
embargo la bsqueda de algoritmos efectivos para resolver ciertos problemas se viene
realizando desde hace ms de 2000 aos. Los matemticos griegos, como se comprueba en
los trabajos de Euclides y Pitgoras, pusieron gran nfasis en las tcnicas constructivas.
As, en geometra se plantearon algunos problemas que dejaron sin resolver y que han
constituido materia de investigacin durante mucho tiempo, como:
El problema de la cuadratura del circulo:
"Dado un circulo, construir un cuadrado con la misma rea utilizando regla y comps"
El problema de la triseccin de un ngulo:
"Dividir un ngulo dado en tres partes iguales mediante regla y un comps".
El problema de la duplicacin del cubo:
"Dado un cubo, construir otro con exactamente el doble de volumen que el original,
utilizando regla y comps".
En este contexto, un algoritmo efectivo ser aquel que emplee en sus pasos de
computacin slo regla y comps. Sin embargo, hoy se sabe que ninguno de estos

problemas tiene solucin. Por lo tanto, no existe un mtodo de construccin apropiado y as


no pueden existir tales algoritmos.
La longitud de cualquier segmento construido usando regla y comps se puede escribir
como una expresin en la que intervienen los nmeros naturales y las operaciones +, , y
.
La duplicacin del cubo es imposible pues se precisa construir un segmento de longitud
1/3
2
(Descartes, 1637).
La triseccin del ngulo requiere construir lneas cuyas longitudes vienen dadas por las
races de un polinomio cbico. Para ciertos ngulos, como los de 60 estas longitudes no
son expresables en la forma requerida (Descartes, 1637).
Lindemann prob en 1882 que el nmero es trascendente y como cualquier solucin
deber construir un segmento de longitud , no existe un algoritmo vlido para su
construccin.
En un programa de ordenador se genera una salida utilizando la entrada leda. As,
cualquier programa se puede considerar como un evaluador de una funcin, f, que aplica
algn dominio de valores de entrada, I, en algn rango de valores de salida, O. Por ejemplo,
con un compilador de un lenguaje de programacin de alto nivel, I={ficheros de caracteres}
y O={ficheros binarios}.
La cuestin que surge ahora es:
Qu problemas se pueden resolver con programas de ordenador?
Tambin se puede formular de forma equivalente:
Qu funciones se pueden computar?
Para establecer una formulacin rigurosa de lo que entendemos por algoritmo efectivo
y por problema necesitamos dar los siguientes conceptos:
Un alfabeto es cualquier conjunto finito no vaco, ; un smbolo (o letra) es un
elemento del alfabeto; una palabra es una secuencia o cadena finita de smbolos de y la
longitud de una palabra x de *es el nmero de smbolos que la forman.
Dos palabras x e y de * sern iguales si y slo si tienen todos los trminos iguales; esto
es, si y slo si tienen las mismas letras en las mismas posiciones.
El conjunto infinito de todas las palabras que se pueden formar con smbolos de se
representa por *:
* = { n , n = 1, 2,3,...}

donde n es el conjunto de todas las palabras de longitud n que se pueden formar con los
elementos del alfabeto.
En el conjunto * de las palabras del alfabeto se define una operacin llamada
concatenacin de palabras de la manera siguiente:
Dadas las palabras x = a1a2...an e y = b1b2...bm, la concatenacin es la palabra
xy = a1a2...anb1b2...bm
El conjunto * no tiene elemento neutro con respecto a la operacin de concatenacin, a
menos que se introduzca por definicin. Podemos suponer que * contiene una palabra e
(palabra vaca) que no contiene smbolos.
Llamaremos lenguaje sobre un alfabeto a cualquier subconjunto L de *.
Cualquier orden entre los smbolos de induce un orden entre las palabras de n de la
siguiente manera:
1. Para cada n, las palabras de longitud n preceden a las palabras de longitud n+1.
2. Para las palabras de igual longitud se establece el orden alfabtico.
A este orden se le llama orden lexicogrfico. Como consecuencia de este orden podemos
enumerar todas las palabras del lenguaje. Es decir, cualquier lenguaje sobre es un
conjunto numerable.
Tambin podemos establecer funciones f : 1* 2*, donde
alfabetos.

1 y 2 son dos

Un problema de decisin es una funcin cuyo resultado es 0 1 (falso o verdadero).


Por lo tanto, todas las funciones
f : 1* {0,1}
son problemas de decisin sobre .
En los problemas de decisin se trata de determinar si alguna propiedad de la entrada es
cierta o no.
Ejemplo: Problema de decisin de la paridad de un nmero natural expresado en base dos.
El alfabeto es el conjunto {0,1} y cada palabra corresponde a un nmero natural
expresado en base dos. En este caso f(x) vale 1 si x corresponde a un nmero par, es decir,
si la palabra x termina con el smbolo 0. As, f(010110) = 1 y f(11001) = 0.
Dado cualquier problema de decisin, f : * {0,1}, el conjunto * queda dividido
en dos conjuntos disjuntos:
L(f) = { x * : f(x) = 1 },

que es el lenguaje correspondiente a f; y * L(f) que es el lenguaje complementario de


L(f).
Ejemplo:
El lenguaje correspondiente al problema de decisin de la paridad es:
L(f) = {0, 00, 10, 000, 010, 100, 110,....}
Hemos sustituido la idea vaga de resolucin del problema por el concepto preciso de
determinar si una palabra de entrada dada es un elemento de un conjunto particular de
palabras.
As, determinar si un nmero natural escrito en binario es par es equivalente a decidir si
dicho nmero se encuentra en el conjunto
{0, 00, 10, 000, 010, 100, 110,....}
Los modelos formales de computacin que vamos a estudiar nos suministran un
conjunto de operaciones bsicas para manipular los datos de entrada y obtener los datos de
salida. As, en un modelo de computacin cualquiera, un algoritmo efectivo, para un
problema de decisin dado, f, es una secuencia de operaciones (permitidas) que determina
si una palabra cualquiera x est (o no) en L(f). Se dir que tal algoritmo (programa)
reconoce el lenguaje L(f).
La Teora de la Computabilidad se ocupa de dividir el universo de todos los lenguajes
*
sobre , en aquellos lenguajes que pueden ser reconocidos por algoritmos efectivos y los
que no. Ello conduce a las funciones no computables, es decir, a los problemas no
resolubles.
Vamos a recordar algunos modelos clsicos (mquinas) de computacin, como las
mquinas de Turing (determinstica y no determinsticas) y los autmatas celulares que
conducen a diferentes formalizaciones del concepto de algoritmo, todas ellas equivalentes
(equivalentes tambin a otras formalizaciones ideadas por Kleene, Church, Post, etc.). Esta
equivalencia refuerza la Tesis de Church-Turing que afirma:

la clase de problemas que se pueden resolver


utilizando el sistema de programacin de Turing es
exactamente el mismo que los que se pueden resolver
utilizando cualquier sistema de programacin
razonable
Alan Turing ( 1912-1954)

1.2 Elementos de un modelo de computacin


Intuitivamente, podemos decir que la computacin es la capacidad o habilidad de
especificar una secuencia de acciones que conducirn a un resultado. Pero hay que precisar
lo que entendemos por acciones, y para ello tenemos que definir un modelo de
computacin, que ser un sistema formal que permita expresar, sin ambigedad, las
acciones que se van a realizar.
Los matemticos dedicados a la lgica han desarrollado muchos modelos de
computacin: mquinas de Turing, mquinas RAM, algoritmos de Markov, mquina de
Post, las funciones recursivas generales, etc., todos ellos llamados modelos de computacin
no restringidos.
Se han realizado muchos esfuerzos para conseguir un modelo de computacin ms
potente que los mencionados anteriormente, pero no se han conseguido resultados, ni
siquiera se ha probado que no puedan existir. Aunque las redes de neuronas artificiales
resuelven el problema de la parada, que no resuelve la mquina de Turing, pero para ello
requieren un nmero ilimitado de unidades de proceso. Nosotros defendemos la conjetura
de la tesis de Church que establece que todos los problemas "resolubles" se pueden resolver
mediante cualquiera de los modelos de computacin no restringidos. Esta conjetura ha
resistido todos los ataques durante ms de 50 aos. Nosotros estudiaremos un modelo
especfico llamado la Mquina de Turing que nos permitir introducir de forma precisa el
concepto de funcin computable. Posteriormente, analizaremos algunos modelos de
computacin celular.
Un modelo computacional es una representacin abstracta de un sistema que realiza
cierta actividad de clculo o computacin (operaciones aritmticas y lgicas). Al sistema lo
llamaremos modelo de mquina.
Los ordenadores modernos suelen tener tres componentes principales:
- La unidad de procesamiento central (procesador central) que realiza operaciones
aritmticas y decisiones (controles) lgicas sobre datos particulares.
- La unidad de almacenamiento (memoria) que permite almacenar la informacin y
recuperarla cuando se desee (discos, cintas, semiconductores, etc.). La caracterstica
comn es su gran capacidad para almacenar informacin. Por ello, se le suele llamar
memoria auxiliar, para distinguirla de la memoria que forma parte del procesador central
que tiene una capacidad de almacenamiento muy limitada.
- Los dispositivos de entrada y salida que son los medios con los que se recibe la
informacin y se comunica al exterior la nueva informacin originada (terminales,
impresoras, pantallas, etc.).
Un modelo de mquina M es una clase de dispositivos Mi (i1), llamados mquinas, y
estructurados similarmente, que se pueden describir como objetos matemticos en el

lenguaje de la teora de conjuntos. Estos objetos matemticos vienen definidos por n-uplas
de conjuntos finitos. As, veremos que la mquina de Turing viene definida por una
sxtupla formado por tres conjuntos finitos, una funcin de transicin y dos elementos de
estos conjuntos.
En estas definiciones de mquinas es comn la presencia de un objeto finito, llamado
programa o control finito (algunas veces referido a la nocin de procesador para la
ejecucin de un programa) que opera sobre una estructura llamada memoria, que puede ser
ilimitada. En cada instante de tiempo el control finito est en un estado particular, siendo
finito el nmero de estados posibles. La memoria se puede contemplar como un almacn de
piezas de informacin compuestas por smbolos de uno o ms conjuntos finitos llamados
alfabetos (recordemos que un alfabeto es un conjunto finito no vaco, , y un smbolo es
un elemento de un alfabeto.
La memoria siempre viene representada por una estructura regular de celdas, casillas o
cuadrados donde se almacena la informacin. Las estructuras de memoria suelen ser
lineales y discretas (como una cinta dividida en trozos iguales donde se escriben los
smbolos del alfabeto) o estructuradas en retculos (cuadrculas) o en rboles. La memoria
se supone infinita, aunque slo una parte finita de la memoria se utilizar en cada
computacin.
En general, se pueden distinguir dos secciones en la memoria: la seccin de entrada
donde la informacin se recoge leyendo un smbolo cada vez; y la seccin de salida
mediante la cual se comunica un smbolo, cada vez, al mundo exterior. El programa
comunica las secciones de entrada y salida mediante canales explcitos que pueden
examinar las secciones de la manera programada. Algunas mquinas, como la mquina de
Turing, no tiene separadas las secciones de entrada y salida, pues la entrada se almacena en
la cinta (memoria) al comienzo de la computacin y el resultado se recupera de la cinta
cuando termina la computacin.
Para formalizar el concepto de computacin vamos a dar el concepto de configuracin
de la mquina. Una configuracin de la mquina es una descripcin completa de los
estados de la mquina, incluyendo el estado completo de su memoria. Es decir, consta de
un indicador de la instruccin en curso del programa, de la estructura y contenido de la
parte finita de la memoria que ha participado en la computacin y el estado de las secciones
de entrada y salida de la memoria.
Ahora tenemos que definir la relacin de transicin entre dos configuraciones de la
mquina. As, diremos que la configuracin C2 se obtiene por una transicin desde la
configuracin C1, que representaremos por C1 C2 , si la instruccin correspondiente del
programa de C1 lleva la mquina a la configuracin C2.
Por lo tanto, una computacin (determinstica) es una sucesin de configuraciones,
conectadas por la relacin de transicin.

Vamos a distinguir entre mquinas determinsticas y mquinas no determinsticas. Una


mquina se dice determinstica si para cada configuracin C1 existe a lo sumo otra
configuracin C2 que le sucede en la relacin de transicin, C1 C2 ; y una mquina se
dice no determinstica si para cada configuracin C1 existen varias configuraciones que le
suceden.

Una configuracin inicial es aquella formada por un estado inicial del control finito,
una memoria que est en blanco salvo la parte que contiene a la seccin de entrada, una
seccin de salida vaca, y todos los canales del programa de conexin y la memoria se
inicializan en alguna posicin estndar. As, una entrada x determina la configuracin
inicial de la mquina, Ci(x). Cada una de las configuraciones que se obtienen por
computacin a partir de una configuracin inicial se dice que son alcanzables. Una
configuracin C se llama final cuando no existe otra configuracin que le sucede. Si el
estado del control finito en la configuracin final es uno de los estados especficos de
aceptacin, es decir, aquellos estados as definidos en la n-upla que describe la mquina,
entonces la configuracin final se llama configuracin de aceptacin; si no, se le llama
configuracin de rechazo.
Una computacin completa (determinstica) de la mquina M sobre una entrada x, que
representaremos por T(x), es una secuencia de configuraciones que comienza en una
configuracin inicial y que, si termina, termina en una configuracin final. As, una
computacin puede ser infinita (computacin divergente) o puede terminar en un estado
final.
Una mquina aceptadora es aquella que tiene dos estados finales, llamados estado de
aceptacin y estado de rechazo. Toda computacin finita de M debe parar en uno de estos
dos estados finales.
Una computacin se llama de aceptacin o de rechazo segn que la configuracin final
sea de aceptacin o de rechazo, respectivamente. Una entrada x es aceptada por una
mquina M si la computacin M(x) termina en un estado de aceptacin (configuracin final
de aceptacin). El conjunto de entradas aceptadas por la mquina M, se dice que es el
lenguaje aceptado o reconocido por M.
Una mquina traductora M es aquella que recibe una palabra de entrada, x, y produce
como salida otra palabra, y. Se usa para computar funciones. Dada una funcin f, una
mquina traductora M computa f si la computacin T(x) alcanza una configuracin final
que tiene como salida f(x). Obsrvese que una mquina M computa la relacin R(M)
determinada por todos los pares <x,y>, tales que existe una computacin de aceptacin que
empieza en la configuracin inicial, Ci(x), y termina en una configuracin C donde y es el
contenido de la memoria de salida.
Un modelo de mquina secuencial viene constituido por una unidad de control
conectada a la memorias por varios canales y que ejecuta slo una instruccin cada vez
(incluso en el caso no determinstico). Slo un smbolo, en cada instante de tiempo, se
comunica entre la seccin de entrada o salida de la memoria y el control finito.
8

Si un modelo de mquina tiene ms de un control finito, es decir, si el control finito es


reemplazado por un conjunto de programas o procesadores, que puede ser infinito, como
la memoria, pero en cada configuracin alcanzable, slo un nmero finito de procesadores
se activan en la computacin, entonces se puede conseguir un modelo de mquina
paralela. En estos modelos se requiere gran cantidad de memoria (memoria compartida)
adems de la memoria local propia de cada procesador. Asimismo, cada procesador tiene
sus canales privados para interactuar con la memoria y los procesadores se pueden
comunicar directamente entre s (mediante una red de interconexin) o a travs de la
memoria compartida. As, los procesadores en los modelos paralelos pueden intercambiar
informacin directamente por los canales de comunicacin sin usar memoria pasiva
intermedia. Las transiciones en las mquinas paralelas son el resultado combinado de las
transiciones dentro de los procesadores activos:
a) Una transicin global se puede obtener como el efecto acumulado de todas las
transiciones locales realizadas por los procesadores activos que operan al mismo tiempo
(computacin sincronizada o sncrona).
b) Alternativamente, una transicin global se puede obtener cuando los procesadores
operan cada uno a su propia velocidad de una forma no vinculada a los dems
(computacin asncrona).
En ambos casos los procesadores pueden interferir unos con otros cuando actan sobre
la memoria compartida. Eso ocurre, por ejemplo, cuando dos procesadores quieren leer o
escribir en la misma parte de la memoria. Cada modelo especfico determina como hay que
actuar para resolver este conflicto.

1.3 Modelos de Computacin: de la Computabilidad Clsica a


las Redes Neuronales
La mayora de los ordenadores actuales tienen tres componentes citadas: la unidad central
de proceso (CPU), la memoria y dispositivos de entrada y salida. La unidad central de
proceso se ocupa de realizar las computaciones aritmticas y las decisiones lgicas a partir
de los datos de entrada. La memoria es el dispositivo encargado de guardar informacin,
debe tener una capacidad suficiente para recoger toda la informacin generada por la CPU,
y los dispositivos de entrada y salida son los medios para recoger la informacin generada y
comunicarla al mundo exterior, como puede se una pantalla o una impresora.

1.3.1 La computabilidad clsica


La teora clsica de la Computabilidad trata de determinar qu problemas algortmicos se
pueden resolver por ordenador en condiciones ideales de disposicin ilimitada de memoria
y tiempo. Las mquinas de Turing han sido aceptadas como modelos estndar para el

estudio de la computabilidad durante ms de medio siglo. Comenzaremos analizando el


modelo ms simple de mquinas de estados finitos.
Las mquinas de estados finitos fueron introducidas formalmente por Rabin y Scott (1959).
Una mquina de estados finitos consta de un dispositivo memoria primitiva representado
por una coleccin finita de estados y de una funcin de transicin que actualiza el estado
actual como una funcin del estado previo y de la entrada en curso. Se supone que toda la
informacin viene codificada por cadenas de smbolos (caracteres) de un alfabeto fijo, que
constituyen la entrada a la mquina. Una formalizacin sencilla de una mquina de estados
finitos es el autmata finito.
Un autmata finito determinstico es una quntupla M = (K, , , s, F), en la que
K
es un conjunto finito de estados

es un alfabeto
sK es el estado inicial
FK es el conjunto de estados finales
es una funcin de K en K, llamada funcin de transicin.
Un autmata finito determinstico funciona de la siguiente manera: la informacin que
recibe la mquina viene codificada en smbolos de un alfabeto que se escriben en una cinta
de entrada divida en cuadrados (en nmero ilimitado) y se escribe un smbolo en cada
cuadrado (casilla). La parte principal de la mquina es una caja negra, llamada unidad
de control finito, que presenta, en cada momento especfico, un estado concreto del
conjunto de estados posibles K. La unidad de control finito puede conocer el smbolo
escrito en la casilla correspondiente de la cinta de entrada mediante una cabeza de lectura
movible. Inicialmente, la cabeza grabadora se coloca al comienzo de la cinta y la unidad de
control finito se encuentra en el estado inicial. A continuacin el autmata lee el smbolo de
la primera casilla y la unidad de control finito pasa a un nuevo estado que viene
especificado por su funcin de transicin; el nuevo estado depende del estado previo y del
smbolo ledo. Entonces la cabeza de lectura se mueve una casilla a la derecha y lee el
smbolo escrito en dicha casilla. Este proceso se va repitiendo a intervalos regulares, se lee
un smbolo, la unidad de control finito actualiza su estado y la cabeza de lectura pasa a la
casilla siguiente, as sucesivamente hasta que la cabeza de lectura llega al final de la cadena
de smbolo escritos en la cinta de entrada. El autmata acepta (aprueba), o no (desaprueba),
la cadena de smbolos de entrada (palabra) segn que el estado que presenta la unidad de
control finito sea, o no, un estado del conjunto final de estados F. El conjunto de palabras
(cadenas de smbolos) que acepta un autmata finito determinstico constituye el lenguaje
aceptado por la mquina.
Ahora surge la siguiente cuestin: qu propiedades tienen los lenguajes aceptados por un
autmata finito determinista? Se puede demostrar que son cerrados bajos las siguientes
operaciones unin, interseccin, complementacin, concatenacin y la operacin estrella de
Kleene. Por otra parte, la clase de los lenguajes regulares (o conjuntos regulares) sobre un
alfabeto es el conjunto minimal de lenguajes que contienen a , a todos los conjuntos
formados por un solo smbolo, {a}, para a, y son cerrados bajo las operaciones de

10

unin, concatenacin y estrella de Kleene. As, un resultado importante (ver Lewis y


Papadimitriou) es que un lenguaje es regular siempre y cuando sea aceptado por un
autmata finito.
Una posible generalizacin de los autmatas finitos determinsticos es sustituir la funcin
de transicin por una relacin de transicin que es un subconjunto finito de *,
donde * es el conjunto de todas las cadenas finitas que se pueden formar con smbolos del
alfabeto , incluyendo la cadena vaca. Es decir, ahora se permiten varios estados
siguientes para un smbolo de entrada dado y un estado previo de la unidad de control. A
este tipo de mquinas se le llama autmatas finitos no deterministas. Sin embargo, estas
maquinas son equivalentes a los autmatas finitos determinsticos, es decir, aceptan los
mismos lenguajes. Adems, para cada autmata finito no deterministico se puede construir
un autmata finito determinstico equivalente.
Sin embargo, los autmatas finitos determinsticos no se pueden considerar como modelos
verdaderamente generales para el diseo de computadores puesto que no son capaces de
reconocer lenguajes tan simples como L = { anbncn: nZ+ }. Por ello, es necesario
introducir nuevos mecanismos que puedan reconocer estos lenguajes y lenguajes mucho
ms complicados. Uno de estos dispositivos ms potentes es la mquina de Turing que fue
ideada por Alan Turing (1912-1954). La mquina de Turing consta de una unidad de
control finito, de una cinta y de una cabeza grabadora que puede usarse para leer o para
escribir sobre la cinta. Una mquina de Turing no determinstica es una cudrupla M =
(K, , , s), en la que
K
es un conjunto finito de estados, que no contiene al estado de parada h.

es un alfabeto que contiene el smbolo blanco #, pero no contiene los smbolos


L y R.
sK es el estado inicial
es una funcin de K en (K{h})({L,R}) , llamada funcin de
transicin.
La mquina de Turing funciona de la siguiente manera:
1. La informacin de entrada viene constituida por un conjunto de smbolos de
entrada colocados al comienzo de la cinta, uno por casilla, y las dems casillas
tienen inicialmente el smbolo blanco. La mquina puede ir alterando sus
entradas escribiendo sobre ellas nuevos smbolos y escribiendo smbolos sobre
las dems casillas que contienen smbolos blancos. La mquina podr tambin
escribir la respuesta sobre la cinta y leerla al final de la computacin y as no
necesita un conjunto de estados finales.
2. La unidad de control opera a intervalos regulares, es decir, en pasos discretos; en
cada paso realiza dos funciones, dependiendo del smbolo ledo en la cinta y de
su estado actual, pasa a un nuevo estado especificado por su funcin de
transicin, y escribe un smbolo en el cuadrado de la cinta donde est situada la
cabeza grabadora o mueve la cabeza grabadora a la casilla de la izquierda (L) o a
la casilla de la derecha (R).
3. La mquina se parar solamente cuando alcanza el estado de parada o intenta
moverse a la izquierda del comienzo de la cinta.

11

Para estudiar si una funcin es o no computable, utilizaremos la mquina de Turing.


Consideremos dos alfabetos o y 1 y una f definida de *0 a 1* . Un mquina de
Turing, M = (K, , , s), se dice que computa la funcin f si o, 1 y para cualquier
entrada w *0 la mquina se para y en las celdas de salida escribe la cadena de smbolos u,
siendo f(w)=u. Si existe una mquina de Turing que computa la funcin f se dice que f es
computable segn Turing.
Si o es un alfabeto que no contiene el smbolo blanco, ni los smbolos fijos Y y N, entonces
diremos que un lenguaje L *0 es decidible segn Turing si la funcin indicador
f L : *0 {Y , N }
definida por la expresin:
Y si w L
f L ( w) =
N si w L
es computable segn Turing. Tambin se dice que M decide L o que M es un procedimiento
de decisin para L.
Tambin una mquina de Turing se puede utilizar como un aceptador de lenguajes. Si o es
un alfabeto que no contiene el smbolo blanco, diremos que una maquina de Turing M
acepta una palabra w *0 si M se para con dicha palabra. Asimismo, diremos que M
acepta el lenguaje L *0 si y slo si L={ w *0 : M acepta w } .
Ahora surge la pregunta cul es la clase de las funciones computables segn Turing? la
respuesta est clara, es la clase de las funciones -recursivas.
Una posible generalizacin de la mquina de Turing es la mquina de Turing no
determinstica, en la que se sustituye la funcin de transicin por una relacin de
transicin que asigna varios estados posibles a la unidad de control para un mismo smbolo
de entrada ledo y un mismo estado previo. Sin embargo, se demuestra que cualquier
lenguaje aceptado por una mquina de Turing no determinstica es aceptado tambin por
una cierta mquina de Turing deterministica.
Por otra parte, si las palabras (cadenas de smbolos) se utilizan para representar lenguajes,
no podemos representar a todos los lenguajes, puesto que slo disponemos de un conjunto
numerables de palabras para cada lenguaje y sin embargo hay lenguajes no numerables.
Las mquinas de estados finitos son objetos que se puede utilizar para especificar lenguajes.
Sin embargo, con ellas slo conseguimos especificar, es decir, decidir o aceptar, un
conjunto muy reducido de los lenguajes posibles.
Hay problemas acerca de las mquinas de Turing que no admiten solucin algortmica del
tipo Turing. Si D es un diccionario infinito que da respuesta a cada cuestin del tipo:

12

acepta (es decir, consigue parar) la mquina de Turing M la entrada w? No hay mquinas
de Turing que decidan dicho lenguaje D. A este problema se le conoce con el nombre de
problema de la parada para mquinas de Turing y consiste en determinar, para una
mquina de Turing arbitraria M y una entrada dada w, si M parar alguna vez partiendo de
dicha entrada.
Tambin se han propuesto otras mquinas diferentes a la de Turing, como las mquinas
RAM (memorias de registros direccionables), los algoritmos de Markov, los sistemas de
Post, las gramticas formales de Chomsky, etc. Todas ellas son equivalentes
computacionalmente a la mquina de Turing. Ello nos lleva a la tesis de Church-Turing:
Cualquier algoritmo se puede implementar en una mquina de Turing.
Sin embargo, a continuacin vamos a ver que el problema de la parada es resoluble
neuronalmente.

1.3.2 Computacin sobre grafos: Redes de autmatas, autmatas


celulares y RNA.
Una red de autmatas consiste en un conjunto de elementos de proceso, que van a ser
mquinas de estados finitos, localizados en los vrtices de un digrafo (grafo dirigido), uno
en cada vrtice. Cada elemento de proceso recibe su entrada de las unidades vecinas y
comunica su salida a sus unidades vecinas. Formalmente, una red de autmatas es un par
A= C , {M i } constituido por un espacio celular C=(G,{Qi}), y una familia de mquinas de
estados finitos Mi (slo un nmero finito de ellas pueden ser distintas) con alfabeto de
entrada i = Qi ... Qi y funcin de transicin local
1

di

i : Qii Qi
que aplica ( xi , xi1 ,..., xid ) en i ( xi , xi1 ,..., xid ) , donde i1 ,..., i di son los nodos (vrtices) conectados
i

con el nodo i. El espacio celular C est formado por un dgrafo G numerable, pero
localmente finito, es decir, slo un nmero finito de arcos entran o salen de cada vrtice,
cuyos vrtices se llaman clulas o nodos, y por una familia de subconjuntos finitos Qi de un
conjunto Q que nos dan los estados o niveles de activacin posibles de cada clula i (todos
contiene el estado inactivo 0).
Una red de autmatas opera localmente de la siguiente manera: Una copia de una mquina
de estados finitos Mi, llamada elemento de proceso, ocupa cada vrtice i del grafo G, que es
por ello llamado clula o nodo. Cada copia Mi recibe como entrada los estados que
presentan las clulas vecinas y su propio estado y entonces actualiza su estado segn la
dinmica local establecida por su funcin de transicin i. La red repite esta actualizacin
de los estados de sus clulas repetidas veces.
Una red neuronal (discreta) es una red de autmatas donde cada una de sus clulas
actualiza sus estados aplicando una funcin de activacin a una suma ponderada de las
entradas (estados) que recibe de las clulas vecinas. En una red neuronal,

13

cada arco (i,j) del dgrafo que conecta el vrtice i con el vrtice j tiene asociado un
peso wij, llamado peso sinptico;
la entrada neta de cada unidad celular viene dada por una suma ponderada de los
estados que presentan las unidades celulares vecinas y as el nuevo estado de la
unidad celular i;
La actualizacin de los estados se realiza segn una funcin de activacin fi ,
fi : A A

que verifica que fi(0)=0 (para evitar generacin espontnea de la activacin), siendo A el
conjunto de estados (niveles de activacin) que pueden tomar las unidades celulares. As, el
nuevo estado de la unidad celular i, en el tiempo t+1, viene dado por la expresin:

x i (t + 1) = f i wij x j (t )

(1)

Formalmente, una red neuronal (discreta) es un tripleta N=A,G,{fi} constituida por un


conjunto A de estados posibles finito (valores de activacin), que admite una estructura
aditivo-multiplicativa (permite la suma de estados ponderados), un dgrafo numerable G,
pero localmente finito, y una familia de funciones de activacin, {fi}, una funcin de
activacin para cada unidad celular. La dinmica local de computacin de la red viene dada
por la expresin (1).
Un autmata celular es una red de autmatas definida sobre un grafo regular con una
mquina de estados finita idntica para cada unidad celular. Generalmente, los autmatas
celulares estn definidos sobre retculos (enrejados) Eucldeos, de una o dos dimensiones
(ver la figura 1.3.2), que forman un grafo homogneo y sobre cuyos puntos enteros se
colocan las unidades celulares. Las conexiones entre vrtices son los ejes de la rejilla.
Formalmente, un autmata celular es una tripleta C,N,M constituida por un espacio
celular C =(,Q) construido sobre un grafo de Cayley, , un conjunto finito N de vrtices
de , una copia de una mquina de estados finitos M en cada vrtice i con alfabeto de
entrada Qd =Q...Q (d veces) y una funcin de transicin local

: QQd Q
( xi , xi1 ,..., xid ) ( xi , xi1 ,..., xid ) Q
donde N = {i1,...,id} es el conjunto de vrtices vecinos. La dinmica global de un autmata
celular viene definida por la siguiente expresin:
T ( xi ) = ( xi , xi1 ,..., xid ) .
Garzon y Franklin (1989) demostraron que cada autmata celular es una red neuronal.
Adems, demostraron que el problema de la parada de una mquina de Turing es resoluble
mediante una red neuronal. Este resultado puede parecer un poco sorprendente y puede

14

creerse que constituye un contraejemplo para la tesis de Churh-Turing, pero no es as, ya


que dicha tesis se refiere a la resolucin algortmica de problemas por medios finitos,
mientras que la red neuronal que se emplea en la demostracin requiere la utilizacin de un
objeto infinito (el dgrafo G). Sin embargo, aunque utiliza un conjunto infinito de unidades
celulares, ellas operan sobre estados finitos.
Asimismo, hay en la literatura varias implementaciones diferentes de una mquina de
Turing mediante redes neuronales. Por otra parte, si nos limitamos a redes neuronales
acotadas, es decir, con un nmero finito de unidades celulares y de valores de activacin,
stas se pueden modelar mediante un autmata finito M, pensando en las configuraciones
como el conjuntos de estados del autmata finito. La funcin de transicin de M vendr
determinada por el procedimiento de actualizacin de la red neuronal. As, las redes
neuronales finitas son equivalentes computacionalmente a los autmatas finitos.
Finalmente, nos preguntamos si hay problemas que no sean resolubles por redes neuronales
infinitas. Un problema no resoluble por redes neuronales infinitas es el problema de la
estabilidad (Garzon y Flanklin, 1989). Una cuestin todava en estudio es ver qu se puede
computar con redes neuronales discretas definen un nuevo dominio de computabilidad
diferente al de los modelos clsicos?

1.4 La computacin celular


La arquitectura de von Neumann, basada en el principio de un procesador complejo que
realiza una tarea en cada momento, ha dominado la tecnologa de la computacin en los
ltimos 50 aos. Sin embargo, una nueva forma de computacin est emergiendo basada en
principios completamente diferentes, que podemos llamar Computacin Celular. Este
nuevo paradigma computacional suministra nuevas formas de hacer la computacin ms
eficiente (en trminos de velocidad, coste, disipacin, almacenamiento y calidad de la
solucin) para tratar grandes problemas en dominios de aplicacin especficos.
La computacin celular se basa en tres principios:
Simplicidad
Paralelismo inmenso
Localidad
von Neumann

La Computacin Celular utiliza unidades de proceso simples que por s solas pueden hacer
muy pocas cosas, frente a un procesador de propsito general que realiza tareas muy
complicadas. As, la unidad de proceso de una red neuronal es sencilla y no lo es un
procesador Pentium IV.
Por otra parte, frente al paralelismo masivo que usa cientos de procesadores, la
computacin celular utiliza millones de unidades de proceso, que generalmente se expresan
en forma exponencial, 10n.
15

Computacin Celular
Computacin Distribuida

Parcialmente Conectada
paralela

local
serie

global

Arquitectura Convencional
Complejidad

Mquinas de Estados Finitos


Simplicidad

Figura 1.3.1. Cubo de representacin de los tipos de computacin.

La Computacin Celular viene tambin caracterizada por la conectividad local de las


unidades de proceso de manera que cada unidad de proceso slo se comunica con un
reducido nmero de unidades de proceso ms o menos cercanas a ella. Adems, las lneas
de conexin son portadoras de una pequea cantidad de informacin. El principio de
localidad conlleva que ninguna unidad de proceso tenga una visin global del sistema; no
hay un controlador central.
Por lo tanto, podemos decir esquemticamente que (ver la figura 1.3.1):

Computacin Celular = Simplicidad + Paralelismo inmenso + Localidad


Algunos modelos de computacin celular son:
a) Los autmatas celulares, que fueron concebidos a finales de los aos 40 por
Stanislaw Ulam y Jonh von Neumann. Constan de un conjunto de unidades de
proceso, llamadas clulas, colocadas sobre los nodos de una rejilla, cada una de las
cuales puede presentar un estado de un conjunto finito de estados posibles. El estado
que presentan dichas unidades se actualiza en pasos discretos segn una cierta regla
de interaccin (funcin de transicin) que depende del estado que presentan en ese
momento las unidades de proceso vecinas. Desde el principio, los autmatas
celulares se han utilizado como modelos formales en la fsica, la biologa y la
informtica.

16

b) Las redes neuronales celulares, constituidas por un conjunto de unidades de


proceso, llamadas neuronas, cuyos valores posibles pueden ser discretos o continuos
y el valor que presenta cada unidad neuronal viene dado por una funcin que
depende de una combinacin lineal de los estados de las unidades vecinas. Se puede
aplicar, por ejemplo, en anlisis de imgenes para extraer el contorno de los objetos
para su posterior reconocimiento e identificacin.
c) La computacin ADN, que utiliza unidades moleculares (ADN) y esta inspirada en
la biologa molecular. Aunque las unidades moleculares no son demasiado simples
pues pueden exhibir un comportamiento biolgico complejo, sin embargo, se
pueden tratar como elementos simples, desde un punto de vista computacional, al
poder realizar slo unas cuantas operaciones bsicas en el tubo de ensayo. Para
encontrar el camino Hamiltoniano entre dos vrtices dados (un camino que pasa
slo una vez por cada vrtice), Adleman (1994) utiliz oligonucletidos, es decir,
cadenas cortas de hasta 20 nucletidos, para codificar los vrtices y la aristas de un
grafo dado. A continuacin, coloc mltiples copias de los oligonucletidos en un
tubo de ensayo; los oligonucletidos se enlazaban unos con otros formando
molculas que representan caminos del grafo. Aplic entonces procedimientos de la
biologa molecular para tamizar la pltora de soluciones moleculares ADN
candidatas. Es decir, encontrar si existe o no un camino Hamiltoniano. El tamao
enormemente pequeo de estas molculas permite un paralelismo inmenso sobre
una escala completamente nueva. Adems, sern ms rpidas, ms eficientes
energticamente y capaces de almacenar mucha ms informacin que los
ordenadores actuales.
d) Las estructuras autorreproductoras, que fueron estudiadas por von Neumann a
finales de los cuarenta. Chou y Reggia (1998) han usado bucles reproductores para
resolver el problema NP-completo de la satisfacibilidad que consiste en ver si
existe valores de verdad que hacen verdadero un predicado (literal). Cada bucle
representa a una posible solucin de factibilidad para el problema; cuando se
reproduce un bucle se obtiene un bucle hijo que representa a una solucin candidata
diferente, que a su vez se vuelve a reproducir. Bajo un forma de seleccin artificial,
las reproducciones que representa soluciones prometedoras proliferan y las que no
se eliminan.

1.4.1. Caractersticas de un sistema bsico de Computacin Celular


Los modelos de computacin celular son muy flexibles y se puede adaptar para la
realizacin de tareas especficas, segn las caractersticas de las unidades de proceso, que
llamaremos unidades celulares o simplemente clulas.

1.4.1.1 Tipos de clulas


Las clulas toman una valor de un conjunto de valores posibles, que puede ser discreto (en
cuyo caso el valor se llama estado) o continuo (analgico).

17

1.4.1.2 Comportamiento
El comportamiento dinmico de la clula viene determinado por una funcin de los
valores de sus clulas vecinas. Dicha funcin puede venir dada por alguna de las siguientes
formas:
Una enumeracin exhaustiva, utilizada para clulas discretas, donde el estado que
debe presentar cada clula, segn la configuracin de estados de la clulas vecinas,
viene recogido en una lista.
Una funcin parametrizada (lineal o no lineal) que describe el estado siguiente de
cada clula como una correspondencia con los estados de las clulas vecinas.
Un programa que computa el estado siguiente de cada clula segn los estados de
las clulas vecinas.
Una regla de conducta que especifica el comportamiento en diferentes situaciones.
Dicha regla puede estar inspirada en la biologa molecular o en la fsica cuntica.

1.4.1.2 Movilidad
Adems de cambiar sus valores, las clulas se puede cambiar tambin su situacin dentro
de un ambiente dado y, por lo tanto, pueden ser, o no, mviles.

1.4.1.3 Conectividad
La comunicacin entre clulas se realiza segn un esquema de conectividad especfico. As,
las clulas pueden estar colocadas sobre los vrtices de una rejilla regular con una
geometra dada, como puede ser rectangular, triangular, hexagonal, etc. En la rejilla
rectangular cada clula slo tiene 4 vecinas (figura 1.3.2). La regularidad quiere decir que
todas las clulas tienen que tener el mismo esquema de conexin. As, el esquema de
conectividad puede ser regular o irregular.

Figura 1.3.2. Clulas colocadas sobre una rejilla rectangular

Cuando la rejilla es finita tenemos que especificar las condiciones de las clulas que estn
en la frontera, por ejemplo, como neuronas que no cambian de estado con el tiempo.
Tambin podemos evitar tener clulas en la frontera utilizando superficies como el toro.
Asimismo, las clulas pueden constituir los vrtices de un grafo dirigido. Aunque se puede
considerar esquemas de conexin donde todas las clulas estn conectadas entre s, pero
este esquema cae fuera del mbito de la computacin celular.

18

1.4.1.4 Lneas de conexin


La conexin entre las unidades celulares es simple, es decir, la informacin transmitida por
ellas es pequea, generalmente slo se transmiten los valores de estado de las clulas
vecinas.

1.4.1.6 Topologa celular


El propio esquema de conectividad induce una topologa en las unidades celulares. Sin
embargo, en algunas formas de computacin celular las unidades celulares no estn
colocadas sobre rejillas o grafos sino que estn en un ambiente que provoca contactos a
causa del movimiento aleatorio o dirigido de las mismas, como ocurre en la computacin
ADN, donde no hay una topologa rgida. Esto mismo ocurre tambin en la computacin
basada en hormigas.

1.4.1.7 Dinmicas temporales


El sistema se va actualizando (cambiando, o no, de estados) con el tiempo, y cada
actualizacin se hace en cada instante o periodo de tiempo.
En una dinmica temporal sincronizada (paralela) se actualizan todas las clulas al mismo
tiempo (simultneamente) o un bloque especfico de las mismas, mientras que en la
computacin asncrona (secuencial) se actualiza slo una clula cada vez, siguiendo una
cierta secuencia, que puede ser aleatoria.
La actualizacin se puede hacer a intervalos regulares de tiempo, es decir, en trminos de
sucesos temporales discretos, y la llamaremos actualizacin discreta. Si no se hace ninguna
divisin discreta del tiempo, la actualizacin es instantnea, es decir, continua.

1.4.1.8 Uniformidad
Se dice que el sistema es uniforme si todas las clulas son del mismo tipo, es decir, son
idnticas y as ejecutan la misma funcin. Hay sistemas celulares no uniformes, donde
clulas diferentes ejecutan funciones de transicin diferentes. La no uniformidad puede ser
una ventaja computacional.

1.4.1.9 Determinismo frente al no determinismo


El sistema es determinstico si para una entrada dada el sistema siempre toma la misma
configuracin de estados, y por tanto, termina con la misma salida. En un sistema no
determinstico para una misma entrada podemos tener varias configuraciones de estados
posibles que conducirn, posiblemente, a salidas diferentes. Segn como sea la funcin de
transicin de la clula, podemos tener un sistema determinstico o no determinstico.

19

1.4.2 Comportamiento
Para ver el comportamiento de un sistema de computacin celular como un todo vamos a
analizarlo en diferentes facetas.

1.4.2.1 Programacin
La computacin celular requiere nueve tcnicas de programacin. Distinguiremos dos
tipos:
a) Programacin directa, donde el programador especifica completamente el sistema
en su conjunto de salidas. As, cuando el sistema recibe una entrada que es un
ejemplo o instancia del problema en consideracin, el sistema computa una salida
correcta.
b) Mtodos adaptativos, donde el programador no puede especificar completamente
todo el conjunto de salidas, sino slo parcialmente, y entonces recurre a procesos de
aprendizaje, evolucin o autoorganizacin para conseguir la funcionalidad deseada.
As, mtodos de aprendizaje y algoritmos evolutivos se ha aplicado a las redes
neuronales celulares para encontrar los parmetros de la funcin de transicin con el
fin de resolver algn problema dado. Los algoritmos evolutivos se han aplicado a la
computacin ADN para encontrar buenos cdigos de secuencias de nucletidos.

1.4.2.2 Entradas y salidas


Tenemos que especificar las entradas y salidas del sistema segn el problema que vayamos
a resolver y utilizar una representacin adecuada en el modelo celular. Adems, tenemos
que ver cmo se presentan las entradas a dicho modelo y como se leen las salidas.

1.4.2.3 Implementacin
Aunque la mayora de los experimentos en computacin celular se llevan a cabo en
ordenadores convencionales, el objetivo fundamental es la construccin de mquinas
basadas en unidades celulares para conseguir realmente la potencia de la computacin
celular. En estas el coste se deber fundamentalmente a las conexiones y no a las unidades
de proceso. Hasta la fecha se ha desarrollado varias implementaciones, por ejemplo:

Implementacin de autmatas celulares como hardware digital de propsito


general.
Implementacin de autmatas celulares usando procesadores configurables.
Un chip analgico de redes neuronales celulares.
Computacin molecular en tubos de prueba
Autmata celular de puntos cunticos donde los estados no se codifican como
voltajes, como con las arquitecturas digitales convencionales, sino por la
posiciones de electrones individuales.

En computacin celular no se disea un modelo terico y despus se implementa sino que


ambas cuestiones se deben considerar simultneamente.

20

1.4.2.4 Escalabilidad
La computacin celular permite una mayor escalabilidad que la computacin clsica debido
a su conectividad local, a la ausencia de un procesador central que tenga que comunicarse
con cada clula y a la propia simplicidad de las unidades celulares. La adicin de nuevas
unidades celulares no es ningn problema.

1.4.2.5 Robustez
La robustez de un sistema es su capacidad para funcionar adecuadamente frente a fallos en
alguna de sus partes. Cuando una clula funciona incorrectamente entonces los enlaces de
comunicacin fallan y nosotros deseamos que el sistema contine funcionando
correctamente o que la degradacin sea aceptable. La conectividad local favorece la
contencin de los fallos ms fcilmente al reducir los fallos a una regin y previene as la
expansin al sistema, de manera que una enorme cantidad de clulas permanecern
operativas y funcionando correctamente.

1.4.2.6 Jerarquizacin
La descomposicin jerrquica est presente en las ciencias de la computacin, a nivel de
lenguajes de programacin, de cdigos, de lenguajes mquina y a nivel de transistores. Las
jerarquas aparecen en la naturaleza, de la molcula se pasa a la clula y de la clula a un
organismo, as como las jerarquas de procesamiento en el sistema visual, que comienza
con el registro de la imagen en la retina (bajo nivel) y termina con el reconocimiento de
objetos (alto nivel). Estas formas jerrquicas tambin aparecen en la computacin celular,
bien fijadas en el conjunto de salidas o emergen mediante la programacin adaptativa.

1.4.2.7 Problemas locales frente a problemas globales


Un problema local contempla la computacin de una propiedad en trminos puramente
locales, como ocurre con el funcionamiento de una unidad celular. Un problema global
contempla la computacin de una propiedad general del sistema. As, un reto para el
diseador de modelos celulares es encontrar reglas de interaccin local para resolver
problemas globales.

1.4.3 Para qu reas de aplicacin es adecuada la computacin celular?

La computacin celular encuentra soluciones rpidas y eficientes para problemas


NP-completos que se presentan en diferentes dominios, como en diseo de redes,
teora de grafos, lgica, optimizacin combinatoria, secuenciacin, localizacin,
bsqueda, determinacin de rutas ptimas, etc.
Los modelos celulares encuentran una aplicacin natural al procesamiento de
imgenes digitales, como consecuencia de su arquitectura, pues al ser las imgenes
matrices bidimensionales podemos utilizar rejillas rectangulares y representar cada

21

pxel de la imagen mediante una unidad celular, y diseando la mquina para que
haga tareas propias del procesado de imgenes.
Tambin se ha utilizado modelos celulares para generar nmeros aleatorios de alta
calidad.
La capacidad de la computacin celular para realizar operaciones aritmticas
permite que se puedan construir calculadoras rpidas a una escala increblemente
pequea (nanomtrica).

22

Você também pode gostar