330 likes | 783 Views
Departamento de Educación Matemática. COMPLEJIDAD COMPUTACIONAL. “La Matemática es el Alfabeto con el cual Dios ha Escrito el Universo” Galileo Galilei. Profesor: Carlos Aguilar Santana. COMPLEJIDAD COMPUTACIONAL. Profesor: Carlos Aguilar Santana.
E N D
Departamento de Educación Matemática COMPLEJIDAD COMPUTACIONAL “La Matemática es el Alfabeto con el cual Dios ha Escrito el Universo” Galileo Galilei Profesor: Carlos Aguilar Santana
COMPLEJIDAD COMPUTACIONAL Profesor: Carlos Aguilar Santana Metodología para la Solución de Problemas Por medio de un Computador • Definición del Problema (Requerimientos) • Análisis del Problema (Datos e entrada, salida. con lo que se cuenta) • Diseño (Algoritmos, BD, Topologías) • Codificación (Lenguaje de Programación) • Pruebas (Depuración) • Liberación (Entrega)
COMPLEJIDAD COMPUTACIONAL Profesor: Carlos Aguilar Santana Aspectos básicos • Algoritmo Es un procedimiento “Paso a Paso” • Caracterización de un problema Algorítmico • - Conjunto de todos los datos de entrada. • - El objetivo del problema. • Resolución de un problema • Se resuelve cuando se aplica el algoritmo a una entrada de datos (instancia) y se obtiene una salida que responde al objetivo.
COMPLEJIDAD COMPUTACIONAL 10 4 2 3 1 3 20 15 4 12 Profesor: Carlos Aguilar Santana Representación de problemas Un problema se representa por: - Un dominio Ω que contiene las posibles soluciones. - Una pregunta cuya respuesta genera la solución al problema п. Ejemplo: PROBLEMA DEL VENDEDOR VIAJERO (PVV) Dominio: { 1-2-4-3-1 1-2-3-4-1 1-3-4-2-1 1-3-2-4-1 1-4-2-3-1 1-4-3-2-1 } = 57 = 29 = 57 = 42 = 42 = 29
COMPLEJIDAD COMPUTACIONAL Profesor: Carlos Aguilar Santana Variantes de un problema Π • Problemas de Decisión • ¿Existe una estructura S que satisface las propiedades de п? • Respuesta : SI o NO • Problemas de Localización • Encontrar una estructura S que satisface las propiedades de п • Respuesta : S • Problemas de Optimización • Encontrar estructura S que satisface las propiedades de п y criterios de optimización • Respuesta : S* = optimo (S) , S Ω
COMPLEJIDAD COMPUTACIONAL Profesor: Carlos Aguilar Santana Complejidad Computacional • NO se refiere a: • - Dificultad de diseño. • - Rebuscado de un algoritmo. • SI se refiere a: • - Medidas de desempeño • - Tiempo Complejidad Temporal • - Espacio Complejidad Espacial
COMPLEJIDAD COMPUTACIONAL Profesor: Carlos Aguilar Santana Complejidad Temporal • Se utiliza el tamaño de entrada para definir al tiempo de ejecución. • Sea n tamaño de entrada, se define T(n) como tiempo de ejecución • No se considera los datos de entrada, sino el tamaño del conjunto de ellos. Ejemplo : Ordenamiento de una lista de números. Casos : - Mejor caso - Caso Medio - Peor Caso
COMPLEJIDAD COMPUTACIONAL Profesor: Carlos Aguilar Santana Ejemplo 1 : Para el siguiente algoritmo, su T(n) = 4n+3 Algoritmo : (1) suma = 0; (2) for(i=1;i<=n;i++) (3) suma = suma + i; Instrucción (1) Ocupa 1 unidad de tiempo. 1 Instrucción (3) Ocupa 2 unidades de tiempo y es ejecutada n veces. 2n Instrucción (2) Ocupa 1 unidad de tiempo en la asignación, n+1 en las comparaciones y n en los incrementos. 2n+2 TOTAL 4n+3
COMPLEJIDAD COMPUTACIONAL Profesor: Carlos Aguilar Santana Ejemplo 2 : Para el siguiente algoritmo, su T(n) = 7n2+8n+5 Algoritmo : (1) suma = 0; (2) for(i=1;i<=n;i++) (3) for(j=1;j<=n;j++) (4) suma = suma + i*j; Instrucción (1) Ocupa 1 unidad de tiempo. 1 Instrucción (2)(3) Ocupan 2n+2 unidades de tiempo cada una y se ejecutan anidadas. (2n+2)* (2n+2) = 4n2+8n+4 Instrucción (4) Ocupa 1 unidad de tiempo en la asignación, 2 en la suma y multiplicación y se repite n * n veces 3n2 TOTAL 7n2+8n+5
COMPLEJIDAD COMPUTACIONAL Profesor: Carlos Aguilar Santana Orden de un Algoritmo • Para simplificar el estudio de la complejidad computacional, se adoptan ciertas convenciones en su notación. • Se define el orden de un algoritmo como el termino de mayor grado. • Tiempo de ejecución T(n)= 4n+3 Orden O(n)Orden Polinomial Lineal. • Tiempo de ejecución T(n)= 7n2+8n+5 Orden O(n2)Orden Polinomial Cuadrático. • Tiempo de ejecución T(n)= 2n+3 Orden O(2n)Orden Exponencial. O(nx) Tiempo Polinomial Algoritmos Eficientes Problemas Tratables O(xn) Tiempo Exponencial Algoritmos Ineficientes Problemas Intratables
COMPLEJIDAD COMPUTACIONAL A B C A B C A B C A B C Profesor: Carlos Aguilar Santana Ejemplo 3 : El siguiente algoritmo tiene tiempo exponencial de O(2n) Algoritmo : (1) void Hanoi( int n, int A, int B, int C) (2) { (3) if(n==1) (4) MueveAnillo(A,B); (5) else { (6) Hanoi(n-1, A, C, B); (7) MueveAnillo(A,B); (8) Hanoi(n-1, C, B, A); (9) } (10) } H(2,A,B,C) M(A,B) H(1,C,B,A) H(1,A,C,B)
COMPLEJIDAD COMPUTACIONAL A B C A B C A B C A B C Profesor: Carlos Aguilar Santana Algoritmo : (1) void Hanoi( int n, int A, int B, int C) (2) { (3) if(n==1) (4) MueveAnillo(A,B); (5) else { (6) Hanoi(n-1, A, C, B); (7) MueveAnillo(A,B); (8) Hanoi(n-1, C, B, A); (9) } (10) } H(3,A,B,C) M(A,B) H(2,C,B,A) H(2,A,C,B)
COMPLEJIDAD COMPUTACIONAL Profesor: Carlos Aguilar Santana Recordemos que el orden de este algoritmo es 2n luego su tiempo de ejecución es exponencial y por lo tanto es un problema intratable. Supongamos que el tiempo de ejecución en una máquina determinada es 10-9 Seg. Por operación. Supongamos además que deseamos jugar con 1000 Aros. T(n=1000) = 10-9 * 21000 = 5-9 * 2991 Seg. T(n=1000) = 10282 Siglos.
COMPLEJIDAD COMPUTACIONAL • Problemas de Decisión • ¿Existe una estructura S que satisface las propiedades de п? • Respuesta : SI o NO • Problemas de Localización • Encontrar una estructura S que satisface las propiedades de п • Respuesta : S • Problemas de Optimización • Encontrar estructura S que satisface las propiedades de п y criterios de optimización • Respuesta : S* = optimo (S) , S Ω Profesor: Carlos Aguilar Santana Recordemos las Variantes de un problema Π
COMPLEJIDAD COMPUTACIONAL s z v w u y x Profesor: Carlos Aguilar Santana Π de optimización tratado como Π de decisión - Valor objetivo K para la instancia n - ¿ Existe una solución factible en el conjunto Ω ? Ejemplo : Problema de cobertura de Vértice. ( Conjunto U de vértices de G, tales que cualquier arco de G inicia y/o termina en un vértice de U) U = { w, s, y, z}
COMPLEJIDAD COMPUTACIONAL Profesor: Carlos Aguilar Santana • PO de cobertura de vértices : • Encontrar el subconjunto de vértices menor que sea una cobertura de vértices. • Instancia : Un grafo G. • Respuesta : Una cobertura de vértices de tamaño mínimo. • PD de cobertura de vértices : • Existe para el grafo G una cobertura S de tamaño K tal que no exista otra menor. • 1. Instancia : Un grafo G y un valor K. • 2. Respuesta : • SI : Si hay una cobertura de vértices de tamaño menor o igual a K. • NO : Si no existe. LUEGO UN PROBLEMA DE OPTIMIZACIÓN PUEDE SER TRATADO COMO UNO DE DECISIÓN
COMPLEJIDAD COMPUTACIONAL SI NO SI NO Profesor: Carlos Aguilar Santana Modelo de Cómputo Los podemos Agrupar en dos grandes conjuntos: Deterministicos. NO Deterministicos. DETERMINISTICO : Modelo matemático estándar, Siempre lo mismo. NO DETERMINISTICO : Modelo compuesto de dos fases: Adivinación, Verificación.
COMPLEJIDAD COMPUTACIONAL Profesor: Carlos Aguilar Santana Clases de Problemas de Decisión Clases P de problemas Conjunto de problemas, para los cuales se conoce un algoritmo Polinomial en una maquina Determinista. Clases NP de problemas Conjunto de problemas, para los cuales se toma aleatoria mente una posible solución, y se prueba su factibilidad con un algoritmo Polinomial en una maquina Determinista. Clases NP-Completo de problemas Se dice que un problema se decisión A pertenece a NP-Completo cuando: 1. A NP. 2. Cada Problema en NP se puede reducir polinomialmente a A.
Departamento de Educación Matemática COMPLEJIDAD COMPUTACIONAL “La Matemática es el Alfabeto con el cual Dios ha Escrito el Universo” Galileo Galilei Profesor: Carlos Aguilar Santana