CC30A Algoritmos y Estructuras de Datos - PowerPoint PPT Presentation

About This Presentation
Title:

CC30A Algoritmos y Estructuras de Datos

Description:

Title: CC30A Algoritmos y Estructuras de Datos Author: root Last modified by: nbaloian Created Date: 3/14/2001 2:07:30 PM Document presentation format – PowerPoint PPT presentation

Number of Views:101
Avg rating:3.0/5.0
Slides: 25
Provided by: root162
Category:

less

Transcript and Presenter's Notes

Title: CC30A Algoritmos y Estructuras de Datos


1
CC30A Algoritmos y Estructuras de Datos
Universidad de Chile Facultad de Ciencias Físicas
y Matemáticas Escuela de Ingeniería y Ciencias
  • Dividir para reinar
  • Tabulación

2
Dividir para reinarMultiplicación de dos
polinomios
  • Problema multiplicar dos polinomios de grado
    n-1.
  • A(x)a0a1xa2x2an-1xn-1
  • B(x)b0b1xb2x2bn-1xn-1
  • CA(x)B(x).

3
Dividir para reinarMultiplicación de dos
polinomios
  • Solución trivial O(n2)
  • float cnew float2n-1
  • // inicializar ck en 0
  • for (i0 iltn i)
  • for (j0 jltn j)
  • cijaibj

4
Dividir para reinarMultiplicación de dos
polinomios
  • Algoritmo más eficiente separar cada polinomio
    en 2 partes.
  • Ejemplo

5
Dividir para reinarMultiplicación de dos
polinomios
  • En general
  • El grado de cada polinomio de la suma es (n/2)-1.

6
Dividir para reinarMultiplicación de dos
polinomios
  • Por lo tanto
  • Esto se puede implementar con 4 multiplicaciones
    de polinomios de tamaño n/2, más kn sumas (para
    algún k).

7
Dividir para reinarMultiplicación de dos
polinomios
  • El número total de operaciones T(n) se puede
    escribir como
  • Qué complejidad temporal tiene el algoritmo?

8
Dividir para reinarMultiplicación de dos
polinomios
  • Se resolverá la ecuación
  • Desenrollando la ecuación

9
Dividir para reinarMultiplicación de dos
polinomios
  • En general
  • Si pgtq (nuestro caso)

10
Dividir para reinarMultiplicación de dos
polinomios
  • Escoger j tal que qjn (o sea, jlogqn)
  • Pero

11
Dividir para reinarMultiplicación de dos
polinomios
  • Por lo tanto, el algoritmo demora
  • Aplicando el resultado a nuestra ecuación, donde
    p4 y q2
  • El resultado no es muy interesante

12
Dividir para reinarMultiplicación de dos
polinomios
  • PERO si se calcula
  • Entonces
  • Requiere 3 multiplicaciones recursivas.

13
Dividir para reinarMultiplicación de dos
polinomios
  • Por lo tanto
  • Ejercicio demostrar T(n) en los casos
  • pltq O(n)
  • pq (n log n)

14
Recursividad y tabulación
  • No siempre la recursividad es eficiente.
  • Ejemplo cálculo de números de Fibonacci.

15
Recursividad y tabulación
  • Tabla de valores

16
Recursividad y tabulación
  • Solución recursiva
  • int F(int n)
  • if (nlt1)
  • return n
  • else
  • return F(n-1)F(n-2)

17
Recursividad y tabulación
  • Esto resulta muy ineficiente. Si T(n) representa
    el número de sumas ejecutadas para calcular fn,
    se tiene
  • T(0)0
  • T(1)0
  • T(n)1T(n-1)T(n-2)

18
Recursividad y tabulación
  • Tabla de valores para T(n)
  • T(n)fn-1? Si. (Ejercicio demostrarlo).

19
Recursividad y tabulación
  • Luego, el tiempo crece de manera exponencial (muy
    lento).
  • El problema es que se está recalculando una y
    otra vez los mismos valores (ver dibujo en
    pizarra).
  • Una forma de evitar esto es anotar los valores
    calculados en un arreglo.

20
Recursividad y tabulación
  • El arreglo debe llenarse de manera ordenada
  • int F(int n)
  • int fibn1
  • fib00
  • fib11
  • for (i2 iltn i)
  • fibifibi-1fibi-2

21
Recursividad y tabulación
  • Tiempo del nuevo algoritmo O(n).
  • Esta idea se llama programación dinámica cuando
    se usa para resolver problemas de optimización.
  • Es posible calcular fn más rápido que O(n)?
    Respuesta Si.

22
Recursividad y tabulación
  • Se tiene que
  • Se define una función auxiliar g tal que

23
Recursividad y tabulación
  • Con esto se plantea el siguiente sistema de
    ecuaciones

24
Recursividad y tabulación
  • An-1 se puede calcular por el método eficiente gt
    Tiempo O(log n).
Write a Comment
User Comments (0)
About PowerShow.com