Академический Документы
Профессиональный Документы
Культура Документы
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
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
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)
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
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
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