• No se han encontrado resultados

Máquinas y cómputos

Parte II: Estado de la cuestión

4.2 Modelos de máquinas

4.2.1 Máquinas y cómputos

Un modelo de máquina [Gin66, HU79, vL90] es una clase formada por dispositivos similares llamados máquinas que suelen denirse como ternas de conjuntos nitos.

En estas deniciones de máquinas aparece generalmente un programa o control nito que opera sobre una estructura llamada memoria. En cada instante el control nito se

1No se considera razonable por ejemplo una máquina secuencial que disponga de una instrucción tan compleja que permita la multiplicación de matrices en una unidad temporal. Las máquinas no deterministas también son dispositivos que escapan del ámbito de las máquinas razonables (ver página 90).

2Las computadoras cuánticas probablemente desplazarán el límite de lo que se considera como máqui- na razonable ya que son capaces de resolver problemas como la factorización de números en tiempo polinómico. Ninguna máquina razonable anterior es capaz de resolver estos problemas de forma tan eciente.

88 4. Modelos de máquinas y complejidad computacional

encuentra en un estado particular y el número de estados diferentes posibles es nito. La memoria almacena en celdas los símbolos pertenecientes a un conjunto nito llamado alfabeto. En principio, la memoria es innita pero en los cómputos sólo se emplea una parte nita. Las posiciones no utilizadas se denotan con un símbolo especial, símbolo blanco.

Los programas están formados por instrucciones de recuperación o almacenamiento en la memoria, de modicación del contenido de la memoria, de comprobación de condiciones, de saltos condicionales o incondicionales del programa y por instrucciones para leer la entrada y escribir la salida. En las máquinas de Turing todas estas posibilidades están unidas en una múltiple instrucción lectura-comprobación-escritura-movimiento-salto. Para manejar la entrada y la salida se emplean dos secciones de la memoria. La sección de entradadesde la cual se lee la información símbolo a símbolo en cada unidad temporal y la sección de salida en la que la información se muestra al exterior también símbolo a símbolo en cada instante. El programa se comunica con las secciones de entrada y salida por medio de canales especícos.

Según cómo se emplee la sección de entrada se distinguen:

Cómputos en línea on-line: los caracteres de la entrada sólo se pueden procesar una vez, como si fuesen señales recibidas del exterior. Para procesarlos más de una vez deben ser almacenados en otra parte de la memoria.

Cómputos fuera de línea o-line: los símbolos de entrada están permanentemente dis- ponibles y se pueden leer cuantas veces se quiera.

Para formalizar la noción de computación se necesita el concepto de conguración de la máquina. Una conguración es una descripción completa del estado de una máquina incluido el estado completo de la memoria. Típicamente, una conguración contiene un puntero a la instrucción actual, el contenido de la memoria y los estados de las secciones de entrada y salida. La transición de una conguración C1 a otra C2 se denota C1

` C 2

y tendrá lugar si la instrucción que se va ejecutar lleva a la máquina de C1 a C2. El

concepto de computación está ligado a secuencias de conguraciones conectadas por `.

El cierre transitivo de ` se representa con `.

Una distinción importante entre máquinas es el concepto de determinismo y no deter- minismo. Esta característica reside en el programa de cada máquina. Si para cada conguraciónC1 existe una única conguración C2 tal que C1

`C

2 la máquina es deter-

minista mientras que si existen varias (o ninguna) C2 la máquina es no determinista. El

comportamiento no determinista puede deberse a que existan varias instrucciones aplica- bles desdeC1. En estos casos, el determinismo se denomina acotado ya que el número de

conguraciones posiblesC2 es nito y acotado por el programa en sí. El no determinismo

puede ser también no acotado cuando la interacción con la memoria es no determinista. Se distinguen varios tipos de conguraciones. Las conguraciones iniciales incluyen el estado inicial del control nito, la memoria en blanco y las secciones de entrada y salida vacías. Todas las conguraciones que se pueden alcanzar desde la conguración inicial

4.2. Modelos de máquinas 89 se denominan alcanzables. Una conguración Cf se denomina nal si no existe ninguna

conguraciónC0 tal queC f

`C

0. Si el estado en el que se encuentra el control nito en una

conguración nal es un estado de aceptación (por denición) entonces la conguración nal se llama de aceptación. En otro caso, se denomina de rechazo.

Una computación completa es una computación que comienza en una conguración inicial y no termina en una no nal. Por tanto, puede ser una computación divergente si es innita o que termina en una conguración nal. Una computación que termina se dice que es de aceptación o de rechazo según si la conguración nal es de aceptación o rechazo. Trabajando con lenguajes y relaciones se tienen las siguientes deniciones.

Una máquina acepta el lenguaje formado por las cadenas x para las cuales existe una computación que termina.

Una máquina reconoce o decide el lenguaje formado por las cadenasxpara las cuales existe una computación de aceptación que comienza con x. Además, todas las computaciones de la máquina deben de terminar.

Una máquina computa una relación formada por los pares hx;yi de entradas x y salidas

y tales que existe una computación de aceptación que comienza con x y que termina en una conguración donde y es el contenido de la memoria de salida.

Los dispositivos que sólo poseen un control nito sólo pueden ejecutar una instrucción en cada instante (incluso las máquinas no deterministas). Esta clase de máquinas se denomina modelo de máquina secuencial. El modelo de máquina paralela contiene un conjunto de programas o procesadores que puede ser innito. En algunos modelos todos los procesadores acceden a una memoria compartida que se añade a la memoria local de cada procesador. Los procesadores se pueden comunicar directamente a través de redes de interconexióno a través de la memoria compartida.

Las transiciones de una máquina paralela son el resultado de la combinación de las transi- ciones de todos los procesadores activos. Los procesadores activos pueden operar al mismo tiempo, computación síncrona, o no, computación asíncrona. En ambos casos puede haber interferencias al actuar varios procesadores simultáneamente sobre una misma posición de la memoria compartida. La resolución de estos conictos depende de la especicación concreta de cada modelo.

Una vez descritas las partes que componen una máquina se puede describir el proceso de simulaciónde clases de máquinas. Informalmente, una simulación de la clase de máquinas M por otra clase M0 es una construcción que muestra que cualquier cómputo o manipu-

lación que pueda realizar una máquina Mi

2 M sobre sus entradas puede ser realizada

también por alguna máquina M0 i

2M

0 sobre las mismas entradas.

Al considerar el proceso de computación como una secuencia de conguraciones se dene el tiempo que conlleva la terminación de un cómputo como el número de conguraciones en la secuencia que describe la computación. Esta denición asume la asignación de una unidad temporal a cada transición (tiempo uniforme). En el caso de dispositivos como las

90 4. Modelos de máquinas y complejidad computacional

`máquinas de acceso aleatorio' esta medida debe tener en cuenta la cantidad de información manipulada en cada transición (medida temporal logarítmica). Algo similar ocurre con el espacio consumido por un cómputo. La interpretación más simple considera el espacio consumido como el número de celdas de memoria que intervienen en la computación. Un análisis más detallado deberá considerar cuanta información se almacena en cada celda. El tiempo y el espacio consumidos por una computación se puede extender a una máquina estudiando la relación entre las medidas de tiempo y espacio de la computación frente a la longitud de la entradajxj.

Se representa porM M

0 (tiempof

(n)) el hecho de que el modeloM

0 simule al modelo

M con un incremento de tiempof(n). Se utiliza la misma representación con el espacio.

El conjunto de lenguajes reconocidos por un modelo de máquina M en tiempo f(n) se

denomina M-tiempo(f(n))y análogamente con el espacio M-espacio(f(n)).

Se emplean diferentes clases de funciones para acotar los recursos temporales y espaciales consumidos por una máquina en sus cómputos. Entre ellas están las funciones polinómicas, logarítmicas, exponenciales y lineales:

Log =fklognjk 2!g, donde ! representa a los enteros no negativos,

Lin =fknjk2!g Poli=fkn k +kjk 2!g Expl =fk2 kn jk 2!g Exp =fk2 n k jk2 !g.

Los modelos de cómputo secuenciales `razonables' se simulan mutuamente con pérdidas de eciencia polinómicasM M

0 (tiempo Poli). Sin embargo, experimentan un incremento

temporal exponencial a la hora de simular a un modelo no determinista. El origen de este retraso exponencialya sea inherente al no determinismo o al desconocimiento de mejores simulacioneses una de las conjeturas más famosas y todavía sin resolver de las ciencias de la computación: ¾P =NP?