Curso 20052006 - PowerPoint PPT Presentation

1 / 29
About This Presentation
Title:

Curso 20052006

Description:

1. Concepto y an lisis de algoritmos. M todos de resoluci n, algoritmos y programas ... Contar o no las operaciones como de coste unitario influye bastante ... – PowerPoint PPT presentation

Number of Views:70
Avg rating:3.0/5.0
Slides: 30
Provided by: jgal9
Category:

less

Transcript and Presenter's Notes

Title: Curso 20052006


1
Eficiencia de los algoritmos
  • Curso 2005/2006
  • José A. Gallud
  • Daniel García
  • José Moya

2
1. Concepto y análisis de algoritmos
  • Métodos de resolución, algoritmos y programas
  • Existencia frente a factibilidad de una solución
  • Método de resolución de un problema P
    descripción de pasos discretos, basados en unos
    fundamentos y resultados teóricos, de forma que
    la realización de estos pasos, junto a unos datos
    necesarios, lleva a una solución del problema.
  • Semialgoritmo descripción precisa de un método,
    con pasos numerados y bien ordenados que da la
    solución de P si existe, en un número finito de
    pasos.
  • Algoritmo si además es capaz de determinar que
    no tiene solución en un número finito de pasos.
  • A partir de un método ? más de un algoritmo

3
  • Programa algoritmo (o semialgoritmo) dispuesto
    en pasos comprensibles por una máquina, junto a
    las estructuras de datos con las que opera.
  • Análisis de algoritmos
  • Complejidad en tiempo y espacio
  • Complejidad medida de la eficiencia de un
    algoritmo en tiempo o espacio
  • La fórmula de la complejidad nos indica el
    comportamiento
  • Hablaremos del comportamiento mas que del propio
    valor
  • Tamaño del problema
  • Variable utilizada para las funciones de
    complejidad
  • Suele depender del número de datos del problema
  • Rara vez se eligen dos o más variables como
    tamaño del problema

4
  • Función de complejidad
  • Función que tiene como variable independiente el
    tamaño del problema y que sirve para medir la
    complejidad (espacial o temporal)
  • Mide el tiempo/espacio relativo en función del
    tamaño del problema
  • El comportamiento de la función determina la
    eficiencia
  • No es única para un algoritmo depende de los
    datos
  • Funciones de complejidad más interesantes
  • La del mejor caso fm(n)
  • La del peor caso fp(n)
  • La que resulta del cálculo de la esperanza
    matemática fa(n)
  • fm es interesante para encontrar cotas inferiores
    para el mal comportamiento de un algoritmo
  • Las funciones con los comportamientos más
    usuales
  • 1, log n, n, nlog n, n2, n3, ..., 2n, 3n
  • O(1) lt O(log n) lt O(n) lt O(nlog n) lt O(n2) lt
    ... lt O(2n) lt O(n2n)

5
  • Convenio de Edmonds
  • Problema tratable complejidad polinomial
  • Problema intratable complejidad exponencial
  • Los algoritmos de complejidad mayor que nlog n
    son poco prácticos
  • Los exponenciales son válidos para valores
    pequeños de n
  • Simbolismos O, O, ?, o
  • Definición 1 f(n) ? O(g(n)) si ? cgt0 f(n) ?
    cg(n)
  • El comportamiento de f está acotado por g
  • O(g(n)) conjunto de todas las funciones acotadas
    superiormente por g
  • Ejemplo
  • sea P(n) amnm ... a1n a0
  • P(n) ? O(nm)

6
  • Propiedades
  • g(n) O(g(n))
  • cO(g(n)) O(g(n)), donde c es una constante
  • O(g(n))O(g(n)) O(g(n))
  • O(g(n))O(h(n)) O(g(n)h(n))
  • h(n)O(g(n)) O(h(n)g(n))
  • O(g(n))O(h(n)) O del mayor
  • O(g(n))-O(g(n)) O(g(n))
  • La notación O la utilizaremos en la búsqueda de
    cotas superiores del comportamiento de una
    función de complejidad (la menor cota superior
    posible)
  • Observación nO(n) nO(n2) nO(n3) ? se toma
    la menor

7
  • Definición 2 f(n) ? O(g(n)), si existe una
    constante real positiva tal que f(n) ? cg(n) a
    partir de un n0
  • Propiedades análogas a las de O
  • O se emplea para acotar inferiormente la función
    de complejidad en el mejor de los casos
  • Se toma la mayor de las posibles
  • Definición 3 f(n) ? ?(g(n)) si existen dos
    constantes reales positivas tal que c1g(n) ?
    f(n) ? c2g(n) a partir de un n0
  • Significa que f(n) es tanto O(g(n)) como O(g(n))
  • ?(g(n))O(g(n)) ? O(g(n))
  • Definición 4
  • f(n) ? o(g(n)) para n?? si f(n)a(n)g(n)
  • a(n) es un infinitésimo en n (tiene límite 0
    cuando n??)
  • f(n) ? g(n) si f(n)-g(n)o(g(n))
  • ( se dice que f es asintóticamente equivalente a
    g)

8
  • Definición formalizada del orden de los órdenes
  • O(f(n)) lt O(g(n)) si f(n) (n??) o(g(n))
  • En vez de O, se puede poner O ó ?
  • Ejemplo Un polinomio P(n) amnm...a1na0 es
    asintóticamente equivalente a su primer término.
  • Propiedad si f(n) ? g(n) ? ?(f(n)) ?? ?(g(n))
  • Puedo intercambiar una función por otra (asint.
    equiv.)
  • Existen dos estudios posibles sobre el tiempo de
    ejecución de un algoritmo
  • Obtener una medida teórica a priori mediante la
    función de complejidad
  • Obtener una medida real del algoritmo, a
    posteriori, para unos valores concretos en un
    computador determinado
  • No se puede medir el tiempo en segundos porque no
    existe un ordenador estándar de referencia ?
    número de operaciones
  • Principio de invarianza (máquinas distintas o
    códigos distintos)

9
  • Cómo contar el número de operaciones
  • Operaciones elementales las que realiza el
    computador en tiempo acotado por una constante
  • operaciones aritméticas básicas
  • asignaciones de tipos predefinidos
  • saltos (llamadas a funciones, proced. y retorno)
  • comparaciones lógicas
  • Acceso a estructuras indexadas básicas (vectores
    y matrices)
  • Es posible realizar el estudio de la complejidad
    de un algoritmo sólo en base a un conjunto
    reducido de sentencias, las que más influyen en
    el tiempo de ejecución.
  • Ejemplo...

10
  • Algoritmo de ordenación por inserción directa
  • desde i2 hasta n hacer
  • x ai
  • a0 x
  • j i - 1
  • mientras x lt aj hacer
  • aj1 aj
  • j j - 1
  • fin mientras
  • aj1 x
  • fin desde
  • Mejor caso O(n)
  • Peor caso O(n2)
  • Caso medio O(n2)

11
  • Resultados prácticos en el cálculo de
    complejidades
  • Fórmulas frecuentes en la búsqueda de órdenes de
    complejidad
  • Suma de potencias
  • ?1?i ?n ik ? ( nk1 / (k1) ) siendo k una
    constante
  • ?1?i ?n ik O(nk1) ? ?1?i ?n i O(n2)
  • ?1?i ?n xi O(xn) siendo x una constante
  • Suma de logaritmos
  • ?1?i ?n log i ? ? log i O(nlog n)
  • Suma de fracciones
  • ?1?i ?n 1/i ? log n e O(log n)
  • ?1?i ?n 1/ic O(1) cgt1 cte
  • ?1?i ?n 1/xi O(1) x cte
  • O(1/n) O(1)

12
  • Técnicas básicas para el análisis de los
    algoritmos
  • El análisis se realiza desde dentro hacia fuera
  • Secuencias
  • P1, P2 son fragmentos del mismo algoritmo ? t1,
    t2
  • Regla de la composición secuencial P1 P2 es t1
    t2
  • Por la regla del máximo O(f(n) g(n))
    O(max(f(n),g(n)))
  • Bucles for
  • Para i1 hasta m hacer P(i)
  • Siendo t el tiempo necesario para calcular P(i)
  • Caso sencillo (t es una cte) mt
  • Considerando las sentencias de control
  • Despreciarlas puede dar lugar a graves errores
  • Se considera O(mt) con algún umbral m?1
  • Se considera O(n)

13
  • Caso complejo (t es función de i)
  • Se trata de operaciones aritméticas complejas
  • Se consideran más costosas cuanto mayores sean
    los operandos y cuanto mayor sea m
  • Tiempo de calcular una operación en la iteración
    k ? ck para k?1
  • Tiempo algoritmo ? ?1?i ?n ck c?1?i ?n k
    cn(n1)/2 ? O(n2)
  • Contar o no las operaciones como de coste
    unitario influye bastante
  • Bucles for que comiencen en un valor diferente de
    1 o que avancen a pasos mayores que 1
  • (Final-principio)/salto 1
  • Ejemplo de caso complejo cálculo sucesión de
    Fibonacci

14
  • Bucles Mientras y Repetir
  • No existe una forma sencilla de conocer el número
    de iteraciones
  • Dos técnicas
  • Hallar una función de las variables implicadas,
    cuyo valor se decremente en cada iteración
  • Tratarlo como un algoritmo recursivo
  • Ejemplo Búsqueda binaria encontrar un elemento
    x en un vector T1..n ordenado crecientemente.
  • i1jn
  • mientras iltj hacer
  • k(ij)/2
  • caso_de
  • xltTk jk-1
  • xTk ik jk
  • xgtTk ik1
  • fin_caso
  • fin_mientras
  • devolver i

15
  • Solución buscando una función
  • La función es j-i1
  • El bucle termina cuando i ? j ? 0 ? j-i ? 1 ?
    j-i1 (dj-i1)
  • En cada pasada dd/2 si x?Tk y d1 si xTk
  • En la vuelta m ? dm ? dm-1 /2 ? dm ? n/2m
  • La sucesión es 1 ?... ? n/8 ? n/4 ? n/2 ? n
  • Calculamos mlg n (en base 2) ? O(lg n)
  • Considerando que es una función recursiva
  • t(d) es el tiempo máximo para terminar el bucle
  • t(d) ? tiempo-cte-una-iteración t(d/2)
  • t(n) ? O(log n)
  • Ejemplo algoritmo recursivo de la sucesión de
    Fibonacci
  • Otros
  • Sentencias if
  • Sentencias case
  • Llamadas a procedimientos o funciones

16
  • Resolución de recurrencias
  • Cuatro técnicas
  • Expansión de la recurrencia
  • Ecuaciones características
  • Cambio de variable
  • Transformación de intervalo
  • 1. Expansión de la recurrencia
  • Se obtiene una fórmula general a partir de varios
    valores
  • Ejemplo función factorial
  • funcion factorial(ninteger)integer
  • if n ? 1 factorial1
  • else factorialnfactorial(n-1)
  • fin_funcion

17
d si n ? 1 c T(n-1) si n gt 1
  • T(n)
  • La recurrencia a calcular es T(n)cT(n-1)
  • T(n-1)cT(n-2) n?2 ? T(n)2cT(n-2) n?2
  • T(n-2)cT(n-3) n?3 ? T(n)3cT(n-3) n?3
  • ...
  • T(n)icT(n-i) n?i y llegará un momento en que
    n-i1 (acabará)
  • Si n-i1 ? in-1 ? T(n) c(n-1)T(1) c(n-1)
    d ? O(n)
  • Nota es más correcto utilizar ? en vez de O
  • Esta técnica se aplica cuando sólo hay un término
    en t, aunque esté multiplicado o sumado por una
    constante

18
  • 2. Técnica de la ecuación característica
  • Tres tipos
  • Recurrencias homogéneas lineales con coeficientes
    constantes
  • Recurrencias no homogéneas
  • Otras
  • 2.1 Recurrencias homogéneas con coeficientes
    constantes
  • a0tn a1tn-1 ... aktn-k 0 (e-1)
  • Lineal no aparecen productos o potencias de t
  • Homogénea la combinación lineal de ti es igual a
    0
  • Los ai son constantes
  • Generalmente los algoritmos recursivos suelen
    tener una ecuación no homogénea ...
  • Si hacemos tnxn ? a0xn a1xn-1 ...
    akxn-k 0 ?
  • dividiendo por xn-k ? a0xk a1xk-1 ...
    ak 0
  • Ejemplo función FibRec

19
  • funcion FibRec(n)
  • si nlt2 devolver n
  • sino devolver FibRec(n-1)FibRec(n-2)
  • fin_funcion
  • Ecuación de la recurrencia tn tn-1 tn-2 0
  • Dos posibles formas de resolver la ecuación
  • Raíces distintas
  • se aplica el teorema fundamental del álgebra
  • Raíces múltiples
  • Si el polinomio característico tiene raíces
    múltiples, es decir, las k raíces no son todas
    distintas

20
  • Teorema fundamental del Álgebra
  • Todo polinomio p(x) de grado k posee k raíces de
    tal modo que
  • p(x) ?i1,k (x-ri) donde ri son las
    soluciones de p(x)0
  • como p(x)0 y xri y tnxn entonces rin es una
    solución de la recurrencia
  • Toda combinación lineal de soluciones es también
    una solución
  • xn tn ?i1,k cirin donde c1, c2, ... cn son
    constantes
  • La ecuación (e-1) sólo posee soluciones de esta
    forma cuando los ri son distintos
  • Ejemplo 1 tn
  • Ejemplo 2 tn

n n0,n1 tn-1 tn-2 ngt1
n n0,n1 tn-1 tn-2 ngt1
0 n0 1 n1 3tn-14tn-2 en otro caso
21
  • Raíces múltiples
  • Ahora tenemos (x-r1)m1 (x-r2)m2 (x-rk)mk
  • Esta nueva ecuación se resuelve mediante
  • T(n) ?i1,m1 c1ini-1r1n ?i1,m2 c2ini-1r2n
    ... ?i1,mk ckini-1rkn
  • O lo que es equivalente
  • T(n) ?i1,k ?j1,mi cijnj-1rin
  • donde los cij 1?i ? k y 1?j ? mi se determinan
    con las condiciones iniciales
  • Ejemplo
  • T(n)

n si n0,1,2 5tn-1 - 8tn-2 4tn-3 en otro caso
22
  • 2.2 Recurrencias no homogéneas
  • Un recurrencia es no homogénea cuando la
    combinación lineal no es igual a 0
  • a0tn a1tn-1 ... aktn-k bnp(n)
  • Donde b es cte y p(n) es un polinomio de grado d
  • Solución reducir al caso homogéneo
  • Con habilidad matemática
  • Aplicando el polinomio característico (tnxn)
  • (a0xk a1xk-1 ... ak)(x-b)d1 donde d es el
    grado de p(n)
  • Las ctes se determinan con las condiciones
    iniciales y con la propia recurrencia
  • Ejemplo de 1 tn 2tn-1 3n
  • Ejemplo de 2
  • T(n)
  • ? t(n) 2t(n-1) 1

0 si n0 2t(n-1) 1 en otro caso
23
  • Ejemplo con raíces múltiples
  • tn 2tn-1 n (a)
  • Polinomio característico (x-2)(x-1)2
  • Solución de la forma tn c12n c21n c3n1n
    (b)
  • Para obtener las ctes sustituimos (b) en (a)
  • (...)
  • Solución ?(2n)
  • Nota se puede obtener c1, c2, c3 como función de
    t0 y los valores de t1 y t2 a partir de la
    ecuación.
  • Para obtener el orden exacto a veces es
    imprescindible conocer los valores de las
    constantes
  • Ejemplo
  • tn
  • Solución general tn c14n c22n ? parece
    ?(4n)

1 si n0 4tn-1 2n en otro caso
24
  • Recurrencias de la forma
  • a0tn a1tn-1 ... aktn-k b1np1(n)
    b2np2(n) ...
  • bi ? 0 y pi(n) son polinomios en n de grado di
  • Se resuelven usando el polinomio característico
  • (a0xk a1xk-1 ... ak) (x-b1)d11(x-b2)d21...
  • Contiene un factor por el término de la izquierda
    y tantos como términos haya en la parte derecha
  • Ejemplo
  • tn
  • tn 2tn-1 n 2n ? polinomio característico
    (x-2)(x-1)2(x-2)
  • Soluciones de la forma
  • tn c11n c2n1n c32n c4n2n ? t(n) ?
    O(n2n)
  • para saber si es ?(n2n) tenemos que calcular
    las constantes (...)

0 si n0 2tn-1 n 2n en otro caso
25
  • 3. Resolución de recurrencias mediante el cambio
    de variable
  • T(n) ? término de una recurrencia original
  • Ti ? término de un nueva recurrencia obtenida de
    la original mediante cambio de variable
  • Ejemplo
  • t(n)
  • a) n 2i ? ilg2 n para transformarla en algo
    conocido hacemos
  • ti t(2i)
  • ti t(2i) 3t(2i-1) 2i ? ti 3ti-1 2i
    ? (x-2)(x-3)
  • ti c13i c22i ?como i lg2 n y clg nnlg
    c ?
  • ti c1nlg 3 c2nlg 2 ? t(n) ? O(nlg
    3) (a)
  • para determinar el orden exacto hay que
    calcular c1 y c2
  • b) cálculo de las constantes
  • -sustituyendo (a) en la ecuación de recurrencia
  • -Obtener t(n) en dos puntos, obteniendo dos
    ecuaciones

1 si n1 3t(n/2) n si n es potencia de 2, ngt1
26
  • Ejemplo
  • T(n) 2T(n/2) nlg n siendo n potencia de 2
  • ti T(2i) 2T(2i-1) 2i i 2ti-1 2i i
  • raíces (x-2)(x-2)2
  • ti c12i c2i2i c3i22i ? T(n) c1n
    c2nlg n c3nlg2n
  • O(nlg2n) siendo n potencia de 2
  • Obtenemos los coeficientes (...) ? ?(nlg2n)
  • Caso general
  • n0 ? 1 l ?1 b ?2 k ?0 enteros
  • cgt0 real
  • TN?R no decreciente
  • T(n) l T(n/b) cnk n gtn0 ?1 , n/n0 es
    potencia exacta de b, es decir,
  • n ? bn0, b2n0, b3n0, ...
  • cambio de variable adecuado
  • nbin0 ? ti T(bin0) l T(bi-1n0)
    c(bin0)k lti-1 cn0kbik
  • ti lti-1 cn0k(bk)i ? (x-l)(x-bk)d1

27
  • Las soluciones son de la forma
  • ti c1li c2(bk)i ? como nbin0, ilogb(n/n0)
  • si deshacemos el cambio de i (...)
  • T(n) c3nlogbl c4nk (a)
  • Para conocer las constantes
  • sustituimos (a) en la recurrencia original
  • cnk T(n) lT(n/b) ? (...) ? c4 c/(1
    (l/bk))
  • Para expresar T(n) en notación asintótica,
    necesitamos saber el cuál es el término dominante
    en (a), tenemos 3 casos
  • 1) si lltbk ? c4gt0 y kgtlogbl ? c4nk dominante ?
  • T(n) ? ?(nk n/n0 potencia exacta de b)
  • 2) si lgtbk ? c4lt0 y klt logbl ? c3 gt0 ? c3nlogbl
    dominante ?
  • T(n) ? ?(nlogbl n/n0 sea potencia de b)
  • 3) si lbk ? problema en c4de división por 0
  • el polinomio característico tiene 1 raíz de m2
  • solución general ti c5(bk)i c6i(bk)i como
    ilogb(n/n0)
  • T(n) c7nk c8nklogb(n/n0) ?obtenemos (...)
    c8c ?
  • término dominante cnklogbn ? T(n) ??(nklogbn)

28
  • Resumen
  • T(n) lT(n/b) cnk
  • T(n)
  • Observación en la notación asintótica no es
    necesario especificar la base del algoritmo por
    la propiedad
  • logan logab logbn ? O(logan) O(logbn)

?(nk) si lltbk ?(nk log n) si lbk
?(nlogbl) si lgtbk
29
  • 4. Resolución de recurrencias por
    transformaciones de intervalo
  • El cambio de variable transforma el dominio de la
    recurrencia
  • Podemos transformar el intervalo para obtener una
    recurrencia que se pueda resolver
  • Se pueden utilizar ambas transformaciones
  • Ejemplo
  • T(n)
  • 1) Cambio de variable tiT(2i) n2i ? ilg n
  • ti T(2i) 2iT2(2i-1) 2iti-12 ?no lineal y
    2i no cte
  • 2) Transformar el intervalo o rango nilg ti ?
    ti2ni
  • nilg ti log (2iti-12 ) log (2i) log
    (ti-12 ) i 2lg ti-1
  • i 2ni-1 ? ni 2ni-1 i cuyo pol.
    caract. es (x-2)(x-1)2
  • ni c12i c21i c3i1i
  • obtengo las ctes (...) ?c3-1, c2-2
  • deshacer el 2º cambio ti 2ni 2c12i - 2 i
  • deshacer el 1er cambio T(n) tlg n (...)
    2c1n / 4n ?c1? ?...

1/3 si n1 nT2(n/2) en otro caso
Write a Comment
User Comments (0)
About PowerShow.com