Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3:...

46
Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad

Transcript of Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3:...

Page 1: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

1

Tema 3: Complejidad

Page 2: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

2

Índice

3.1 Complejidad computacional y asintótica

3.2 Ejemplos de complejidad asintótica

3.3 La notación O

3.4 Análisis del caso mejor, peor y medio

Page 3: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

3

Complejidad computacional y asintótica

AlgoritmoEntrada Salida

Page 4: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

4

• Para resolver un problema suele ser habitual disponer de varios algoritmos.

– Ejemplo: para obtener el m.c.d. de dos números se puede:• Cálculo de divisores

• Descomponer en factores primos

• Utilizar el Algoritmo de Euclides

• El objetivo es elegir el algoritmo más eficiente de ellos

Complejidad computacional y asintótica

Page 5: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

5

• Regla: La elección del algoritmo nunca debería afectar a la corrección de la solución ni a la claridad (evitar algoritmos incomprensibles).

• Excepción: A veces se eligen algoritmos aproximados o heurísticos porque la solución correcta resulta inmanejable. No alcanzan la solución óptima pero sí a una solución aceptable.

– Ejemplos: • Algoritmo aproximado: Cálculo de la raíz cuadrada• Heurística: Problema del viajante

• Mito:– La capacidad de computación es ilimitada, ¿por qué preocuparse

de la eficiencia si siempre podemos encontrar un sistema más potente?

– Además está la Ley de Moore

Complejidad computacional y asintótica

Page 6: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

6

• Para comparar algoritmos se puede utilizar una medida del grado de dificultad del algoritmo: la complejidad computacional

COMPLEJIDAD COMPUTACIONAL

Indica el esfuerzo que hay que realizar para aplicar un algoritmo y lo costoso que éste resulta.

Dicho coste que se puede medir de diversas formas (espacio, tiempo...)

Complejidad computacional y asintótica

Page 7: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

7

• Un algoritmo es más eficiente cuanto menos complejo sea

• La eficiencia suele medirse en términos de consumo de recursos:– Espaciales: cantidad de memoria que un algoritmo consume o

utiliza durante su ejecución Complejidad espacial– Temporales: tiempo que necesita el algoritmo para

ejecutarse Complejidad temporal– Otros: utilización de CPU, utilización de periféricos, tiempo y

coste de implementación...

Complejidad computacional y asintótica

Page 8: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

8

• Objetivo: encontrar algoritmos con la menor complejidad espacial y temporal– Menor complejidad espacial suele implicar mayor

complejidad temporal

• Nos centraremos en complejidad temporal por ser el recurso más crítico

Complejidad computacional y asintótica

Page 9: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

9

• Factores que influyen en la complejidad

– Tamaño del problema

– Naturaleza de los datos de entrada

– Recursos hardware y software

Complejidad computacional y asintótica

Page 10: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

10

• Factores que influyen en la complejidad– Tamaño del problema: magnitud(es) que al

aumentar incrementan la complejidad del algoritmo.

Ejemplos:

Ordenación de un vector: número de elementos

Factorizar un número en sus factores primos: valor del número

Complejidad computacional y asintótica

Page 11: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

11

• Factores que influyen en la complejidad– Naturaleza de los datos de entrada: en función de

cuáles sean los datos del problema se ejecutarán o no determinadas instrucciones de decisión y será distinto el número de iteraciones de los bucles el problema se resolverá en más o en menos tiempo.

Ejemplo:

buscar en un vector el valor que está almacenado en la primera celda resulta trivial en la búsqueda lineal.

Complejidad computacional y asintótica

Page 12: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

12

• Factores que influyen en la complejidad

0

20

40

60

80

100

120

Tie

mpo d

e eje

cuci

ón

1000 2000 3000 4000

Tamaño de Entrada

caso mejorcaso mediocaso peor

– Naturaleza de los datos de entrada:

• Caso mejor: los datos de entrada consumen el mínimo

• Caso peor: los datos de entrada consumen el máximo (cota superior).

• Caso promedio: los datos se distribuyen de forma aleatoria. Difícil de calcular.

Complejidad computacional y asintótica

Page 13: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

13

• Enfoques para medir la complejidad de un algoritmo:

– Enfoque empíricos o a posteriori

– Enfoque teórico o a priori.

Complejidad computacional y asintótica

Page 14: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

14

• Enfoque empíricos o a posteriori

1. Escribir un programa que implemente el algoritmo, por ejemplo en Java.

2. Ejecutar el programa con entradas de tamaño y composición variadas

3. Usar un método como System.currentTimeMillis() para obtener una medida exacta del tiempo de ejecución real

4. Trazar los resultados0

1000

2000

3000

4000

5000

6000

7000

8000

9000

0 50 100

Tamaño Entrada

Tie

mpo (

ms)

Complejidad computacional y asintótica

Page 15: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

15

• Enfoque teóricos o a priori

1. Utilizar una descripción de alto nivel del algoritmo (v.g. en pseudocódigo)

2. Determinar, matemáticamente, la cantidad de recursos necesarios para ejecutar el algoritmo

3. Obtener una función genérica f(n) que permita hacer predicciones sobre la utilización de recursos, siendo n el tamaño del problema

Complejidad computacional y asintótica

Page 16: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

16

• Ventajas e inconvenientes1. El estudio a posteriori requiere la implementación del algoritmo

(mayor coste). El estudio a priori solo requiere de una descripción de alto nivel (pseudocódigo).

2. En el estudio a posteriori no tenemos la seguridad de los recursos que realmente se van a consumir si varían las entradas. El estudio a priori es independiente de los datos de entrada.

3. En el estudio a posteriori, los resultados sólo serán válidos para unas determinadas condiciones de ejecución. Es difícil extrapolar los resultados si se producen cambios en el hardware, sistema operativo, lenguaje utilizado, etc. El estudio a priori es independiente de las condiciones de ejecución.

4. El estudio a posteriori permite hacer una evaluación experimental de los recursos consumidos que no es posible en el estudio a priori.

Complejidad computacional y asintótica

Page 17: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

17

Principio de invarianza:Dos implementaciones de un mismo algoritmo no diferirán más que en una constante multiplicativa.

Si f1(n) y f2(n) son los tiempos consumidos por dos implementaciones de un mismo algoritmo, se verifica que:

c, d R,

f1(n) c·f2(n)

f2(n) d·f1(n)

• El estudio a posteriori trata con programas. El estudio a priori trata con algoritmos

Es preferible el estudio a priori

Complejidad computacional y asintótica

Page 18: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

18

COMPLEJIDAD ASINTÓTICA

– Consiste en el cálculo de la complejidad temporal a priori de un algoritmo en función del tamaño del problema, n, prescindiendo de factores constantes multiplicativos y suponiendo valores de n muy grandes

– No sirve para establecer el tiempo exacto de ejecución, sino que permite especificar una cota (inferior, superior o ambas) para el tiempo de ejecución de un algoritmo

Complejidad computacional y asintótica

Page 19: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

19

Ejemplos de complejidad asintótica

maximoArray(A)máximoEntrada A array de n enterosSalida elemento máximo de A

INICIO maxActual A[0]PARA i 1 HASTA n 1 HACER

SI A[i] maxActual ENTONCESmaxActual A[i]

DEVOLVER maxActual FIN

• Ejemplo en pseudocódigo:Buscar el máximo valor de un array

Page 20: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

20

• Ejemplo en pseudocódigo: Operaciones primitivas

• Cómputos básicos realizados por un algoritmo

• Identificables en pseudocódigo• Muy independiente del lenguaje de

programación• La definición exacta no es

importante

• Ejemplos:– Evaluar una

expresión– Asignar un valor a

una variable– Indexar un array– Llamar a un

método– Retornar un valor

Ejemplos de complejidad asintótica

Page 21: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

21

• Revisando el pseudocódigo, se puede estipular el número máximo de operaciones primitivas ejecutadas por un algoritmo, como una función del tamaño de la entradamaximoArray(A)INICIO

operacionesmaxActual A[0] 2PARA i 1 HASTA n 1 HACER 2 + n

SI A[i] maxActual 2(n 1)ENTONCES maxActual A[i] 2(n 1)

{ incrementar contador i } 2(n 1)DEVOLVER maxActual 1

FINTotal 7n 1

Ejemplos de complejidad asintótica

Page 22: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

22

• El algoritmo maximoArray ejecuta 7n 1 operaciones primitivas en el peor de los casos

• Se definen:

a Tiempo tardado por la op. primitiva más rápida

b Tiempo tardado por la op. primitiva más lenta• Sea T(n) el tiempo de ejecución real para el peor de

los casos de maximoArray . Entonces:a (7n 1) T(n) b(7n 1)

• Por lo tanto, el tiempo de ejecución T(n) está acotado por dos funciones lineales

Ejemplos de complejidad asintótica

Page 23: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

23

• Un cambio en el entorno hardware/software– Afecta a T(n) en un factor constante, pero– No altera la tasa de crecimiento de T(n)

• La tasa de crecimiento lineal del tiempo de ejecución T(n) es una propiedad intrínseca del algoritmo maximoArray

Ejemplos de complejidad asintótica

Page 24: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

24

• Tasa de crecimiento:– Lineal n– Cuadrática n2

– Cúbica n3

• En un diagrama logarítmico, la pendiente de la línea corresponde a la tasa de crecimiento de la función

1E+01E+21E+41E+61E+8

1E+101E+121E+141E+161E+181E+201E+221E+241E+261E+281E+30

1E+0 1E+2 1E+4 1E+6 1E+8 1E+10n

T(n)

Cúbica

Cuadrática

Lineal

Ejemplos de complejidad asintótica

Page 25: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

25

• La tasa de crecimiento no se ve afectada por:– factores constantes – términos de orden

menor

• Ejemplos– 102n + 105 es una

función lineal– 105n2 + 108n es una

función cuadrática1E+01E+21E+41E+61E+8

1E+101E+121E+141E+161E+181E+201E+221E+241E+26

1E+0 1E+2 1E+4 1E+6 1E+8 1E+10n

T(n)

Cuadrática

Cuadrática

Lineal

Lineal

Ejemplos de complejidad asintótica

Page 26: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

26

• Dadas las funciones f(n) y g(n), se dice que f(n) es O(g(n)) si existen constantes positivasc y n0 tales que

f(n) cg(n) para n n0

• Ejemplo: 2n + 10 es O(n)– 2n + 10 cn– (c 2) n 10– n 10/(c 2)– Elegir c = 3 y n0 = 10

1

10

100

1,000

10,000

1 10 100 1,000n

3n

2n+10

n

La notación O

Page 27: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

27

• Ejemplo: 5n3 + 3n2 +1 O(n3)

tomando n0= 3, c= 6 tenemos que:

5n3 + 3n2 +1 ≤ 6n3

 

Nota: También pertenecería a O(n4), pero no a O(n2).

La notación O

Page 28: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

28

La notación O

• Existen diferentes notaciones para la complejidad asintótica

• Una de ellas es la notación O, que permite especificar la cota superior de la ejecución de un algoritmo

• La sentencia “f(n) es O(g(n))” significa que la tasa de crecimiento de f(n) no es mayor que la tasa de crecimiento de g(n)

• La notación “O” sirve para clasificar las funciones de acuerdo con su tasa de crecimiento

Page 29: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

29

• Ejemplo: la función n2 no es O(n)– n2 cn– n c

– La desigualdad anterior no puede satisfacerse porque c debe ser una

constante

1

10

100

1,000

10,000

100,000

1,000,000

1 10 100 1,000n

n 2̂

100n

10n

n

La notación O

Page 30: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

30

• La notación “O” proporciona una cota superior para la tasa de crecimiento de una función

f(n) es O(g(n)) g(n) es O(f(n))

g(n) crece más Sí No

f(n) crece más No Sí

Igual crecimiento Sí Sí

La notación O

Page 31: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

31

{n3}

{n2}

• Sea {g(n)} la clase (conjunto) de funciones que son O(g(n))

• Se tiene:{n} {n2} {n3} {n4} {n5} …

donde la inclusión es estricta

{n}

La notación O

Page 32: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

32

• Propiedades de O(f(n)):– Reflexiva: f(n)O(f(n))– Transitiva: si f(n) O(g(n)) y g(n) O(h(n)),

entonces f(n) O(h(n))– Eliminación de constantes: O(c·f(n)) = O(f(n)),

para todo c.– O(logan) = O(logbn), para todo a y b.– Suma de órdenes: O(f(n)+g(n)) =

O(max(f(n),g(n))– Producto de órdenes: O(f(n))·O(g(n)) = O(f(n)

•g(n))

La notación O

Page 33: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

33

• Jerarquía de órdenes de complejidad

La notación O

O(1) Constante No depende del tamaño del problema

Eficiente

O(log n) Logarítmica Búsqueda binaria

O(n) Lineal Búsqueda lineal

O(n•log n) Casi lineal Quick-sort

O(n2) Cuadrática Algoritmo de la burbuja Tratable

O(n3) Cúbica Producto de matrices

O(nk) k>3 Polinómica

O(kn) k>1 Exponencial Algunos algoritmos de grafos

Intratable

O(n!) Factorial

Page 34: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

34

• Jerarquía de órdenes de complejidad

La notación O

1E+0

1E+3

1E+6

1E+9

1E+12

1E+15

1E+18

1E+21

1E+24

1E+27

1E+30

1E+0 1E+2 1E+4 1E+6 1E+8 1E+10

n

T(n)

Cúbica

Cuadrática

Lineal

Page 35: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

35

• Cambios en el entorno HW o SW afectan a factores constantes (principio de invarianza) pero no al orden de complejidad O(f(n))

• Hay que buscar algoritmos con el menor orden de complejidad

• La eficiencia es un término relativo que depende del problema

• El análisis de la eficiencia es asintótico sólo es válido para tamaños de problema suficientemente grandes

La notación O

Page 36: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

36

• El análisis asintótico de algoritmos determina el tiempo de ejecución en notación “O”

• Para realizar el análisis asintótico– Buscar el número de operaciones primitivas ejecutadas en

el peor de los casos como una función del tamaño de la entrada

– Expresar esta función con la notación “O”

• Ejemplo:– Se sabe que el algoritmo maximoArray ejecuta como

mucho 7n 1 operaciones primitivas– Se dice que maximoArray “ejecuta en un tiempo O(n)”

• Como se prescinde de los factores constantes y de los términos de orden menor, se puede hacer caso omiso de ellos al contar las operaciones primitivas

La notación O

Page 37: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

37

• Reglas:– Si f(n) es un polinomio de grado d, entonces f(n) es

O(nd), es decir,

1. Prescindir de los términos de orden menor

2. Prescindir de los factores constantes

– Usar la clase más pequeña posible de funciones• Decir “2n es O(n)” en vez de “2n es O(n2)”

– Usar la expresión más simple para la clase• Decir “3n + 5 es O(n)” en vez de “3n + 5 es O(3n)”

La notación O

Page 38: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

38

• Reglas prácticas:

– Operaciones primitivas: O(1)

– Secuencia de instrucciones: máximo de la complejidad de cada instrucción (regla de la suma)

– Condiciones simples: Tiempo necesario para evaluar la condición más el requerido para ejecutar la consecuencia (peor caso).

– Condiciones alternativas: Tiempo necesario para evaluar la condición más el requerido para ejecutar el mayor de los tiempos de las consecuencias (peor caso).

La notación O

Page 39: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

39

• Reglas prácticas:

– Bucle con iteraciones fijas: multiplicar el número de iteraciones por la complejidad del cuerpo (regla del producto).

– Bucle con iteraciones variables: Igual pero poniéndose en el peor caso (ejecutar el mayor número de iteraciones posible).

– Llamadas a subprogramas, funciones o métodos: Tiempo de evaluación de cada parámetro más el tiempo de ejecución del cuerpo.

La notación O

Page 40: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

40

Ejemplo de análisis asintótico para dos algoritmos de cálculo de medias prefijas…

• La media prefija i-ésima de un array X es la media de los primeros (i + 1) elementos de XA[i] = X[0] + X[1] + … +

X[i]/(i+1)

Computar el array A de medias prefijas de otro array X tiene aplicaciones en análisis financiero

0

5

10

15

20

25

30

35

1 2 3 4 5 6 7

X

A

La notación O

Page 41: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

41

• Medias prefijas (Cuadrático)

La notación O

mediasPrefijas1(vector,n) vectorINICIO OPERACIONES A nuevo Array de n enteros n i 0 1 MIENTRAS (i < n) n + 1 s X[0] n

j 1 nMIENTRAS (j <= i) 1,2,3,4,…,n

s s + X[j] 1,2,3,…,n-1j j + 1 1,2,3,…,n-1

FIN-MIENTRASA[i] s / (i + 1) ni i + 1 n

FIN-MIENTRAS nDEVOLVER A 1

FIN

• Tiempo de ejecución = O(7n +3 + (n +1)n/2 + 2(n-1+1)n/2) O(n2) 

Page 42: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

42

• Medias prefijas (Lineal)

La notación O

mediasPrefijas2(vector,n) vectorINICIO OPERACIONES A nuevo Array de n enteros n s 0 1

i 0 1 MIENTRAS (i < n) n + 1

s s + X[j] nA[i] s / (i + 1) ni i + 1 n

FIN-MIENTRAS nDEVOLVER A 1

FIN

• Tiempo de ejecución = O(n) 

Page 43: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

43

Análisis del caso mejor, peor y medio• El tiempo de ejecución de un algoritmo puede variar

con los datos de entrada. Ejemplo (ordenación por inserción): :

INICIO i 1 MIENTRAS (i < n)

x T[i]j i - 1

MIENTRAS (j > 0 Y T[j] > x)T[j+1] T[j]j j - 1

FIN-MIENTRAST[j+1] xi i + 1

FIN-MIENTRASFIN

Page 44: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

44

Análisis del caso mejor, peor y medio• Si el vector está completamente ordenado (mejor

caso) el segundo bucle no realiza ninguna iteración Complejidad O(n).

Page 45: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

45

Análisis del caso mejor, peor y medio• Si el vector está ordenado de forma decreciente,

el peor caso se produce cuando x es menor que T[j] para todo j entre 1 e i -1.

• En esta situación la salida del bucle se produce cuando j = 0.

• En este caso, el algoritmo realiza i – 1 comparaciones.

• Esto será cierto para todo valor de i entre 1 y n -1 si el orden es decreciente.

• El número total de comparaciones será:

Page 46: Estructura de Datos Ingeniería en Informática. Universidad Carlos III de Madrid 1 Tema 3: Complejidad.

Estructura de DatosIngeniería en Informática. Universidad Carlos III de Madrid

46

Análisis del caso mejor, peor y medio

• La complejidad en el caso promedio estará entre O(n) y O(n2).

• Para hallarla habría que calcular matemáticamente la complejidad de todas las permutaciones de todos valores que se pueden almacenar en el vector.

• Se puede demostrar que es O(n2).