29
Tema 02: Complejidad de los algoritmos 1 Análisis de algoritmos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom

Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

Embed Size (px)

Citation preview

Page 1: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

Tema 02: Complejidad de los algoritmos

1

Análisis de algoritmos

M. en C. Edgardo Adrián Franco Martínez http://[email protected]@edfrancom edgardoadrianfrancom

Page 2: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

Contenido• Algoritmo

• Algoritmo vs. Proceso Computacional

• Tamaño de problema

• Función complejidad

• Análisis Temporal

• Análisis Espacial

• Medición del tiempo de ejecución

• Medición de memoria requerida

• Ejemplos

2

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 3: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

Algoritmo“Un algoritmo es un procedimiento para resolver unproblema cuyos pasos son concretos y no ambiguos. Elalgoritmo debe ser correcto, de longitud finita y debeterminar para todas las entradas”

• Un paso es NO ambiguo cuando la acción a ejecutar estáperfectamente definida:• x ← log(0) Ambigua

• x ← log(10)+5 NO Ambigua

• Una instrucción es concreta o efectiva cuando se puedeejecutar en un intervalo finito de tiempo• x ← 2 + 8 Efectiva

• mensaje ← Concatena('Hola','Mundo') Efectiva

• x ← cardinalidad (números naturales) NO Efectiva

3

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 4: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

• Si un conjunto de instrucciones tiene todas las característicasde un algoritmo, excepto ser finito en tiempo se le denominaproceso computacional.

• Los sistemas operativos son el mejor ejemplo de procesocomputacional, pues están diseñados para ejecutar tareasmientras las haya pendientes, y cuando éstas se terminan, elsistema operativo entra en un estado de espera, hasta quellegan más, pero nunca termina.

• En computación se considera que un problema tienesolución algorítmica si además de que el algoritmo existe, sutiempo de ejecución es razonablemente corto.

4

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Algoritmo vs. Proceso Computacional

Page 5: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

• Ejemplo 01: Es posible diseñar un algoritmo para jugarajedrez que triunfe siempre: el algoritmo elige la siguientetirada examinando todas las posibles secuencias demovimientos desde el tablero actual hasta uno donde seaclaro el resultado y elige la tirada que le asegure el triunfo; elpequeño inconveniente de esta algoritmo es que dichoespacio de búsqueda se ha estimado en 100040 tableros porlo que puede tardarse años en tomar una decisión.

• Se considera que si un problema tiene una solución quetoma años en computar, dicha solución no existe.

5

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Tamaño de problema

Page 6: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

• Ejemplo 02: ordenar un conjunto de valores.

• Si el conjunto tiene 2 elementos es más fácil resolverlo que si tiene 20,análogamente un algoritmo que resuelva el problema tardará mástiempo mientras más grande sea el conjunto y requerirá una cantidadde memoria mayor para almacenar los elementos del conjunto.

• “En general la cantidad de recursos que consume unalgoritmo para resolver un problema se incrementaconforme crece el tamaño del problema”.

• Dependiendo del problema en particular, uno o varios de susparámetros serán elegidos como tamaño del problema.

6

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

49 12 56 90 2 5 11 32 22 7 99 02 35 1

Page 7: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

• Determinar el tamaño del problema es relativamente fácil realizando un análisis del problema si el problema ya ha sido comprendido.

7

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

PROBLEMA TAMAÑO DEL PROBLEMA

Búsqueda de un elemento en un conjunto

Número de elementos en el conjunto

Multiplicar dos matrices Dimensión de las matrices

Recorrer un árbol Número de nodos en el árbol

Resolver un sistema de ecuaciones lineales

Número de ecuaciones y/o incógnitas

Ordenar un conjunto de valores Número de elementos en el conjunto

Page 8: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

Función complejidad• La función complejidad, f(n); donde n es el tamaño del

problema, da una medida de la cantidad de recursos que unalgoritmo necesitará al implantarse y ejecutarse en algunacomputadora.

• La cantidad de recursos que consume un algoritmo crececonforme el tamaño del problema se incrementa, la funcióncomplejidad es monótona creciente f(n) > f(m) si n > m conrespecto al tamaño del problema.

8

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 9: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

• La memoria y el tiempo de procesador son los recursossobre los cuales se concentra todo el interés en el análisis deun algoritmo, así pues se distinguen dos clases de funcióncomplejidad:

1. Función complejidad espacial. Mide la cantidad de memoria quenecesitará un algoritmo para resolver un problema de tamaño n:

2. Función complejidad temporal. Indica la cantidad de tiempo querequiere un algoritmo para resolver un problema de tamaño n;viene a ser una medida de la cantidad de CPU que requiere elalgoritmo

9

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 10: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

• La cantidad de memoria que utiliza un algoritmo depende dela implementación, no obstante, es posible obtener unamedida del espacio necesario con la sola inspección delalgoritmo.

• Para obtener esta cantidad es necesario sumar todas lasceldas de memoria que utiliza. En general se requerirán dostipos de celdas de memoria:

1. Celdas estáticas. Son las que se utilizan en todo el tiempo que durala ejecución del programa, p.g., las variables globales.

2. Celdas dinámicas. Se emplean sólo durante un momento de laejecución, y por tanto pueden ser asignadas y devueltas conformese ejecuta el algoritmo, p.g., el espacio de la pila utilizado por lasllamadas recursivas. 10

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 11: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

• El tiempo que emplea un algoritmo en ejecutarse refleja lacantidad de trabajo realizado, así, la complejidad temporalda una medida de la cantidad de tiempo que requerirá laimplementación de un algoritmo para resolver el problema,por lo que se le puede determinar en forma experimental.

• Para encontrar el valor de la función complejidad de unalgoritmo A que se codifica un lenguaje de programación L;se compila utilizando el compilador C; se ejecuta en lamáquina M y se alimenta con un conjunto de casos S. Sedeberá de medir el tiempo que emplea para resolver loscasos (análisis a posteriori).

11

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 12: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

Análisis Temporal• Medir la complejidad temporal de manera experimental

presenta, entre otros, el inconveniente de que los resultadosobtenidos dependen de:• Las entradas proporcionadas,

• La calidad del código generado por el compilador utilizado

• La máquina en que se hagan las pruebas

• Cada operación requiere cierta cantidad constante de tiempopara ser ejecutada, por esta razón si se cuenta el número deoperaciones realizadas por el algoritmo se obtiene unaestimación del tiempo que le tomará resolver el problema.

• Dado un algoritmo, se puede determinar que tipos deoperaciones utiliza y cuantas veces las ejecuta para unaentrada especifica (análisis a priori).

12

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 13: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

• Para evitar que factores prácticos se reflejen en el cálculo dela función complejidad, el análisis temporal y el espacial apriori se realiza únicamente con base al algoritmo escrito enpseudocódigo.

• Como el pseudocódigo no se puede ejecutar para medir lacantidad de tiempo que consume, la complejidad temporalno se expresará en unidades de tiempo, sino en términos dela cantidad de operaciones que realiza.

13

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 14: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

• Los casos en la función complejidad espacial, se puedendefinir análogamente, considerando ahora el conjunto C(n);como el conjunto formado por el número de celdas dememoria utilizadas por el algoritmo para resolver cadainstancia del problema.

14

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Análisis Espacial

Page 15: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

• Medir

• Cantidad de instrucciones básicas (o elementales) que se ejecutan.

• Ejemplos de instrucciones básicas:

• Asignación de escalares

• Lectura o escritura de escalares

• Saltos (goto’s) implícitos o explícitos.

• Evaluación de condiciones

• Llamada a funciones

• Etc.

15

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 16: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

• Medir

• Cantidad de celdas de memoria (o elementales) que se requieren.

• Ejemplos de celdas de memoria:

• Variables del algoritmo

• Numero de objetos instanciados requeridos

• Tamaño de las estructuras de datos empleadas

• Memoria de Entrada/Salida requerida

• Etc.

16

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Page 17: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

Ejemplo 1: Cantidad de instrucciones

cont = 1;

do {

x = x + a[cont];

x = x + b[cont];

cont = cont + 1;

}

while (cont <= n)

1 asignación

n asignaciones

n asignaciones

n asignaciones

n +1 (comparaciones) + n (goto implícito)

1 (goto en falso)

TOTAL: 5n + 3 instrucciones

17

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Función de complejidad temporal

f(n)=5n+3

Page 18: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

f(n)= 5n + 3

18

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

n Instrucciones

0 3

1 8

10 53

100 503

500 2503

1000 5003

cont = 1;

do {

x = x + a[cont];

x = x + b[cont];

cont = cont + 1;

}

while (cont <= n)

Función de complejidad temporal

Page 19: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

Ejemplo 1: Cantidad de celdas de memoria

cont = 1;

do {

x = x + a[cont];

x = x + b[cont];

cont = cont + 1;

}

while (cont <= n)

1 variable “cont”

1 variable “x”

n variabes del arreglo “a”

n variabes del arreglo “b”

TOTAL: 2n + 2

19

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Función de complejidad espacial

f(n)=2n+2

Page 20: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

f(n)= 2n + 2

20

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

nCeldas de memoria

0 2

1 4

10 22

100 202

500 1002

1000 2002

cont = 1;

do {

x = x + a[cont];

x = x + b[cont];

cont = cont + 1;

}

while (cont <= n)

Función de complejidad espacial

Page 21: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

21

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Ejemplo 2: Cantidad de instrucciones

z = 0;

for (int x=1; x<=n; x++)

for (int y=1; y<=n; y++)

z = z + a[x,y];

1

1+ (n+1) (asignación + comparaciones) = 2+n

n+(n+1)*n = n2 +2n

n*n = n2

n2+n2 (incremento + goto implícito) = 2n2

n (goto en falso for y) = n

n+n (incremento + goto implícito) = 2n

1 (goto en falso for x) = 1

= 1+2+n+n2 +2n+n2+2n2+n+2n+1

TOTAL: 4n2 + 6n + 4

Función de complejidad temporal

f(n)=4n2 + 6n + 4

Page 22: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

f(n)=4n2 + 6n + 4

22

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

n Instrucciones

0 4

1 14

10 464

100 40,604

500 1,003,004

1000 4,006,004

z = 0;

for (int x=1; x<=n; x++)

for (int y=1; y<=n; y++)

z = z + a[x,y];

Función de complejidad temporal

Page 23: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

23

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Ejemplo 2: Cantidad de celdas de memoria

z = 0;

for (int x=1; x<=n; x++)

for (int y=1; y<=n; y++)

z = z + a[x,y];

1 (variable “z”)

1(variable “x”)

1(variable “y”)

n*n (variables de la matriz “a”)

TOTAL: n2 + 3

Función de complejidad temporal

f(n)=n2 + 3

Page 24: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

f(n)=n2 + 3

24

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

nCeldas de memoria

0 3

1 4

10 103

100 10,003

500 250,003

1000 1,000,003

z = 0;

for (int x=1; x<=n; x++)

for (int y=1; y<=n; y++)

z = z + a[x,y];

Función de complejidad espacial

Page 25: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

• Los algoritmos de los ejemplos 1 y 2 tienen un tamaño deproblema directamente asociados a n.

• En la mayoría de los algoritmos también se deberá deconsidera que el número de operaciones y celdas memoriadependerá de los casos de entrada por lo que debe derealizarse el análisis considerando cada caso K con el tamañode problema n.• i.e. en un algoritmo, se debe determinar que tipos de operaciones

utiliza, cuantas veces las ejecuta y cuanta memoria requiere para cadaentrada especifica k.

25

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Algoritmo

Problema de tamaño n

Entrada k

Page 26: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

26

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Ejemplo 3: Cantidad de instrucciones

func BusquedaLineal(Valor,A,n)

{

i=1;

while(i<=n&&A[i]!=Valor)

{

i=i+1;

}

return i;

}

Si el ciclo se ejecutará k veces (k puede tomar valor de 1 hasta n)

k sumas (una por cada iteración).

k + 2 asignaciones (las del ciclo y las realizadas fuera del ciclo).

k + 1 operaciones lógicas (la condición se debe probar k + 1 veces, la última es

para saber que el ciclo no debe volver a ejecutarse).

k + 1 comparaciones con el índice.

k + 1 comparaciones con elementos de A:

k + 1 accesos a elementos de A:

6k + 6 operaciones en total.

49 12 56 90 2 5 11 32 22 7

n=10

Caso 0: Valor=11, A={49,12,56,90,2,5,11,32,22,7}, n=10Si el Valor es 11 ⟹ 𝒔𝒆 𝒆𝒏𝒕𝒓𝒂 𝒂𝒍 𝒄𝒊𝒄𝒍𝒐 6 veces ⟹ k=6

A=

Page 27: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

f(k)=6k + 6

k=Numero de veces que se entra al ciclo

27

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

k Instrucciones

0 6

1 12

10 66

100 606

500 3006

1000 6006

func BusquedaLineal(Valor,A,n)

{

i=1;

while(i<=n&&A[i]!=Valor)

{

i=i+1;

}

return i;

}

Función de complejidad temporal

Page 28: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

28

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Ejemplo 3: Cantidad de celdas de memoria

func BusquedaLineal(Valor,A,n)

{

i=1;

while(i<=n&&A[i]!=Valor)

{

i=i+1;

}

return i;

}

Si se analizaran todos los casos

Para este algoritmo la complejidad espacial no varia

n + 3 celdas de memoria en total.

49 12 56 90 2 5 11 32 22 7

n=10

Caso 0: Valor=11, A={49,12,56,90,2,5,11,32,22,7}, n=10Si el Valor=11 ⟹ 𝒔𝒆 𝒓𝒆𝒒𝒖𝒊𝒆𝒓𝒆𝒏 𝟏𝟎 + 𝟑 variables

Caso 1: Valor=12, A={49,12,56,90,2,5,11,32,22,7}, n=10Si el Valor=12 ⟹ 𝒔𝒆 𝒓𝒆𝒒𝒖𝒊𝒆𝒓𝒆𝒏 𝟏𝟎 + 𝟑 variables

A=

Page 29: Tema 02:Complejidad de los algoritmos - Web personal …€¢Si un conjunto de instrucciones tiene todas las características de un algoritmo, excepto ser finito en tiempo se le denomina

f(n)= n + 3

29

An

ális

is d

e al

gori

tmo

s0

2 C

om

ple

jidad

de

algo

ritm

os

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

kCeldas de memoria

0 3

1 4

10 13

100 103

500 503

1000 1003

func BusquedaLineal(Valor,A,n)

{

i=1;

while(i<=n&&A[i]!=Valor)

{

i=i+1;

}

return i;

}

Función de complejidad espacial constante para todos los casos