Está en la página 1de 5

Algortmica III anlisis de algoritmos FISI_UNMSM

Complejidad computacional (Anlisis de Algoritmos)


Definicin.

Es la rama de las ciencias de la computacin que estudia, de manera terica, la


optimizacin de los recursos requeridos durante la ejecucin de un algoritmo para resolver
un problema en cuestin. El anlisis se basa en dos aspectos:

El tiempo. Mediante una aproximacin al nmero y tipo de pasos de ejecucin de un


algoritmo para resolver un problema.

El espacio. Mediante una aproximacin a la cantidad de memoria utilizada para resolver un


problema.

Se pueden estudiar igualmente otros parmetros, tales como el nmero de procesadores


necesarios para resolver el problema, el cual se denomina procesamiento en paralelo. La
teora de la complejidad difiere de la teora de la computabilidad en que sta se ocupa de la
factibilidad de expresar problemas como algoritmos efectivos sin tomar en cuenta los
recursos necesarios para ello.

Los problemas que tienen una solucin con orden de complejidad lineal son los problemas
que se resuelven en un tiempo que se relaciona linealmente con su tamao.

Hasta el momento las computadoras resuelven problemas mediante algoritmos que tienen
como mximo una complejidad o coste computacional polinmico, es decir, la relacin
entre el tamao de los datos de entrada y su tiempo de ejecucin es polinmica. stos son
problemas agrupados en la clase P. Los problemas que no pueden ser resueltos por nuestras
computadoras (las cuales son Mquinas Determinsticas), que en general poseen costes
factorial o combinatorio pero que podran ser procesados por una mquina No-
Determinista, estn agrupados en la clase NP. Estos problemas no tienen una solucin
prctica, es decir, una mquina determinstica (como una computadora actual) no puede
resolverlos en un tiempo razonable.

Un problema dado puede verse como un conjunto de preguntas relacionadas, donde cada
pregunta se representa por una cadena de caracteres de tamao finito. Por ejemplo, el
problema factorizacin entera se describe como: Dado un entero escrito en notacin
binaria, retornar todos los factores primos de ese nmero. Una pregunta sobre un entero
especfico se llama una instancia.

Ejemplo, "Encontrar los factores primos del nmero 24" es una instancia del problema
factorizacin entera.

La complejidad temporal de un problema es el nmero de pasos que toma resolver una


instancia de un problema, a partir del tamao de la entrada utilizando el algoritmo ms
eficiente a disposicin. Intuitivamente, si se toma una instancia con entrada de longitud n
que puede resolverse en n pasos, se dice que ese problema tiene una complejidad en

REYES MARZANO, ALEJANDRO chuly1280@gmail.com


Algortmica III anlisis de algoritmos FISI_UNMSM

tiempo de n. Por supuesto, el nmero exacto de pasos depende de la mquina en la que se


implementa, del lenguaje utilizado y de otros factores. Para no tener que hablar del costo
exacto de un clculo se utiliza la notacin O. Cuando un problema tiene costo en tiempo
O(n) en una configuracin de computador y lenguaje dado, este costo ser el mismo en
todos los computadores, de manera que esta notacin generaliza la nocin de coste
independientemente del equipo utilizado.

El espacio de almacenamiento por lo general es mltiplo de los valores de entrada. Como la


expansin de la memoria es constante el nico factor a tomar en cuenta es el tiempo de
procesamiento.

Ms espacio Menor tiempo


Menos espacio Mayor tiempo.

Ejemplos

Extraer cualquier elemento de un vector. La indexacin en un vector o array lleva el


mismo tiempo sea cual fuere el ndice que se quiera buscar, por tanto es una
operacin de complejidad constante O(1).

Buscar en un diccionario tiene complejidad logartmica. Se puede iniciar la


bsqueda de una palabra por la mitad del diccionario. Inmediatamente se sabe si se
ha encontrado la palabra o, en el caso contrario, en cul de las dos mitades hay que
repetir el proceso (es un proceso recursivo) hasta llegar al resultado. En cada
(sub)bsqueda el problema (las pginas en las que la palabra puede estar) se ha
reducido a la mitad, lo que se corresponde con la funcin logartmica. Este
procedimiento de bsqueda (conocido como bsqueda binaria) en una estructura
ordenada tiene complejidad logartmica O(ln n).

REYES MARZANO, ALEJANDRO chuly1280@gmail.com


Algortmica III anlisis de algoritmos FISI_UNMSM

El proceso ms comn para ordenar un conjunto de elementos tiene complejidad


cuadrtica. El procedimiento consiste en crear una coleccin vaca de elementos. A
ella se aade, en orden, el menor elemento del conjunto original que an no haya
sido elegido, lo que implica hacer un recorrido completo del conjunto original
(O(n), siendo n el nmero de elementos del conjunto). Este recorrido sobre el
conjunto original se realiza hasta que todos sus elementos estn en la secuencia de
resultado. Se puede ver que hay que hacer n selecciones (se ordena todo el
conjunto) cada una con un coste n de ejecucin: el procedimiento es de orden
cuadrtico O(n). Hay que aclarar que hay diversos algoritmos de ordenacin con
mejores resultados.

Problemas de decisin.

La mayor parte de los problemas en teora de la complejidad tienen que ver con los
problemas de decisin, que corresponden a poder dar una respuesta positiva o negativa a un
problema dado. Por ejemplo, el problema SON AMIGOS se puede describir como: Dado
dos nmeros enteros, verificar si los nmeros son amigos o no. Un problema de decisin es
equivalente a un lenguaje formal, que es un conjunto de palabras de longitud finita en un
lenguaje dado. Para un problema de decisin dado, el lenguaje equivalente es el conjunto de
entradas para el cual la respuesta es positiva.

Los problemas de decisin son importantes porque casi todo problema puede ser
transformado en un problema de decisin. Por ejemplo el problema CONTIENE-
FACTORES descrito como: Dados dos enteros n y k, decidir si n tiene algn factor menor
que k. Si se puede resolver CONTIENE-FACTORES con una cierta cantidad de recursos, su
solucin se puede utilizar para resolver FACTORIZAR con los mismos recursos, realizando
una bsqueda binaria sobre k hasta encontrar el ms pequeo factor de n, luego se divide
ese factor y se repite el proceso hasta encontrar todos los factores.

En teora de la complejidad, generalmente se distingue entre soluciones positivas o


negativas. Por ejemplo, el conjunto NP se define como el conjunto de los problemas en
donde las respuestas positivas pueden ser verificadas muy rpidamente (es decir, en tiempo
polinmico). El conjunto Co-P es el conjunto de problemas donde las respuestas negativas
pueden ser verificadas rpidamente. El prefijo "Co" abrevia "complemento". El
complemento de un problema es aquel en donde las respuestas positivas y negativas estn
intercambiadas, como entre ES-COMPUESTO y SON AMIGOS.

Un resultado importante en teora de la complejidad es el hecho de que independientemente


de la dificultad de un problema (es decir de cuntos recursos de espacio y tiempo necesita),
siempre habr problemas ms difciles. Esto lo determina en el caso de los costes en tiempo
el teorema de la jerarqua temporal. De ste se deriva tambin un teorema similar con
respecto al espacio.

Clases de complejidad.

REYES MARZANO, ALEJANDRO chuly1280@gmail.com


Algortmica III anlisis de algoritmos FISI_UNMSM

Los problemas de decisin se clasifican en conjuntos de complejidad comparable llamados


clases de complejidad.

La clase de complejidad P. Es el conjunto de los problemas de decisin que pueden ser


resueltos en una mquina determinista en tiempo polinmico, lo que corresponde
intuitivamente a problemas que pueden ser resueltos an en el peor de sus casos.

La clase de complejidad NP. Es el conjunto de los problemas de decisin que pueden ser
resueltos por una mquina no determinista en tiempo polinmico. Esta clase contiene
muchos problemas que se desean resolver en la prctica, incluyendo el problema de
satisfacibilidad booleana y el problema del viajante, un camino Hamiltoniano para recorrer
todos los vrtices una sola vez. Todos los problemas de esta clase tienen la propiedad de
que su solucin puede ser verificada efectivamente.

La pregunta P=NP.
El saber si las clases P y NP son iguales es el ms importante problema abierto en Ciencias
de la Computacin terica.

Preguntas como esta motivan la introduccin de los conceptos de hard (difcil) y completo.
Un conjunto X de problemas es hard con respecto a un conjunto de problemas Y ( 'Y'
pertenecientes a NP) si X>Y o X=Y, es decir Y se puede escribir como un conjunto de
soluciones de los problemas X. En palabras simples, Y es "ms sencillo" que X. El trmino
sencillo se define precisamente en cada caso. El conjunto hard ms importante es NP-hard.
El conjunto X es completo para Y si es hard para Y y es tambin un subconjunto de Y. El
conjunto completo ms importante es NP-completo. En otras palabras, los problemas del
conjunto NP-completo tienen la caracterstica de que, si se llega a encontrar una solucin
en tiempo P para algn miembro del conjunto (cualquiera de los problemas de NP-
completo), entonces de hecho existe una solucin en tiempo P para todos los problemas de
NP-completo.

Problemas incompletos en NP.

Otra pregunta abierta relacionada con el problema P = NP es si existen problemas que estn
en NP, pero no en P, que no sean NP-Completos. En otras palabras, problemas que tengan
que ser resueltos en tiempo polinomial no-determinista, pero que no puedan ser reducidos a
tiempo polinomial desde otros problemas con tiempo polinomial no-determinista. Uno de
tales problemas que se sabe que es NP pero no se sabe si es NP-completo, es el problema
de isomorfismo de grafos, un programa que decide si dos grafos son isomorfos (por
ejemplo: comparten las mismas propiedades). Se ha demostrado que si P NP entonces ese
programa existe.

Intratabilidad.

Los problemas que pueden ser resueltos en teora, pero no en prctica, se llaman
intratables. Qu se puede y qu no en la prctica es un tema debatible, pero en general slo

REYES MARZANO, ALEJANDRO chuly1280@gmail.com


Algortmica III anlisis de algoritmos FISI_UNMSM

los problemas que tienen soluciones de tiempos polinomiales son solubles para ms que
unos cuantos valores. Entre los problemas intratables se incluyen los de EXPTIME-
completo. Si NP no es igual a P, entonces todos los problemas de NP-completo son tambin
intratables.

Para ver por qu las soluciones de tiempo exponencial no son tiles en la prctica, se puede
considerar un problema que requiera 2n operaciones para su resolucin (n es el tamao de la
fuente de informacin). Para una fuente de informacin relativamente pequea, n=100, y
asumiendo que una computadora puede llevar a cabo 1010 (10 giga) operaciones por
segundo, una solucin llevara cerca de 4*1012 aos para completarse, mucho ms tiempo
que la actual edad del universo.

REYES MARZANO, ALEJANDRO chuly1280@gmail.com

También podría gustarte