complejidad
Download
Skip this Video
Download Presentation
Complejidad

Loading in 2 Seconds...

play fullscreen
1 / 27

Complejidad - PowerPoint PPT Presentation


  • 131 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