Complejidad
Download
1 / 27

Complejidad - PowerPoint PPT Presentation


  • 130 Views
  • Uploaded on

Complejidad. Programación II 17-18 de febrero de 2009. Complejidad. Complejidad T(n): número de operaciones elementales en función de la medida n Hace referencia al caso peor Notación asintótica: término de T(n) que crece más rápido en función de n. Funciones iterativas.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Complejidad' - merle


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Complejidad

Complejidad

Programación II

17-18 de febrero de 2009


Complejidad1
Complejidad

  • Complejidad T(n): número de operaciones elementales en función de la medida n

  • Hace referencia al caso peor

  • Notación asintótica: término de T(n) que crece más rápido en función de n


Funciones iterativas
Funciones iterativas

  • Secuencia: la complejidad se suma

  • Condicional: la complejidad en el caso peor es el máximo de las dos opciones

  • Bucles: la complejidad es el producto del número de iteraciones y la complejidad interior del bucle (incluida la condición)


Funciones recursivas
Funciones recursivas

  • Establecer la ecuación de recurrencia:

    • T(n) en el caso base

    • T(n) en el caso recursivo

  • En el caso recursivo, T(n) depende de T(f(n)) (p.ej. f(n)=n-1, f(n)=n/2)

  • Expandir T(f(n)) hasta que la expresión para T(n) sólo depende del caso base


Logaritmos
Logaritmos

  • log(n) = el exponente a la que 2 se ha de elevar para obtener n

  • Ej: log(8) = 3 (porque 23 = 8)

  • Ej: log(1024) = 10 (porque 210 = 1024)

  • Aritmética: log(xy) = log(x) + log(y)

  • Ej: log(1024*1024*1024) = 10+10+10 = 30

  • Consecuencia: log(n) = número de veces que se ha de dividir n entre 2 para tener 1






Torres de hanoi4
Torres de Hanoi

accion MoverTorre(n:natural; X,Y,Z:barra)

si (n > 0) entonces

MoverTorre(n-1, X, Z, Y);

MoverDisco(X, Y);

MoverTorre(n-1, Z, Y, X);

fsi

faccion


Torres de hanoi5
Torres de Hanoi

  • Ecuación de recurrencia:

    • T(n) = a, n = 0

    • T(n) = b + 2T(n-1)


Torres de hanoi6
Torres de Hanoi

  • Eliminar la dependencia de T()

  • k=n T(n-k) = T(0) = a

  • T(n) = (2k – 1)b + 2ka = (a+b)2k – b

  • ¿Notación asintótica?


Ejemplo mergesort
Ejemplo: Mergesort

  • Medida: n = D – E

  • Depende de la complejidad de Combina

  • Los bucles de Combina se repiten un número de veces igual al número total de elementos de V1 y V2

  • Ecuación de recurrencia:

    • T(n) = a, n = 0

    • T(n) = b + cn + 2T(n/2)


Ejemplo mergesort1
Ejemplo: Mergesort

  • n/2k = 1  k = log(n)

  • T(n) = bn + cnlog(n) + an

  • ¿Notación asintótica?


Ordenaci n
Ordenación

  • Algoritmos de ordenación básicos: O(n2)

    • Algoritmo de la burbuja (Bubble Sort)

    • Ordenación por inserción (Insertion Sort)

    • Ordenación por selección (Selection Sort)

  • Mergesort: O(nlogn)

  • Quicksort???



Estudio fibonacci
Estudio: Fibonacci

funcion F(n:natural) devuelvenatural

si (n <= 1) entonces

devuelve 1;

sino

devuelve F(n-2)+F(n-1);

fsi

ffuncion


Estudio fibonacci1
Estudio: Fibonacci

  • Ecuación de recurrencia:

    • T(n) = a, n <= 1

    • T(n) = b + T(n-1) + T(n-2), n > 1


Estudio fibonacci2
Estudio: Fibonacci

  • k = n-1T(n-k) = T(1) = T(n-k-1) = T(0) = a

  • T(n) = (F(n)-1)b + F(n-1)T(1) + F(n-2)T(0)

  • Notación asintótica: T(n) = ¡O(F(n))!

  • Aproximación: O(F(n)) = O(1,6n)

  • ¡Complejidad exponencial!


Estudio fibonacci3
Estudio: Fibonacci

  • Versión iterativa

    funcion F(n:natural) devuelve natural

    variable f1,f2,tmp:natural;

    f1 := f2 := 1;

    mientras (n > 1) hacer

    tmp := f2;

    f2 := f1 + f2;

    f1 := tmp;

    n := n – 1;

    fmientras

    devuelve f2;

    ffuncion


Estudio fibonacci4
Estudio: Fibonacci

  • ¿Complejidad versión iterativa?


Estudio fibonacci5
Estudio: Fibonacci

  • La actualización de F(i),F(i+1) se puede ver como la multiplicación con una matriz

    =

  • Por lo tanto, obtenemos

    = =

n

n


Estudio fibonacci6
Estudio: Fibonacci

  • Podemos calcular el exponente de la matriz de manera recursiva

    =

    = n par

    = n impar

0

n

n

2

n

2

n

n

2

n

2


Estudio fibonacci7
Estudio: Fibonacci

funcion Exp(n:natural) devuelvematriz de natural

variable A,B:matriz (2x2) de natural;

si (n = 0) entonces

devuelve [[1,0],[0,1]];

sino

A := Exp(n div 2);

B := A * A; // multiplicacion de matrices 2x2

si (n mod 2 > 0) entonces

B := B * [[0,1],[1,1]];

fsi

devuelve B;

fsi

ffuncion


Estudio fibonacci8
Estudio: Fibonacci

funcion F(n:natural) devuelvenatural

variable A:matriz (2x2) de natural;

A := Exp(n);

devuelve A(1,1) + A(1,2);

ffuncion


Estudio fibonacci9
Estudio: Fibonacci

  • ¿Complejidad Exp(n)?

  • ¿Complejidad F(n)?


Estudio fibonacci10
Estudio: Fibonacci

  • Fibonacci recursivo original: O(1,6n)

  • Fibonacci iterativo: O(n)

  • Fibonacci recursivo c/ exponente: O(logn)


ad