Вы находитесь на странице: 1из 6

Clasificacin de los algoritmos por su complejidad

Jos Ren White Enciso // A00397389// Anlisis y diseo de algoritmos// 11.11.11//

Clasificacin de los algoritmos por su complejidad

Resumen de este reporte

Se investig la clasificacin de los algoritmos por su complejidad. Es decir, a partir de las clases P, NP (y sus variantes) y adems se agregaron ejemplo de cada uno.

11.11.11

Clasificacin de los algoritmos por su complejidad

Contenido
Resumen de este reporte.............................................. 1 Contenido ................................................................... 2 Teora de la complejidad algortmica ............................. 3 Eficiencia de un algoritmo ............................................. 3 Clases de Complejidad.................................................. 4 Problemas P y NP ......................................................... 4

11.11.11

Clasificacin de los algoritmos por su complejidad

Teora de la complejidad algortmica


Cuando hablamos de un problema nos referimos a una tarea que hay que realizar. Vamos a precisar esto ms concretamente: un problema es una cuestin general, planteada en trminos de parmetros abiertos a la que hay que encontrar una solucin. En este sentido, la palabra problema se aplica en realidad a una coleccin de problemas concretos. Al darle valores a los parmetros, decimos que tenemos una instancia del problema. Podemos saber resolver un problema y no poder encontrar una solucin. Hay problemas que la computadora puede resolver con un tiempo computacional aceptable, y otros que no. Por ejemplo, para la obtencin de la solucin de las soluciones de una ecuacin polinmica de tercer grado, tiene un coste computacional bajo. Es un problema fcil. Pero la obtencin de un ciclo hamiltoniano en un grafo completo tiene un coste computacional muy alto; es decir, es un problema difc Un algoritmo es un procedimiento paso-a-paso que resuelve un problema. Decimos que un algoritmo resuelve un problema cuando es capaz de resolver cualquier instancia del problema

E F I C I E NC IA D E U N

A L G O R I T MO

Cabe esperar que el tiempo que tarda un algoritmo en resolver una instancia de un problema dependa del tamao de la misma. El problema es que el tiempo que un algoritmo tarda en resolver un problema, depende de la potencia del procesador del ordenador en el que estemos trabajando. Para evitar esta dependencia se definen:

Tiempo de computacin en resolver un problema: dado un problema p, un algoritmo A que es capaz de resolver una instancia I de p, definimos tiempo de computacin empleado por A en resolver I, como el nmero de pasos elementales (operaciones aritmticas elementales y operaciones de lectura y escritura) realizados por el ordenador para resolver I. Tiempo de computacin de un algoritmo A para resolver un problema: para un problema p, y un algoritmo A, que resuelve cualquier instancia I de p, de tamao n, llamamos tiempo de computacin del algoritmo al tiempo de computacin mximo requerido por el algoritmo para resolver cualquier instancia I, de tamao menor o igual que n. Llamaremos a este tiempo mediante la notacin fA(n)

Bajo estas condiciones los algoritmos se clasifican en dos grandes grupos:

Algoritmo de tiempo polinmico (P): un algoritmo resuelve un problema en tiempo polinmico si existe una constante c tal que |fA(n)| <= c|p(n)|, siendo p(n) un polinomio en n. NP: En cualquier otro caso, diremos que A es un algoritmo exponencialil. Para poder analizar esta cuestin necesitamos un lenguaje (o notacin) adecuado.

11.11.11

Clasificacin de los algoritmos por su complejidad

Clases de Complejidad
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. Los problemas se clasifican en conjuntos o clases de complejidad (L, NL, P, PCompleto, NP, NPCompleto, NP Duro...) Primordialmente, las clasificaciones importantes son P y NP.

PROBLEMAS P Y N P
LA CLASE P
Contiene aquellos problemas de decisin que pueden ser resueltos en tiempo polinmico por una MT determinista, esto es, aquellas en las que para cada par estado y smbolo exista a lo sumo una posibilidad de ejecucin. Los problemas de complejidad polinmica son tratables, es decir, en la prctica se pueden resolver en un tiempo razonable.

LA CLASE NP
Contiene los problemas de decisin que son resueltos por una MT no determinista en tiempo polinmico y de ah su nombre: Non-Deterministic Polynomial-time. Naturalmente, cualquier problema en P tambin se encuentra en NP pues, si una mquina de Turing determinista resuelve el problema, una no determinista tambin y en igual tiempo (MTD es un caso particular de MTND). Pero qu relacin existe entre la clase P y la clase NP? Decimos que un problema pertenece a la clase P, si es un problema de decisin que puede resolverse mediante un algoritmo polinmico. Por tanto estos problemas son fciles. A veces ocurre, que para comprobar si una posible solucin es vlida o no, se dispone de un algoritmo polinmico, pero para resolver cualquier instancia del problema, no se dispone de tal tipo de algoritmos. Estos problemas forman la clase NP. Por ejemplo, para comprobar si un ciclo de un grafo es o no hamiltoniano se dispone de un algoritmo polinmico. Pero para encontrar ciclos hamiltonianos en un grafo, el algoritmo que se tiene en este momento es exponencial. Es evidente que los problemas de clase P, estn incluidos en los problemas de clase NP. Pero no se sabe si la inclusin es estricta, o por el contrario N = NP. Este problema (saber si P = NP) es de los ms importantes dentro de la complejidad algortmica, y permanece abierto desde 1971. Pero dentro de los problemas de la clase NP, todava hay una segunda clasificacin. Los problemas NP-completos, dentro de los problemas NP, son los ms difciles desde el punto de vista de la complejidad computacional. El problema de encontrar un ciclo hamiltoniano en un grafo cualquiera es NP-completo.

11.11.11

Clasificacin de los algoritmos por su complejidad

Dentro de los problemas NP-competos estn los problemas NP-difciles: son problemas NPcompletos, que no necesariamente son un problema de decisin. El problema de los horarios escolares es NP-duro. Estas no son todas las clasificaciones de NP, tambin existen:

NP-completo significa problemas que son completos en NP, es decir, los ms difciles de resolver en NP NP-hard (NP-difcil) quiere decir al menos tan complejo como NP (pero no necesariamente en NP) NP-easy (NP-fcil) quiere decir a lo sumo tan difcil como NP (pero no necesariamente en NP) NP-equivalente significa igualmente difcil que NP, (pero no necesariamente en NP).

Y existen 3 teoremas que hasta el momento describen su relacin de manera teorca. Teorema1: si un problema es NP y existe un algoritmo que lo resuelve en tiempo polinmico entonces P = NP Teorema2: si un problema es NP-completo y existe un algoritmo que lo resuelve en tiempo polinmico entonces P = NP Teorema3: si un problema es NP-duro y existe un algoritmo que lo resuelve en tiempo polinmico entonces P = NP

11.11.11

Вам также может понравиться