You are on page 1of 16

Tcnicas de Demostracin

Herramientas Matemticas Bsicas


Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Algoritmos y Complejidad
Tcnicas y Herramientas
Pablo R. Fillottrani
Depto. Ciencias e Ingeniera de la Computacin
Universidad Nacional del Sur
Primer Cuatrimestre 2011
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Tcnicas y Herramientas
1 Tcnicas de Demostracin
2 Herramientas Matemticas Bsicas
3 Notacin Asinttica
4 Estructuras de Datos
5 Anlisis de Algoritmos por Estructuras de Control
6 Resolucin de Recurrencias
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
pruebas por contradiccin
pruebas por induccin
principio de induccin
induccin matemtica generalizada
induccin constructiva
Herramientas ya conocidas. Leer apunte disponible en la pgina web.
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Lgica: clculo proposicional y de predicados.
Teora de Conjuntos: operaciones bsicas, producto cartesiano,
cardinalidad.
Teora de Nmeros: mdulo, intervalos, techo y piso.
Elementos bsicos de lgebra y anlisis: funciones, relaciones,
series, sumatorias y productos, lmites, mdulos, logaritmos.
Probabilidades: probabilidad condicional, esperanza, varianza.
Combinatoria: permutaciones, combinaciones.
En el nal del apunte se presenta un compendio de frmulas tiles
sobre estos temas.
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Objetivos
no interesa conocer los valores absolutos de las funciones
permitir una caracterizacin simple de la eciencia de un
algoritmo y comparar las performances relativas de distintos
algoritmos
independizar el anlisis de los algoritmos de condiciones
especcas de implementacin: lenguaje de programacin,
compilador, equipo, etc.
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
se aplica a funciones de tiempo de ejecucin o de espacio de
memoria de algoritmos en base a la longitud de la entrada:
f (n) : N R
+
se denomina asinttica porque analiza el comportamiento de las
funciones en el lmite, es decir su tasa de crecimiento
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Notacin O()
O(g(n)) = f (n) : c R
+
, n
0
N, tal que
f (n) cg(n) para todo n n
0

determina una cota superior en la tasa de crecimiento de una


funcin, dentro de un factor constante
ejemplos:
6n
3
O(n
3
) ya que se cumple la denicin con c = 6, n
0
= 1
3logn O(n) ya que se cumple la denicin con c = 1, n
0
= 4
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Ejemplos:
300n
2
O(n
2
)
5n
4
4n
3
+10n
2
+39 O(n
4
)
log
b
n O(log
a
n), a, b
2
n
O(n!)
500000n O(0,00001n
2
)
0,000001n
2
, O(500000n)
n! , O(2
n
)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Notacin ()
(g(n)) = f (n) : c R
+
, n
0
N, tal que
f (n) cg(n) para todo n n
0

determina una cota inferior en la tasa de crecimiento de una


funcin, dentro de un factor constante
ejemplos:
6n
3
(n
3
) ya que se cumple la denicin con c = 1, n
0
= 1
1/3n (logn) ya que se cumple la denicin con
c = 1/3, n
0
= 1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Ejemplos:
3n
5
+4n
3
8n
2
+10n (n
4
)
log
b
n (log
a
n), a, b
n! (2
n
)
0,00001n
2
(50000n)
50000n , (0,00001n
2
)
2
n
, (n!)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Notacin ()
(g(n)) = f (n) : c, d R
+
, n
0
N, tal que
cg(n) f (n) dg(n) para todo n n
0

determina una cota superior e inferior en la tasa de crecimiento


de una funcin, dentro de un factor constante
ejemplos:
6n
3
(n
3
) ya que se cumple la denicin con
c = 6, d = 6, n
0
= 1.
1/3n (n) ya que se cumple la denicin con
c = 1/5, d = 1, n
0
= 1.
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Ejemplos:
3n
2
(n
2
)
logn , (n)
2
n+1
(2
n
)
500000n
2
(0,00001n
2
)
log
b
n (log
a
n) para todo
a, b > 0
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Uso en Ecuaciones
por ejemplo, f (n) = 2n
2
+(n) signica que f (n) es igual a 2n
2
ms alguna funcin cualquiera perteneciente a (n)
2n
2
+O(n) = O(n
2
) signica que no importando que funcin
perteneciente a O(n) se sume a 2n
2
, siempre el resultado es una
funcin en O(n
2
)
f (n) = O(g(n)) +O(h(n)) signica que f (n) es una funcin que
se puede obtener sumando punto a punto una funcin de
O(g(n)) con una funcin de O(h(n))
se evita hacer referencia a detalles que no afectan el
comportamiento general de la funcin
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Algunas Propiedades tiles
O(f
1
(n) +f
2
(n)) = O(max(f
1
(n), f
2
(n)))
f (n) (g(n)) si y solo si g(n) (f (n))
f (n) O(g(n)) si y solo si g(n) (f (n))
f (n) (g(n)) si y solo si f (n) O(g(n)) f (n) (g(n))
si lm
n
f (n)
g(n)
R
+
entonces f (n) O(g(n)) y g(n) O(f (n))
si lm
n
f (n)
g(n)
= 0 entonces f (n) O(g(n)) pero g(n) , O(f (n))
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
ORDENAR UN ARREGLO
Algoritmo: Ordenamiento por Insercin
Costo de la ejecucin del algoritmo:
T(n) = c1n +c2(n 1) +c3(n 1) +c4
n1

j =1
tj +c5
n1

j =1
(tj 1) +
+c6
n1

j =1
(tj 1) +c8(n 1)
= (c1 +c2 +c3 +c8)n (c2 +c3 +c8) +(c4 +c5 +c6)
n1

j =1
tj (c5 +c6)
n1

j =1
1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
para analizar el O() se tiene:
T(n) = d
1
n d
2
+d
3
n1

j =1
t
j
d
4
n1

j =1
1
d
1
n +d
3
n1

j =1
t
j
d
1
n +d
3
n1

j =1
n
= d
1
n +d
3
n(n 1)
d
1
n +d
4
n
2
luego T(n) O(n
2
).
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
para analizar el () se tiene:
T(n) = d
1
n d
2
+d
3
n1

j =1
t
j
d
4
n1

j =1
1
d
1
n d
2
+d
3
n1

j =1
j d
4
(n 1)
= d
1
n d
2
+d
3
(n 1)n/2d
4
(n 1)

d
3
2
n
2
+d
1
n (
d
3
2
+d
4
)n (d
2
+d
4
) (n
2
)
recordemos que T(n) es el tiempo de ejecucin en el peor caso
para instancias de tamao n
luego T(n) (n
2
) y por lo tanto tambin T(n) (n
2
)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
NMERO DE FIBONACCI
Algoritmo: algoritmo iterativo simple
para analizar el O() se tiene:
T
FIB2
(n) = b +
n

k=1
(c
1
+c
2
+c
3
) +d fn
luego T
FIB2
(n) O(n)
para analizar el () se tiene:
T
FIB2
(n) = b +
n

k=1
(c
1
+c
2
+c
3
) +d
n

k=1
(c
1
+c
2
+c
3
) n
luego T
FIB2
(n) (n), y por lo tanto tambin T
FIB2
(n) (n)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Notacin Asinttica Condicional
muchos algoritmos son ms fciles de analizar si se restringe la
atencin a instancias cuyos tamaos satisfacen determinadas
condiciones
O(g(n) [ P(n)) = f (n) : c R
+
n
0
N, tal que
f (n) cg(n)para todo n n
0
siempre que P(n)
anlogamente, se denen (g(n) [ P(n)) notacin omega
condicional, y (g(n) [ P(n)) notacin condicional
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
por ejemplo, t (n) (n
2
[ n = 2
k
) signica que si n es potencia
de 2 entonces t (n) (n
2
)
nada se est armando sobre t (n) si n no es potencia de 2
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
NMERO DE FIBONACCI
Algoritmo: algoritmo iterativo complejo
T
FIB3
(n) = c1+
logn

k=1
c2+
logn

k=1
c3
si n = 2
k
entonces
T
FIB3
(n) = c1+
logn

k=1
c3 d logn
y entonces T
FIB3
(n) O(logn [ n = 2
k
)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
si n = 2
k
1 entonces
T
FIB3
(n) = c1+
logn

k=1
(c2+c3) elogn
y entonces T
FIB3
(n) O(logn [ n = 2
k
1)
analizando que este ltimo caso es el peor de los casos posible
se puede concluir que T
FIB3
(n) O(logn)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Regla de las Funciones de Crecimiento Suave
sirve para extender lo analizado condicionalmete a todos los
tamaos de entrada
Teorema
Sea f : N R
+
una funcin de crecimiento suave, y t : N R
+
una funcin eventualmente no decreciente. Luego siempre que
t (n) (f (n) [ n = b
k
) para algn entero b 2, entonces
t (n) (f (n))
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Denicin
una funcin f (n) : N R
+
es eventualmente no decreciente si
existe n
0
N tal que para todo n n
0
vale f (n) f (n +1)
Denicin
una funcin f (n) : N R
+
es de crecimiento suave si existe
b N, b 2 tal que f (n) es eventualmente no decreciente y
f (bn) O(f (n))
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
la mayora de las funciones que se encuentran son de
crecimiento suave: logn, n, nlogn, n
2
, o cualquier polinomio con
coeciente principal positivo
funciones tales como n
logn
, 2
n
o n! no son de crecimiento suave
reglas anlogas tambin son vlidas para O() y ()
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Objetivos
Notacin O
Notacin Omega
Notacin Theta
Uso en Ecuaciones
Algunas Propiedades tiles
Ejemplos
Notacin Asinttica Condicional
Ejemplo
si t (n) es
t (n) =

a si n = 1
4t (,n/2|) +bn sino
entonces es fcil probar (usando los mtodos de resolucin de
recurrencias que se vern) que t (n) = (a+b)n
2
bn si n = 2
k
,
ie t (n) (n
2
[ n = 2
k
)
luego, como n
2
es una funcin de crecimiento suave y t (n) es
eventualmente no decreciente (porqu?) se puede aplicar la
regla de las funciones de crecimiento suave y concluir que
t (n) (n
2
) para todo n
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
es necesario un manejo udo de las siguientes estructuras de
datos:
Arreglos y Matrices
Listas simplemente enlazadas, Pilas y Colas
Grafos, implementados mediante matriz o lista de adyacencia
rboles
Tablas Asociativas (Hash)
Colas con Prioridad (Heaps), implementados por rboles binarios
completos
Conjuntos Disjuntos
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
ORDENAR UN ARREGLO
Algoritmo: Heapsort (ordenamiento por construccin de un heap)
FUNCTION Heapsort(A)
Construir Heap(A)
FOR i ::= n DOWNTO 2
A[1] <=> A[i]
A.tamao- -
A.heapify(1)
ENDFOR
costo veces
(n) 1
c
1
n
i =2
1
c
2
n
i =2
1
c
3
n
i =2
1
(logn)
n
i =2
1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
calculando el tiempo de ejecucin se tiene:
T(n) = (n) +
n

i =2
(c
1
+c
2
+c
3
+(logn)) =
= (n) +(nlogn) (nlogn)
es fundamental en este ejemplo usar la implementacin ms
eciente para las operaciones de la estructura de datos
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
Secuencia
Algoritmo A
P1
P2
sea t
A
(n) la cantidad de recursos a analizar.
si P1 insume (f
1
(n)) recursos y P2 insume (f
2
(n)) recursos,
entonces
t
A
(n) = (f
1
(n)) +(f
2
(n)) = (f
1
(n) +f
2
(n)) =
= (max(f
1
(n), f
2
(n)))
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
Condicional
Algoritmo A
IF (X)
P1
ELSE
P2
ENDIF
el tiempo en el peor de los casos es
t
A
(n) = t
X
(n) +max(t
P1
(n), t
P2
(n)) =
= O(max(t
X
(n), t
P1
(n), t
P2
(n)))
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
y tambin
t
A
(n) c +max((f
1
(n)), (f
2
(n))) =
= (max(c, f
1
(n), f
2
(n)))
si el O() y el () coinciden, entonces se puede denir el ()
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
Ciclo FOR
Algoritmo B
FOR i ::= 1 TO m
P(i)
ENDFOR
sean c
1
, c
2
, c
3
los costos de las operaciones elementales
si P(i ) insume t recursos (no depende de i ni de n) entonces
t
B
(n) = c
1
+(m+1)c
3
+mt +mc
2
=
= (c
2
+c
3
+t )m+(c
1
+c
3
) (mt )
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
si P(i ) insume t (i ) recursos (dependiendo de i , del tamao n de
la instancia, o de cada instancia en particular) entonces
t
B
(n) =
m

i =1
t (i )
para obtener el O() o el () de esta funcin se pueden usar las
distintas propiedades vistas para obtener la notacin asinttica
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
ORDENAR UN ARREGLO
Algoritmo: Ordenamiento por Seleccin
FOR i ::= 1 TO n-1
ind ::= i; min ::= A[i]
FOR j ::= i+1 TO n
IF (A[j]<min)
min ::= A[j]
ind ::= j
ENDIF
ENDFOR
A[ind] ::= A[i]; A[i] ::= min
ENDFOR
costo veces
a n
b n 1
c
n1
i =1

n+1
j =i +1
1
c
n1
i =1

n
j =i +1
1
c
n1
i =1

n
j =i +1
1
c
n1
i =1

n
j =i +1
1
b n 1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
calculando la cantidad de recursos se tiene
t
C
(n) = a+
n1

i =1
(a+b +(n i )c) = a+
n1

i =1
(a+b +cn) c
n1

i =1
i =
= a+(n 1)(a+b +cn) cn(n 1)/2
= a+
cn
2
2
+(a+b
c
2
)n (a+b) (n
2
)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
NMERO DE FIBONACCI
Algoritmo: primer algoritmo iterativo (sumas y restas son operaciones
elementales)
Function FIB2(n)
i ::= 1; j ::= 0
FOR k ::= 1 TO n
j ::= i+j
i ::= j-i
ENDFOR
RETURN j
costo veces
b 1
c
1
n+1
k=1
1
c
2
n
i =1
1
c
3
n
i =1
1
d 1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
calculando el tiempo de ejecucin se tiene
T
FIB2
(n) = b +c
1
+
n

k=1
(c
1
+c
2
+c
3
) +d =
= (b +d) +(c
1
+c
2
+c
3
)n (n)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
si la suma y la resta no son operaciones elementales (operan
sobre nmeros muy grandes) entonces
Function FIB2(n)
i ::= 1; j ::= 0
FOR k ::= 1 TO n
j ::= i+j
i ::= j-i
ENDFOR
RETURN j
costo veces
b 1
c
1
n
k=1
1
c
2
tama no(j )
n
i =1
1
c
3
tama no(j )
n
i =1
1
d 1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
resultando
T
FIB2
(n) = b +
n

k=1
(c
1
+(c
2
+c
3
) tama no(j )) +d =
(b +d) +
n

k=1
(c
1
+(c
2
+c
3
) tama no(F
k
))
(b +d) +nc
1
+
n

k=1
dk por tama no(F
k
) (k)
= (b +d) +nc
1
+d
n(n +1)
2
=
= (b +d) +nc
1
+
d
2
n
2
+
d
2
n O(n
2
)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
Ciclos WHILE y REPEAT
no es tan fcil para los casos de ciclos repeat o while, no se
sabe cuntas veces sern ejecutados.
algunas de las tcnicas a aplicar pueden ser:
1
encontrar una funcin en las variables involucradas cuyo valor
decrezca en cada iteracin, y que sea siempre positiva
2
tratar la iteracin como si fuese un procedimiento recursivo, y
aplicar el mtodo para recursividad
3
elegir como cota del cuerpo del bucle el tiempo de ejecucin de
una de sus sentencias, la cual se denomina barmetro. Luego se
debe contar cuntas veces se ejecuta el barmetro
ningn mtodo es aplicable para todos los casos, y solo a travs
de la experiencia se puede detectar cul usar
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
MXIMO COMN DIVISOR
Algoritmo: Algoritmo de Euclides
Function EUCLIDES(m,n)
WHILE m>0
temp ::= m
m ::= n mod m
n ::= temp
ENDWHILE
RETURN n
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
se puede observar las propiedades:
n
i
= m
i 1
, m
i
= n
i 1
mod m
i 1
siempre que i 1
n
i
m
i
siempre que i > 1
para todo n, m tal que n m vale n mod m < n/2
n
i
= m
i 1
= n
i 2
mod m
i 2
< n
i 2
/2 si i > 2
luego, en dos iteraciones n
0
se reduce a menos de la mitad; en
cuatro a menos del cuarto; etc. Como m
i
> 0 entonces no puede
haber ms de 2log
2
n
0
iteraciones. Y T(n) O(logn).
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
ORDENAR UN ARREGLO
Algoritmo: Ordenamiento por Cubculos (enteros hasta s)
array U[1..s] ::= 0
FOR i ::= 1 TO n
k ::= T[i]; U[k]++
ENDFOR
i ::= 0
FOR k ::= 1 TO s
WHILE U[k] != 0
T[i++] ::= k; U[k]- -
ENDWHILE
ENDFOR
(n)
(1)
barmetro
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
el barmetro se ejecuta U[k]
0
+1 veces por cada k
luego el tiempo total es:
s
k=1
(U[k]
0
+1)(1)
y vale
T(n) = (n) +(1) +
s

k=1
(U[k]
0
+1)(1) =
= (n) +
s

k=1
U[k]
0
(1) +
s

k=1
(1)
= (n) +(n) +(s) (max(n, s))
el problema de este algoritmo es el lmite mximo de los
nmeros a utilizar, y el espacio de memoria auxiliar
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
una simple inspeccin del algoritmo da origen a una recurrencia,
que simula el ujo de control del algoritmo
function F(n)
IF (x)
P1(n)
ELSE
P2(n)
F(m); % con m<n
ENDIF
t (n) O(max(t
P1
(n), t
P2
(n) +t (m)))
luego se debe aplicar algn mtodo para resolver la recurrencia
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
ELEMENTO MAYOR
Function MAXIMO(T)
IF n=1
RETURN T[1]
ELSE
x ::= MAXIMO(T[1..n-1])
IF (x>T[n])
RETURN x
ELSE
RETURN T[n]
ENDIF
ENDIF
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
genera la siguiente recurrencia:
T(n) =

a si n = 1.
b +T(n 1) si n > 1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Secuencia
Condicional
Ciclo FOR
Ciclos WHILE y REPEAT
Recursividad
NMERO DE FIBONACCI
Algoritmo: algoritmo recursivo
function FIB1(n)
IF n<2
RETURN n
ELSE
RETURN (FIB1(n-1)+FIB1(n-2))
ENDIF
que genera la recurrencia
T
FIB1
(n) =

a si n < 2
T
FIB1
(n 1) +T
FIB1
(n 2) +b si n 2
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
veremos dos tcnicas bsicas y una auxiliar que se aplican a
diferentes clases de recurrencias:
Tcnicas de
Resolucin de
Recurrencias

mtodo del teorema maestro


mtodo de la ecuacin caracterstica
cambio de variables
no analizaremos su demostracin formal, slo consideraremos
su aplicacin para las recurrencias generadas a partir del anlisis
de algoritmos
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Mtodo del Teorema Maestro
se aplica en casos como:
T(n) =

5 si n = 0
9T(n/3) +n si n ,= 0
es importante identicar:
la cantidad de llamadas recursivas
el cociente en el que se divide el tamao de las instancias
la sobrecarga extra a las llamadas recursivas
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Teorema
Sean a 1, b > 1 constantes, f (n) una funcin y T(n) una
recurrencia denida sobre los enteros no negativos de la forma
T(n) = aT(n/b) +f (n), donde n/b puede interpretarse como n/b| o
,n/b| Entonces valen:
1
si f (n) O(n
log
b
a
) para algn > 0 entonces
T(n) (n
log
b
a
).
2
si f (n) (n
log
b
a
) entonces T(n) (n
log
b
a
lgn).
3
si f (n) (n
log
b
a+
) para algn > 0, y satisface
af (n/b) cf (n) para alguna constante c < 1, entonces
T(n) (f (n)).
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Ejemplos:
1
si T(n) = 9T(n/3) +n entonces a = 9, b = 3, se aplica el caso 1
con = 1 y T(n) (n
2
)
2
si T(n) = T(2n/3) +1 entonces a = 1, b = 3/2, se aplica el
caso 2 y T(n) = (lgn)
3
si T(n) = 3T(n/4) +nlgn entonces a = 3, b = 4,
f (n) (n
log
4
3+0,2
) y 3(n/4)lg(n/4) 3/4nlgn, por lo que se
aplica el caso 3 y T(n) (nlgn)
4
si T(n) = 2T(n/2) +nlgn, no se puede aplicar el caso 3 porque
f (n) = nlgn , (n
1+
) para cualquier > 0
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Mtodo de la Ecuacin Caracterstica
se aplica a ciertas recurrencias lineales con coecientes
constantes como:
T(n) =

5 si n = 0
10 si n = 1
5T(n 1) +8T(n 2) +2n si n > 1
en general, para recurrencias de la forma:
T(n) = a
1
T(n 1) +a
2
T(n 2) + +a
k
T(n k) +b
n
p(n)
donde a
i
, 1 i k, b son constantes y p(n) es un polinomio en
n de grado s
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Ejemplos:
en t (n) = 2t (n 1) +3
n
, a
1
= 2, b = 3, p(n) = 1,
s = 0
en t (n) = t (n 1) +t (n 2) +n, a
1
= 1, a
2
= 1,
b = 1, p(n) = n, s = 1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
para resolver la recurrencia
T(n) = a
1
T(n 1) +a
2
T(n 2) + +a
k
T(n k) +b
n
p(n):
1
encontrar las races no nulas de la ecuacin caracterstica:
(x
k
a
1
x
k1
a
2
x
k2
a
k
)(x b)
s+1
= 0
Races: r
i
, 1 i l k, cada una con multiplicidad m
i
.
2
las soluciones son de la forma de combinaciones lineales de
estas races de acuerdo a su multiplicidad
T(n) =
l

i =1
mi

j =1
c
ij
n
j 1
r
n
i
3
si se necesita, se encuentran valores para las constantes
c
ij
, 1 i l , 0 j m
i
1 y d
i
, 0 i s 1 segn la
recurrencia original y las condiciones iniciales (valores de la
recurencia para n = 0, 1, . . .)
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Ejemplo:
T(n) =

0 si n=0
2T(n 1) +1 si n > 0
1
si b = 1 y p(n) = 1 de grado 0, la ecuacin caracterstica
(x 2)(x 1)
0+1
= 0, con r
1
= 2, m
1
= 1 y r
2
= 1, m
2
= 1
2
la solucin general es de la forma T(n) = c
11
2
n
+c
21
1
n
.
3
a partir de las condiciones iniciales se encuentra:
c
11
+c
21
= 0 de n = 0
2c
11
+c
21
= 1 de n = 1
de donde c
11
= 1 y c
21
= 1.
4
la solucin es T(n) = 2
n
1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Ejemplo:
T(n) =

n si n=0,1,2
5T(n 1) 8T(n 2) +4T(n 3) si n > 2
1
si b = 0 y p(n) = 1, la ecuacin caracterstica es
x
3
5x
2
+8x 4 = 0, con r
1
= 1, m
1
= 1 y r
2
= 2, m
2
= 2
2
la solucin general es de la forma T(n) = c
11
1
n
+c
21
2
n
+c
22
n2
n
.
3
a partir de las condiciones iniciales se obtienen:
c
11
+c
21
= 0 de n = 0
c
11
+2c
21
+2c
22
= 1 de n = 1
c
11
+4c
21
+8c
22
= 2 de n = 2
de donde c
11
= 2, c
21
= 2 y c
22
= 1/2
4
la solucin es entonces la funcin T(n) = 2
n+1
n2
n1
2
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Ejemplo: nmero de Fibonacci
F(n) =

n si n=0,1
F(n 1) +F(n 2) si n 2
1
si b = 0 y p(n) = 1, la ecuacin caracterstica es x
2
x 1 = 0,
con races =
1+

5
2
y

=
1

5
2
2
la solucin general es F(n) = c
11

n
+c
21

n
.
3
a partir de las condiciones iniciales se obtienen:
c
11
+c
21
= 0 de n = 0
c
11
+c
21

= 1 de n = 1
cuyas soluciones son c
11
= 1/

5 y c
21
= 1/

5
4
la solucin es F(n) =
1

5
(
n

n
).
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
Cambio de Variable
por ejemplo para la recurrencia
T(n) =

a si n=1
2T(n/2) +nlog
2
n sino
No se puede aplicar el teorema maestro, ni la ecuacin
caracterstica
se dene una nueva recurrencia S(i ) = T(2
i
), con el objetivo de
llevarla a una forma en la que se pueda resolver siguiendo algn
mtodo anterior
el caso general queda
S(i ) = T(2
i
) = 2T(2
i
/2) +2
i
i = 2T(2
i 1
) +i 2
i
= 2S(i 1) +i 2
i
con b = 2 y p(i ) = i de grado 1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
la ecuacin caracterstica de esta recurrencia es
(x 2)(x 2)
1+1
= 0 con raz 2 de grado 3
la solucin es entonces S(i ) = c
11
2
i
+c
12
i 2
i
+c
13
i
2
2
i
volviendo a la variable original queda
T(n) = c
11
n +c
12
(log
2
n)n +c
13
(log
2
n)
2
n.
se pueden obtener los valores de las constantes sustituyendo
esta solucin en la recurrencia original:
T(n) 2T(n/2) = nlog
2
n = (c
12
c
13
)n +2c
13
n(log
2
n)
de donde c
12
= c
13
y 2c
12
= 1
Pablo R. Fillottrani Algoritmos y Complejidad
Tcnicas de Demostracin
Herramientas Matemticas Bsicas
Notacin Asinttica
Estructuras de Datos
Anlisis de Algoritmos por Estructuras de Control
Resolucin de Recurrencias
Mtodo del Teorema Maestro
Mtodo de la Ecuacin Caracterstica
Cambio de Variable
por lo tanto T(n) (nlog
2
n [ n es potencia de 2)
si se puede probar que T(n) es eventualmente no decreciente,
por la regla de las funciones de crecimiento suave se puede
extender el resultado a todos los n (dado que nlog
2
n es de
crecimiento suave). En este caso T(n) (nlog
2
n)
Pablo R. Fillottrani Algoritmos y Complejidad

You might also like