18
COMPLEJIDAD COMPUTACIONAL Alumno: José Martínez Carrera: Ingeniería en Informática Docente: Pilar Pardo

Resumen Complejidad Computacional y de Algoritmos

Embed Size (px)

Citation preview

Page 1: Resumen Complejidad Computacional y de Algoritmos

COMPLEJIDAD COMPUTACIONAL

Alumno: José MartínezCarrera: Ingeniería en InformáticaDocente: Pilar Pardo

Page 2: Resumen Complejidad Computacional y de Algoritmos

COMPLEJIDAD COMPUTACIONAL

Metodología para la Solución de ProblemasPor 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)

Page 3: Resumen Complejidad Computacional y de Algoritmos

COMPLEJIDAD COMPUTACIONAL

Aspectos básicos

1. Algoritmo

Es un procedimiento “Paso a Paso”

2. Caracterización de un problema Algorítmico

- 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.

Page 4: Resumen Complejidad Computacional y de Algoritmos

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)

1 2

43

10

1520

12

4

3

Dominio: { 1-2-

4-3-11-2-

3-4-11-3-

4-2-11-3-

2-4-11-4-

2-3-11-4-

3-2-1 }

= 57= 29= 57= 42= 42= 29

Page 5: Resumen Complejidad Computacional y de Algoritmos

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 Ω

Page 6: Resumen Complejidad Computacional y de Algoritmos

COMPLEJIDAD COMPUTACIONAL

Complejidad Computacional

1. NONO se refiere a:

- Dificultad de diseño.- Rebuscado de un algoritmo.

2. SISI se refiere a:

- Medidas de desempeño

- Tiempo Complejidad Temporal

- Espacio Complejidad Espacial

Page 7: Resumen Complejidad Computacional y de Algoritmos

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

Page 8: Resumen Complejidad Computacional y de Algoritmos

COMPLEJIDAD COMPUTACIONAL

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;

TOTAL 4n+34n+3

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

1

n

i

i

Page 9: Resumen Complejidad Computacional y de Algoritmos

COMPLEJIDAD COMPUTACIONAL

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 (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 7n7n22+8n+5 +8n+5

Instrucción (1) Ocupa 1 unidad de tiempo. 1

1 1

*n n

i j

i j

Page 10: Resumen Complejidad Computacional y de Algoritmos

Orden de un Algoritmo

1. Para simplificar el estudio de la complejidad computacional, se adoptan ciertas convenciones en su notación.

COMPLEJIDAD COMPUTACIONAL

2. Se define el orden de un algoritmo como el termino de mayor grado.

Tiempo de ejecución T(n)= 4n+3 Orden O(n)O(n) Orden Polinomial Lineal.

Tiempo de ejecución T(n)= 7n2+8n+5 Orden O(nO(n22)) Orden Polinomial Cuadrático.

Tiempo de ejecución T(n)= 2n+3 Orden O(O(2n)) Orden Exponencial.

O(nO(nxx)) Tiempo PolinomialTiempo Polinomial Algoritmos Eficientes Problemas Tratables

O(xO(xnn)) Tiempo ExponencialTiempo Exponencial Algoritmos Ineficientes Problemas Intratables

Page 11: Resumen Complejidad Computacional y de Algoritmos

COMPLEJIDAD COMPUTACIONAL

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) }

A B C

H(2,A,B,C)

A B C

H(1,A,C,B)

A B C

M(A,B)

H(1,C,B,A)A B C

Page 12: Resumen Complejidad Computacional y de Algoritmos

COMPLEJIDAD COMPUTACIONAL

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)

H(2,A,C,B)

M(A,B)

H(2,C,B,A)

A B C

A B C

A B C

A B C

Page 13: Resumen Complejidad Computacional y de Algoritmos

COMPLEJIDAD COMPUTACIONAL

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.

9 991 15 *2 *

60*60*24*30*12*100Siglos

T(n=1000) = 10282 Siglos.

Page 14: Resumen Complejidad Computacional y de Algoritmos

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 Ω

Page 15: Resumen Complejidad Computacional y de Algoritmos

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 v

xy

w

u

s U = { w, s, y, z}

Page 16: Resumen Complejidad Computacional y de Algoritmos

COMPLEJIDAD COMPUTACIONAL

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.

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.

LUEGO UN PROBLEMA DE OPTIMIZACIÓN PUEDE SER TRATADO COMO UNO DE DECISIÓN

Page 17: Resumen Complejidad Computacional y de Algoritmos

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 NO

Page 18: Resumen Complejidad Computacional y de Algoritmos

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.