10. Introducci´on a la Complejidad Computacional
10.2. Definiciones B´asicas
El an´alisis de algoritmos supone la obtenci´on de su complejidad espacial y/o temporal como una funci´on de la talla del problema. En este contexto, se entiende comotallael dato o conjunto de datos que cuando var´ıa, hace que var´ıe el valor de la complejidad. Por su
3
Es decir, encontrar una soluci´on eficiente para cualquier problema de esa clase es igual de dif´ıcil que encontrar una soluci´on eficiente para ese problema “especial”.
parte, la complejidad espacial da una medida de la cantidad de objetos manejados en el algoritmo (entendida como una medida de la memoria que consumir´a una computaci´on) y lacomplejidad temporalda una medida del n´umero de operaciones realizadas (entendido como una medida del tiempo necesario para realizar una computaci´on).
De esta forma, para realizar el an´alisis primero hay que determinar cu´al es la talla del problema. A continuaci´on, se elige una unidad para poder determinar la complejidad es- pacial y una unidad para poder determinar cu´al es la complejidad temporal. Sin embargo, en ocasiones no hay un criterio claro para escoger dichas unidades y poder establecer las correspondientes medidas. El modelo de M´aquina de Turing permite definir f´acilmente to- dos los conceptos anteriores:
la talla del problema se identifica con la longitud de la cadena de entrada,
la complejidad espacial se asocia al n´umero de celdas de la M´aquina de Turing visi- tadas, y
la complejidad temporal viene dada por el n´umero de movimientos del cabezal, asu- miendo que cada movimiento se realizar´a en un tiempo fijo.
Las definiciones formales son:
Definici´on 10.1 (Complejidad Espacial) Sea M una M´aquina de Turing con una cin- ta s´olo de entrada y k cintas de trabajo (M´aquina de Turing offline). Sup´ongase que, sobre cualquier entrada de longitudn, las cabezas de lectura/escritura de las cintas de trabajo de M consultan como m´aximoS(n)celdas en cualquiera de las cintas, siendo S :N −→ N.
Entonces se dice que M tiene una complejidad espacialS(n)o que es una M´aquina de Turing acotada espacialmente porS(n). Tambi´en se dice que L(M) es un lenguaje con complejidad espacialS(n).
Esta definici´on, al estar basada en una m´aquina offline, no tiene en cuenta el n´umero de celdas que ocupa la cadena de entrada en el c´alculo del consumo espacial (de alguna forma, remarca la diferencia entre latalladel problema,ny la complejidad espacial,S(n)). De esta forma, puede ocurrir queS(n) < n . Incluso puede ocurrir que una M´aquina de Turing trabaje sobre una cadena vac´ıa. Para evitar problemas en estos casos y dado que para trabajar con la cadena vac´ıa se ha de consultar al menos una celda normalmente, cuando se est´a hablando de la cota espacialS(n), se asume el valorm´ax (1,dS(n)e).
Definici´on 10.2 (Complejidad Temporal) Sea M una M´aquina de Turing con k cin- tas. Sup´ongase que, sobre cualquier entrada de longitud n, M realiza como m´aximo T(n)movimientos, siendoT :N −→ N.
Entonces se dice que M tiene una complejidad temporalT(n)o que es una M´aquina de Turing acotada temporalmente porT(n). Tambi´en se dice que L(M) es un lenguaje con complejidad temporalT(n).
N´otese que, con respecto a la definici´on de complejidad espacial, en este caso la defi- nici´on no se hace sobre el modelo offline, sino sobre una M´aquina de Turing conk cintas de trabajo. Es m´as, de hecho, se suele hacer hincapi´e en que al ser necesario leer la cadena entera para poder decidir sobre ella, seguro queT(n) ≥n+ 1. Esto no es cierto en todos los casos, pero suele asumirse as´ı, ya que esta suposici´on de partida permite simplificar la discusi´on de algunos teoremas. Por lo tanto, es usual asumir que cuando se est´a hablando de la cota temporalT(n), realmente se trabaja con el valorm´ax (n+ 1,dT(n)e).
La definici´on de la complejidad espacial se basa en una M´aquina de Turing con una cinta s´olo de entrada ykcintas de trabajo. Para simularkcintas de trabajo se puede utilizar una cinta con2k sectores (ve´ase el teorema 7.2); tal y como se realiza la simulaci´on, el n´umero de celdas utilizado en la M´aquina de Turing de una cinta de trabajo coincide con el n´umero m´aximo de celdas utilizado en la M´aquina de Turing con k cintas de trabajo. De esto se puede concluir que el n´umero de cintas de trabajo no afecta a la definici´on de complejidad espacial.
Sin embargo, s´ı que es significativo para la definici´on de la complejidad temporal, ya que ´esta se ve afectada al pasar de una M´aquina de Turing conkcintas a una M´aquina de Turing con una cinta, seg´un se desprende del siguiente resultado4,
Teorema 10.1 Supuesto que´ınfn→∞ T(nn) =∞, sea L un lenguaje aceptado por una M´aquina de Turing M de k cintas, con cota temporal T(n). Hay una M´aquina de Turing M0de una cinta que acepta L con complejidad temporal(T(n))2.
Demostraci´on: (Idea Intuitiva)
Cuando se pasa de una M´aquina de Turing conkcintas a una M´aquina de Turing con una cinta, cada movimiento en la multicinta equivale a un barrido en la de una cinta (teorema 7.2).
El peor caso para este barrido, en cuanto al n´umero de movimientos, es que haya dos cabezales movi´endose siempre en sentido contrario. Si comienzan en la misma posici´on, despu´es de un movimiento se habr´an separado 2 celdas, despu´es de 2 movimientos 4, des- pu´es de 3 movimientos 6 y, en general, despu´es detmovimientos,2tceldas.
Como el n´umero de movimientos total esT(n), la expresi´on para definir el n´umero de movimientos necesarios para completar los barridos ser´ıa,
T(n) X t=1 2t≈(T(n))2. ♣ 4La notaci´on´ınf
n→∞T(nn) =∞representa la mayor cota inferior de la sucesi´onT(nn),T(nn+1+1),T(nn+2+2),. . .
Esta condici´on es necesaria para poder demostrar aquellos resultados en cuyo enunciado aparece; la idea es queT(n)ynno son del mismo orden de magnitud, con lo cualT(n)crece mucho m´as r´apidamente quen.
10.2.1. Clases de Complejidad.
Cuando se realiza el an´alisis de los algoritmos en programaci´on, nunca se busca una expresi´on exacta de la funci´on de coste de un determinado algoritmo, sino que interesa m´as establecer cu´al es su comportamiento asint´otico. As´ı se obtiene una medida significativa, pero m´as simple, de c´omo evolucionar´a dicho algoritmo a medida que la talla del problema crece. Y se introduce el concepto de orden de coste que permite, adem´as, clasificar los algoritmos en “familias”, seg´un su comportamiento asint´otico estimado.
Los teoremas siguientes permiten formalizar este concepto en el ´ambito de la Teor´ıa de Complejidad:
Teorema 10.2 (de Compresi´on) Sea L un lenguaje aceptado por una M´aquina de Turing M con k cintas de trabajo con cota espacial S(n). Para todoc > 0hay una M´aquina de Turing M0 acotada espacialmente porcS(n)que acepta L.
Demostraci´on: (Idea Intuitiva)
Sear ∈ N |rc≥1. Se construye M0a partir de M, de forma que cada s´ımbolo de su alfabeto codifica un bloque ders´ımbolos del alfabeto de M; por lo tanto, adem´as, habr´a que realizar las modificaciones correspondientes en las transiciones para que las m´aquinas sean equivalentes. Si la m´aquina M consultaS(n), M0s´olo consultar´aS(n)/r, es decir,cS(n).
♣
Teorema 10.3 (de Aceleraci´on Lineal) Supuesto que´ınfn→∞ T(nn) = ∞, sea L un lenguaje aceptado por una M´aquina de Turing M de k cintas, con cota temporalT(n). Para todoc > 0hay una M´aquina de Turing M0 de k cintas, acotada temporalmente porcT(n) que acepta L.
La idea de la demostraci´on es similar a la del teorema de compresi´on (se codifica la cadena en bloques ders´ımbolos; con menos s´ımbolos habr´a menos movimientos), pero el aparato matem´atico es mayor.
Estos teoremas permiten realizar el an´alisis asint´otico de la complejidad espacial y temporal, a fin de comparar el comportamiento de dos M´aquinas de Turing: por ejem- plo, dadas dos M´aquina de Turing con complejidades espaciales S1(n) = 3n3 + 1 y S2(n) =n3+ 5n2+ 1, se dice que ambas est´an acotadas espacialmente porS(n) =n3. Esto permite definir lasclases de complejidad.
Definici´on 10.3 (Clases de Complejidad Espacial)
La familia de lenguajes aceptados por M´aquinas de Turing deterministas con comple- jidad espacialS(n)es DSPACE(S(n)).
La familia de lenguajes aceptados por M´aquinas de Turing no deterministas con com- plejidad espacialS(n)es NSPACE(S(n)).
Son conocidas como clases de complejidad espacial.
Definici´on 10.4 (Clases de Complejidad Temporal)
La familia de lenguajes aceptados por M´aquinas de Turing deterministas con comple- jidad temporalT(n)es DTIME(T(n)).
La familia de lenguajes aceptados por M´aquinas de Turing no deterministas con com- plejidad temporalT(n)es NTIME(T(n)).
Son conocidas como clases de complejidad temporal.