Departamento de Educacin Matemtica COMPLEJIDAD COMPUTACIONAL La Matemtica

  • Slides: 19
Download presentation
Departamento de Educación Matemática COMPLEJIDAD COMPUTACIONAL “La Matemática es el Alfabeto con el cual

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 Metodología para la Solución de Problemas Por medio de un Computador 1.

COMPLEJIDAD COMPUTACIONAL Metodología para la Solución de Problemas Por medio de un Computador 1. Definición del Problema (Requerimientos) 2. Análisis del Problema (Datos e entrada, salida. con lo que se cuenta) 3. Diseño (Algoritmos, BD, Topologías) 4. Codificación (Lenguaje de Programación) 5. Pruebas (Depuración) 6. Liberación (Entrega) Profesor: Carlos Aguilar Santana

COMPLEJIDAD COMPUTACIONAL Aspectos básicos 1. Algoritmo 2. Caracterización de un problema Algorítmico Es un

COMPLEJIDAD COMPUTACIONAL Aspectos básicos 1. Algoritmo 2. Caracterización de un problema Algorítmico Es un procedimiento “Paso a Paso” - Conjunto de todos los datos de entrada. - El objetivo del problema. 3. 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. Profesor: Carlos Aguilar Santana

COMPLEJIDAD COMPUTACIONAL Representación de problemas Un problema se representa por: - Un dominio Ω

COMPLEJIDAD COMPUTACIONAL 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) 10 1 Dominio: { 2 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 3 20 15 4 3 4 } 12 Profesor: Carlos Aguilar Santana = 57 = 29 = 57 = 42 = 29

COMPLEJIDAD COMPUTACIONAL Variantes de un problema Π 1. Problemas de Decisión ¿Existe una estructura

COMPLEJIDAD COMPUTACIONAL Variantes de un problema Π 1. Problemas de Decisión ¿Existe una estructura S que satisface las propiedades de п? Respuesta : SI o NO 2. Problemas de Localización Encontrar una estructura S que satisface las propiedades de п Respuesta : S 3. 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

COMPLEJIDAD COMPUTACIONAL Complejidad Computacional 1. NO se refiere a: - Dificultad de diseño. -

COMPLEJIDAD COMPUTACIONAL Complejidad Computacional 1. NO se refiere a: - Dificultad de diseño. - Rebuscado de un algoritmo. 2. SI se refiere a: - Medidas de desempeño - Tiempo Complejidad Temporal - Espacio Complejidad Espacial Profesor: Carlos Aguilar Santana

COMPLEJIDAD COMPUTACIONAL Complejidad Temporal 1. Se utiliza el tamaño de entrada para definir al

COMPLEJIDAD COMPUTACIONAL Complejidad Temporal 1. 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 Profesor: Carlos Aguilar Santana

COMPLEJIDAD COMPUTACIONAL Ejemplo 1 : Para el siguiente algoritmo, su T(n) = 4 n+3

COMPLEJIDAD COMPUTACIONAL Ejemplo 1 : Para el siguiente algoritmo, su T(n) = 4 n+3 Algoritmo : (1) (2) (3) suma = 0; for(i=1; i<=n; i++) 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. 2 n Instrucción (2) Ocupa 1 unidad de tiempo en la asignación, n+1 en las comparaciones y n en los incrementos. TOTAL Profesor: Carlos Aguilar Santana 2 n+2 4 n+3

COMPLEJIDAD COMPUTACIONAL Ejemplo 2 : Para el siguiente algoritmo, su T(n) = 7 n

COMPLEJIDAD COMPUTACIONAL Ejemplo 2 : Para el siguiente algoritmo, su T(n) = 7 n 2+8 n+5 Algoritmo : (1) (2) (3) (4) suma = 0; for(i=1; i<=n; i++) for(j=1; j<=n; j++) suma = suma + i*j; Instrucción (1) Ocupa 1 unidad de tiempo. 1 Instrucción (2)(3) Ocupan 2 n+2 unidades de tiempo cada una y se ejecutan anidadas. (2 n+2)* (2 n+2) = 4 n 2+8 n+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 TOTAL Profesor: Carlos Aguilar Santana 3 n 2 7 n 2+8 n+5

COMPLEJIDAD COMPUTACIONAL Orden de un Algoritmo 1. Para simplificar el estudio de la complejidad

COMPLEJIDAD COMPUTACIONAL Orden de un Algoritmo 1. Para simplificar el estudio de la complejidad computacional, se adoptan ciertas convenciones en su notación. 2. Se define el orden de un algoritmo como el termino de mayor grado. Tiempo de ejecución T(n)= 4 n+3 Orden O(n) Orden Polinomial Lineal. Tiempo de ejecución T(n)= 7 n 2+8 n+5 Orden O(n 2) Orden Polinomial Cuadrático. Tiempo de ejecución T(n)= 2 n+3 Orden O(2 O( n) Orden Exponencial. O(nx) Tiempo Polinomial Algoritmos Eficientes Problemas Tratables O(xn) Tiempo Exponencial Algoritmos Ineficientes Problemas Intratables Profesor: Carlos Aguilar Santana

COMPLEJIDAD COMPUTACIONAL Ejemplo 3 : El siguiente algoritmo tiene tiempo exponencial de O(2 n)

COMPLEJIDAD COMPUTACIONAL Ejemplo 3 : El siguiente algoritmo tiene tiempo exponencial de O(2 n) Algoritmo : (1) void Hanoi( int n, int A, int B, int C) (2) { (3) if(n==1) (4) Mueve. Anillo(A, B); (5) else { (6) Hanoi(n-1, A, C, B); (7) Mueve. Anillo(A, B); (8) Hanoi(n-1, C, B, A); (9) } (10) } H(2, A, B, C) M(A, B) A B C H(1, C, B, A) H(1, A, C, B) A B Profesor: C Carlos Aguilar Santana A B C

COMPLEJIDAD COMPUTACIONAL Algoritmo : (1) (2) (3) (4) (5) (6) (7) (8) (9) (10)

COMPLEJIDAD COMPUTACIONAL Algoritmo : (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) void Hanoi( int n, int A, int B, int C) { if(n==1) Mueve. Anillo(A, B); else { Hanoi(n-1, A, C, B); Mueve. Anillo(A, B); Hanoi(n-1, C, B, A); } } H(3, A, B, C) M(A, B) A B C H(2, C, B, A) H(2, A, C, B) A B Profesor: C Carlos Aguilar Santana A B C

COMPLEJIDAD COMPUTACIONAL Recordemos que el orden de este algoritmo es 2 n luego su

COMPLEJIDAD COMPUTACIONAL Recordemos que el orden de este algoritmo es 2 n 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. Profesor: Carlos Aguilar Santana

COMPLEJIDAD COMPUTACIONAL Recordemos las Variantes de un problema Π 1. Problemas de Decisión ¿Existe

COMPLEJIDAD COMPUTACIONAL Recordemos las Variantes de un problema Π 1. Problemas de Decisión ¿Existe una estructura S que satisface las propiedades de п? Respuesta : SI o NO 2. Problemas de Localización Encontrar una estructura S que satisface las propiedades de п Respuesta : S 3. 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

COMPLEJIDAD COMPUTACIONAL Π de optimización tratado como Π de decisión - Valor objetivo K

COMPLEJIDAD COMPUTACIONAL Π 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) z U = { w, s, y, z} s v w y u x Profesor: Carlos Aguilar Santana

COMPLEJIDAD COMPUTACIONAL PO de cobertura de vértices : Encontrar el subconjunto de vértices menor

COMPLEJIDAD COMPUTACIONAL 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. 2. Instancia : Un grafo G y un valor K. 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 Profesor: Carlos Aguilar Santana

COMPLEJIDAD COMPUTACIONAL Modelo de Cómputo Los podemos Agrupar en dos grandes conjuntos: Deterministicos. NO

COMPLEJIDAD COMPUTACIONAL Modelo de Cómputo Los podemos Agrupar en dos grandes conjuntos: Deterministicos. NO Deterministicos. DETERMINISTICO : Modelo matemático estándar, Siempre lo mismo. SI NO NO DETERMINISTICO : Modelo compuesto de dos fases: Adivinación, Verificación. SI Profesor: Carlos Aguilar Santana NO

COMPLEJIDAD COMPUTACIONAL Clases de Problemas de Decisión Clases P de problemas Conjunto de problemas,

COMPLEJIDAD COMPUTACIONAL 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. Profesor: Carlos Aguilar Santana

Departamento de Educación Matemática COMPLEJIDAD COMPUTACIONAL “La Matemática es el Alfabeto con el cual

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