Teoría de complejidad computacional (tcc)

20
Teoría de Complejidad Computacional (TCC) Grupo 8 Raquel Núñez 12-1020

Transcript of Teoría de complejidad computacional (tcc)

Page 1: Teoría de complejidad computacional (tcc)

Teoría de Complejidad Computacional (TCC)

Grupo 8Raquel Núñez

12-1020

Page 2: Teoría de complejidad computacional (tcc)

Teoría de Complejidad Computacional:

Complejidad Espacial

Complejidad Temporal

Puntos a Tratar:

TCC y su vinculación con la TAYLF.

Page 3: Teoría de complejidad computacional (tcc)

• Objetivo:

▫ Saber cuánto cuesta resolver un problema

• Medir la complejidad = Medir los recursos consumidos▫ Tiempo Complejidad Temporal→▫ Espacio Complejidad Espacial→

Page 4: Teoría de complejidad computacional (tcc)

Introducción• Generalmente, un problema dado puede resolverse mediante muy diversos

algoritmos o programas. No todas las soluciones son igualmente buenas. • A la hora de analizar la complejidad de un sistema una de las cosas mas

importante cuando se selecciona un algoritmo es el tiempo que va a tardar en arrojar una salida, es decir su eficiencia.

• Esto se vuelve difícil por lo que generalmente se calcula la cantidad de operaciones en función del tamaño de la entrada y esto se multiplica por la constante de tiempo que la computadora tarda en realizar una operación.

• Uno de los problemas mas comunes dentro de la ciencia computacional es la ordenación de datos. La complejidad posee uno de los algoritmos empleados para resolver este problema al no escribir los datos sino su función de crecimiento.

Page 5: Teoría de complejidad computacional (tcc)

Complejidad Computacional• Es una rama de la teoría de la computación que estudia, de manera

técnica, la complejidad inherente a la solución de un problema computable.

• Estudia el problema considerando todos los algoritmos posibles para resolverlo.

Para ello, considera los 2 tipos de recursos requeridos durante el cómputo para resolver un problema:

Tiempo: Número de pasos base de ejecución de un algoritmo para resolver un problema.

Espacio: Cantidad de memoria utilizada para resolver un problema.

Page 6: Teoría de complejidad computacional (tcc)

Los problemas lo podemos dividir en dos grupos:

Un problema decidible puede no ser solucionado por un computador porque requiere un mayor numero de operaciones para resolverlo.

Page 7: Teoría de complejidad computacional (tcc)

Dividiendo en dos los problemas decidibles

Todos los algoritmos a los que se la ha podido establecer su tiempo de ejecución.

Requiere una repuesta de longitud exponencial

Page 8: Teoría de complejidad computacional (tcc)

Para tener una mejor idea de la diferencia entre tratable e intratable:

Esto significa que si suponemos que se ejecutan k instrucciones por microsegundo, los algoritmos tardan

Page 9: Teoría de complejidad computacional (tcc)

TCC y su vinculación con la TAYLF• Permite abordar cuestiones de gran interés para un

informático como que tipo de problemas pueden ser resueltos por un computador o, caso de existir una solución computable para un problema, como podemos medir la calidad (en termino de eficiencia) de dicha solución. Es decir, la teoría de Autómatas es la puerta que nos permite la entrada hacia campos tan interesantes como la computabilidad y la complejidad algorítmica.

Page 10: Teoría de complejidad computacional (tcc)

• Considerando la Teoría de la Complejidad Computacional un problema de decisión podrá ser:

Clase P (Polynomial-time) • Cuando el tiempo de ejecución de un algoritmo es menor que un cierto valor

calculado a partir del largo de la variable de entrada (N) usando una fórmula polinómica, se dice que dicho problema se puede resolver en un tiempo polinómico. Por ejemplo, la busqueda de una palabra en un texto con N palabras necesita menos de 50N2+N iteraciones, entonces el problema es resoluble en un "tiempo polinómico". De esa manera, tiempos de 2n2+5n, o 4n6+7n4-2n2 son polinómicos; pero 2n no lo es.

Page 11: Teoría de complejidad computacional (tcc)

• Ejemplo: El problema del vendedor viajero El objetivo es encontrar una ruta que, comenzando y terminando en una ciudad concreta, pase una sola vez por cada una de las ciudades y minimice la distancia recorrida por el viajante

Problemas NP (Polynomial non-deterministic)

Page 12: Teoría de complejidad computacional (tcc)

Clase NP-Completo Dentro de la clases NP se definieron los problemas “difíciles” como

NP-completos Definiciones: NP: Se dice que un problema es NP si existe una maquina de Turing a

tiempo polinomial que verifique la solución.

NP-completo: Si el problema es NP y todo otro problema NP es reducible a este, es

decir basta resolver el problema en cuestión para resolver cualquier otro. Los tiempos de ejecución de los problemas NP-completos son exponenciales en el largo de la entrada n. es decir en el orden de magnitud de 2n

Page 13: Teoría de complejidad computacional (tcc)

Existe una serie de complejidades que podemos denominar “típicas”. En la siguiente tabla las podemos ver ordenadas de mejor a peor:

Page 14: Teoría de complejidad computacional (tcc)

Complejidad Temporal• Se denomina complejidad temporal a la función T(n) que mide el número

de instrucciones realizadas por el algoritmo para procesar los n elementos de entrada. Cada instrucción tiene asociado un costo temporal.

• Afecta al tiempo de ejecución el orden en que se procesen los elementos de entrada.

Page 15: Teoría de complejidad computacional (tcc)

• Ejemplo

• Contamos con una computadora capaz de procesar datos en 10-4 seg. En esta computadora se ejecuta algoritmo que lee registros de una base de datos, dicho algoritmo tiene una complejidad exponencial 2n. Cuanto tiempo se tardara en procesar una entrada n de datos?

Page 16: Teoría de complejidad computacional (tcc)
Page 17: Teoría de complejidad computacional (tcc)

Complejidad espacial Parte del análisis de un algoritmo se hace vía la complejidad espacial para

obtener un estimado del uso de memoria principal expresado mediante una función según el tamaño de la entrada.

Existen 4 aspectos relevantes a considerar:• La cantidad de memoria requerida por el código del algoritmo.• Para almacenar los datos de entrada.• Requerida para los datos de salida• La cantidad de memoria requerida en cuanto a espacio de trabajo del

algoritmo para realizar los cálculos y asignaciones.

Page 18: Teoría de complejidad computacional (tcc)

Ejercicios• 1- Contamos con una computadora capaz de procesar datos en 10-4 seg. En esta computadora se

ejecuta algoritmo que lee registros de una base de datos, dicho algoritmo tiene una complejidad exponencial 3n. Cuanto tiempo se tardara en procesar una entrada n de datos?

• 2- n=10

• 3- Supongamos que cada noche disponemos de una hora de CPU para ejecutar cierto programa y que con esa hora tenemos suficiente tiempo para ejecutar un programa con una entrada, a lo sumo, de tamaño n= 1 000 000. Pero el centro de cálculo tras una reasignación de tiempos decide asignarnos 3 horas diarias de CPU. Ahora, ¿cuál es el mayor tamaño de entrada que podrá gestionar nuestro programa, si su complejidad T(n) fuera (para alguna constante ki)?

• (a) k1 n (b) k2 n2 (c) k3 10n

• 4- Supongamos que cada noche disponemos de una hora de CPU para ejecutar cierto programa y que con esa hora tenemos suficiente tiempo para ejecutar un programa con una entrada, a lo sumo, de tamaño n= 1 000 000. En esta situación nuestro jefe compra una máquina 100 veces más rápida que la vieja. Ahora ¿cuál es el mayor tamaño de entrada que podrá gestionar nuestro programa en una hora, si su complejidad T(n) fuera (para alguna constante ki)? (a) k1 n (b) k2 n 2 (c) k3 10n

Page 19: Teoría de complejidad computacional (tcc)

Video

https://www.youtube.com/watch?v=-OMysIB8FfY

Page 20: Teoría de complejidad computacional (tcc)

Bibliografia• Silva, Leopordo (2010), Estructura de Datos y Algoritmos:

http://www2.elo.utfsm.cl/~lsb/elo320/clases/c4.pdf

• A. Sanchis, A. Ledesma, J.A. Iglesias, B. Garcia, J.M.Alonso: http://ocw.uc3m.es/ingenieria-informatica/teoria-de-automatas-y-lenguajes-formales/material-de-clase-1/tema-8-complejidad-computacional

• Abeliuk, Andres. Chile :

http://users.dcc.uchile.cl/~aabeliuk/documents/complejidad.pdf