0% encontró este documento útil (0 votos)
35 vistas78 páginas

Eficiencia y Análisis de Algoritmos

Cargado por

lrodriguez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
35 vistas78 páginas

Eficiencia y Análisis de Algoritmos

Cargado por

lrodriguez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Análisis de la eficiencia de un algoritmo

IIC2283

1
Una noción general de algoritmo

Sea Σ un alfabeto.

Vamos a pensar en un algoritmo A como una función A : Σ∗ → Σ∗

2
Una noción general de algoritmo

Sea Σ un alfabeto.

Vamos a pensar en un algoritmo A como una función A : Σ∗ → Σ∗

Esta es una representación general que incluye tanto a problemas de


decisión como a los de computación.
I ¿Cómo se representa un problema de decisión?

2
Tiempo de ejecución de un algoritmo

A cada algoritmo A asociamos una función tiempoA : Σ∗ → N tal que:

tiempoA (w ): número de pasos realizados por A con entrada w ∈ Σ∗

Para definir esta función tenemos que definir qué operaciones vamos a
contar, y qué costo les asignamos.

3
Tiempo de ejecución de un algoritmo en el peor caso

El primer tipo de análisis que vamos a realizar de la complejidad de un


algoritmo va a estar basado en el peor caso.

4
Tiempo de ejecución de un algoritmo en el peor caso

El primer tipo de análisis que vamos a realizar de la complejidad de un


algoritmo va a estar basado en el peor caso.

Para cada algoritmo A asociamos una función tA : N → N tal que

tA (n) = máx{tiempoA (w ) | w ∈ Σ∗ y |w | = n},

donde |w | es el largo de w

4
Notación asintótica

En muchos casos, nos interesa conocer el orden de un algoritmo en lugar


de su complejidad exacta.
I Queremos decir que un algoritmo es lineal o cuadrático, en lugar de
decir que su complejidad es 3n2 + 17n + 22

Vamos a desarrollar notación para hablar del orden de un algoritmo.

5
Notación asintótica

Supuesto
La complejidad de un algoritmo va a ser medida en términos de funciones
de la forma f : N → R+ + + +
0 , donde R = {r ∈ R | r > 0} y R0 = R ∪ {0}

6
Notación asintótica

Supuesto
La complejidad de un algoritmo va a ser medida en términos de funciones
de la forma f : N → R+ + + +
0 , donde R = {r ∈ R | r > 0} y R0 = R ∪ {0}

Estas funciones incluyen a las funciones definidas en las transparencias


anteriores, y también sirven para modelar el tiempo de ejecución de un
algoritmo

6
La notación O(f )

Sea f : N → R+
0

Definición
O(f ) = {g : N → R+ +
0 | (∃c ∈ R )(∃n0 ∈ N)
(∀n ≥ n0 ) (g (n) ≤ c · f (n))}

7
La notación O(f )

Sea f : N → R+
0

Definición
O(f ) = {g : N → R+ +
0 | (∃c ∈ R )(∃n0 ∈ N)
(∀n ≥ n0 ) (g (n) ≤ c · f (n))}

Decimos entonces que g ∈ O(f )


I También usamos la notación g es O(f ), lo cual es formalizado como
g ∈ O(f )

7
La notación O(f )

Sea f : N → R+
0

Definición
O(f ) = {g : N → R+ +
0 | (∃c ∈ R )(∃n0 ∈ N)
(∀n ≥ n0 ) (g (n) ≤ c · f (n))}

Decimos entonces que g ∈ O(f )


I También usamos la notación g es O(f ), lo cual es formalizado como
g ∈ O(f )

Ejercicio
Demuestre que 3n2 + 17n + 22 ∈ O(n2 )
Las notaciones Ω(f ) y Θ(f )

Definición
Ω(f ) = {g : N → R+ +
0 | (∃c ∈ R )(∃n0 ∈ N)
(∀n ≥ n0 ) (c · f (n) ≤ g (n))}
Θ(f ) = O(f ) ∩ Ω(f )

8
Las notaciones Ω(f ) y Θ(f )

Definición
Ω(f ) = {g : N → R+ +
0 | (∃c ∈ R )(∃n0 ∈ N)
(∀n ≥ n0 ) (c · f (n) ≤ g (n))}
Θ(f ) = O(f ) ∩ Ω(f )

Ejercicios
1. Demuestre que 3n2 + 17n + 22 ∈ Θ(n2 )

2. Demuestre que g ∈ Θ(f ) si y sólo si existen c, d ∈ R+ y


n0 ∈ N tal que para todo n ≥ n0 : c · f (n) ≤ g (n) ≤ d · f (n)

8
Ejercicios

1. Sea p(n) un polinomio de grado k ≥ 0 con coeficientes en los números


enteros. Demuestre que p(n) ∈ O(nk ).

2. ¿Cuáles de las siguientes afirmaciones son ciertas?


I n2 ∈ O(n)
I Si f (n) ∈ O(n), entonces f (n)2 ∈ O(n2 )
I Si f (n) ∈ O(n), entonces 2f (n) ∈ O(2n )

f (n)
3. Suponga que lı́m existe y es igual a `. Demuestre lo siguiente:
n→∞ g (n)
I Si ` = 0, entonces f ∈ O(g ) y g 6∈ O(f )
I Si ` = ∞, entonces g ∈ O(f ) y f 6∈ O(g )
I Si ` ∈ R+ , entonces f ∈ Θ(g )

f (n)
4. Encuentre funciones f y g tales que f ∈ Θ(g ) y lı́m no existe
n→∞ g (n)

9
Búsqueda binaria

Suponga que tiene una lista ordenada (de menor a mayor)


L[1 . . . n] de números enteros con n ≥ 1

¿Cómo podemos verificar si un número a está en L?

10
Búsqueda binaria

BúsquedaBinaria(a, L, i, j)
if i > j then return no
else if i = j then
if L[i] = a then return i
else return no
else
p := b i+j
2
c
if L[p] < a then return BúsquedaBinaria(a, L, p + 1, j)
else if L[p] > a then return BúsquedaBinaria(a, L, i, p − 1)
else return p

Llamada inicial al algoritmo: BúsquedaBinaria(a, L, 1, n)

11
Tiempo de ejecución de búsqueda binaria

¿Cuál es la complejidad del algoritmo?


I ¿Qué operaciones vamos a considerar?
I ¿Cuál es el peor caso?

12
Tiempo de ejecución de búsqueda binaria

¿Cuál es la complejidad del algoritmo?


I ¿Qué operaciones vamos a considerar?
I ¿Cuál es el peor caso?

Si contamos sólo las comparaciones, entonces la siguiente expresión


define la complejidad del algoritmo:
(
c n=1
T (n) =
T (b n2 c) + d n > 1

donde c ∈ N y d ∈ N son constantes tales que c ≥ 1 y d ≥ 1

12
Tiempo de ejecución de búsqueda binaria

¿Cuál es la complejidad del algoritmo?


I ¿Qué operaciones vamos a considerar?
I ¿Cuál es el peor caso?

Si contamos sólo las comparaciones, entonces la siguiente expresión


define la complejidad del algoritmo:
(
c n=1
T (n) =
T (b n2 c) + d n > 1

donde c ∈ N y d ∈ N son constantes tales que c ≥ 1 y d ≥ 1

Esta es una ecuación de recurrencia

12
Solucionando una ecuación de recurrencia

¿Cómo podemos solucionar una ecuación de recurrencia?


I Técnica básica: sustitución de variables
Solucionando una ecuación de recurrencia

¿Cómo podemos solucionar una ecuación de recurrencia?


I Técnica básica: sustitución de variables

Para la ecuación anterior usamos la sustitución n = 2k


I Vamos a resolver la ecuación suponiendo que n es una potencia de 2
I Vamos a utilizar inducción para demostrar que la solución obtenida
nos da el orden del algoritmo
Ecuaciones de recurrencia: sustitución de variables

Si realizamos la sustitución n = 2k en la ecuación:


(
c n=1
T (n) = n
T (b 2 c) + d n > 1

obtenemos:
(
c k=0
T (2k ) =
T (2k−1 ) + d k>0

14
Ecuaciones de recurrencia: sustitución de variables

Extendiendo la expresión anterior obtenemos:

T (2k ) = T (2k−1 ) + d
= (T (2k−2 ) + d) + d
= T (2k−2 ) + 2d
= (T (2k−3 ) + d) + 2d
= T (2k−3 ) + 3d
= ···

15
Ecuaciones de recurrencia: sustitución de variables

Extendiendo la expresión anterior obtenemos:

T (2k ) = T (2k−1 ) + d
= (T (2k−2 ) + d) + d
= T (2k−2 ) + 2d
= (T (2k−3 ) + d) + 2d
= T (2k−3 ) + 3d
= ···

Deducimos la expresión general para k − i ≥ 0:


T (2k ) = T (2k−i ) + i · d

15
Ecuaciones de recurrencia: sustitución de variables

Considerando i = k obtenemos:
T (2k ) = T (1) + k · d
= c +k ·d

16
Ecuaciones de recurrencia: sustitución de variables

Considerando i = k obtenemos:
T (2k ) = T (1) + k · d
= c +k ·d

Dado que k = log2 (n), obtenemos que T (n) = c + d · log2 (n) para n
potencia de 2

16
Ecuaciones de recurrencia: sustitución de variables

Considerando i = k obtenemos:
T (2k ) = T (1) + k · d
= c +k ·d

Dado que k = log2 (n), obtenemos que T (n) = c + d · log2 (n) para n
potencia de 2

Usando inducción vamos a extender esta solución y vamos a demostrar


que T (n) ∈ O(log2 (n))

16
Inducción constructiva

Sea T (n) definida como:


(
c n=1
T (n) =
T (b n2 c) + d n>1

Queremos demostrar que T (n) ∈ O(log2 (n))


I Vale decir, queremos demostrar que existen e ∈ R+ y n0 ∈ N tales
que T (n) ≤ e · log2 (n) para todo n ≥ n0
Inducción constructiva

Sea T (n) definida como:


(
c n=1
T (n) =
T (b n2 c) + d n>1

Queremos demostrar que T (n) ∈ O(log2 (n))


I Vale decir, queremos demostrar que existen e ∈ R+ y n0 ∈ N tales
que T (n) ≤ e · log2 (n) para todo n ≥ n0

Inducción nos va servir tanto para demostrar la propiedad y como para


determinar valores adecuados para e y n0
I Por esto usamos el término inducción constructiva
Inducción constructiva

Dado que T (1) = c y log2 (1) = 0 no es posible encontrar una valor para
e tal que T (1) ≤ e · log2 (1)

Dado que T (2) = (c + d), si consideramos e = (c + d) tenemos que


T (2) ≤ e · log2 (2)
I Definimos entonces e = (c + d) y n0 = 2

Tenemos entonces que demostrar lo siguiente:


(∀n ≥ 2)(T (n) ≤ e · log2 (n))

18
Inducción constructiva y fuerte

¿Cuál es el principio de inducción adecuado para el problema


anterior?
I Tenemos n0 como punto de partida

I n0 es un caso base, pero podemos tener otros

I Dado n > n0 tal que n no es un caso base, suponemos que la


propiedad se cumple para todo k ∈ {n0 , . . . , n − 1}

19
Inducción constructiva y fuerte

Queremos demostrar que (∀n ≥ 2) (T (n) ≤ e · log2 (n))

20
Inducción constructiva y fuerte

Queremos demostrar que (∀n ≥ 2) (T (n) ≤ e · log2 (n))


I 2 es el punto de partida y el primer caso base

20
Inducción constructiva y fuerte

Queremos demostrar que (∀n ≥ 2) (T (n) ≤ e · log2 (n))


I 2 es el punto de partida y el primer caso base

I También 3 es un caso base ya que T (3) = T (1) + d y para


T (1) no se cumple la propiedad

20
Inducción constructiva y fuerte

Queremos demostrar que (∀n ≥ 2) (T (n) ≤ e · log2 (n))


I 2 es el punto de partida y el primer caso base

I También 3 es un caso base ya que T (3) = T (1) + d y para


T (1) no se cumple la propiedad

I Para n ≥ 4 tenemos que T (n) = T (b n2 c) + d y b n2 c ≥ 2, por


lo que resolvemos este caso de manera inductiva
I Suponemos que la propiedad se cumple para todo
k ∈ {2, . . . , n − 1}

20
La demostración por inducción fuerte

Casos base:
T (2) = c +d = e · log2 (2)
T (3) = c +d < e · log2 (3)

21
La demostración por inducción fuerte

Casos base:
T (2) = c +d = e · log2 (2)
T (3) = c +d < e · log2 (3)

Caso inductivo:

Suponemos que n ≥ 4 y para todo k ∈ {2, . . . , n − 1} se


tiene que T (k) ≤ e · log2 (k)

21
La demostración por inducción fuerte

Usando la definición de T (n) y la hipótesis de inducción concluimos que:


n
T (n) = T (b c) + d
2
n
≤ e · log2 (b c) + d
2
n
≤ e · log2 ( ) + d
2
= e · log2 (n) − e · log2 (2) + d
= e · log2 (n) − (c + d) + d
= e · log2 (n) − c
< e · log2 (n)

22
Un segundo ejemplo de inducción constructiva

Considere la siguiente ecuación de recurrencia:


(
0 n=0
T (n) = 2
n + n · T (n − 1) n > 0
Un segundo ejemplo de inducción constructiva

Considere la siguiente ecuación de recurrencia:


(
0 n=0
T (n) = 2
n + n · T (n − 1) n > 0

Queremos determinar una función f (n) para la cual se tiene que


T (n) ∈ O(f (n))
Un segundo ejemplo de inducción constructiva

Considere la siguiente ecuación de recurrencia:


(
0 n=0
T (n) = 2
n + n · T (n − 1) n > 0

Queremos determinar una función f (n) para la cual se tiene que


T (n) ∈ O(f (n))
I ¿Alguna conjetura sobre quién podrı́a ser f (n)?

23
Una posible solución para la ecuación de recurrencia

Dada la forma de la ecuación de recurrencia, podrı́amos intentar


primero con f (n) = n!

Tenemos entonces que determinar c ∈ R+ y n0 ∈ N tales que


T (n) ≤ c · n! para todo n ≥ n0
Una posible solución para la ecuación de recurrencia

Dada la forma de la ecuación de recurrencia, podrı́amos intentar


primero con f (n) = n!

Tenemos entonces que determinar c ∈ R+ y n0 ∈ N tales que


T (n) ≤ c · n! para todo n ≥ n0
I Pero nos vamos a encontrar con un problema al tratar de usar
la hipótesis de inducción
Una posible solución para la ecuación de recurrencia

Supongamos que la propiedad se cumple para n:

T (n) ≤ c · n!
Una posible solución para la ecuación de recurrencia

Supongamos que la propiedad se cumple para n:

T (n) ≤ c · n!

Tenemos que:
T (n + 1) = (n + 1)2 + (n + 1) · T (n)
≤ (n + 1)2 + (n + 1) · (c · n!)
= (n + 1)2 + c · (n + 1)!

25
Una posible solución para la ecuación de recurrencia

Supongamos que la propiedad se cumple para n:

T (n) ≤ c · n!

Tenemos que:
T (n + 1) = (n + 1)2 + (n + 1) · T (n)
≤ (n + 1)2 + (n + 1) · (c · n!)
= (n + 1)2 + c · (n + 1)!

Pero no existe una constante c para la cual (n + 1)2 + c · (n + 1)! ≤ c · (n + 1)!


I Dado que n ∈ N

25
¿Cómo solucionamos el problema con la demostración?

Una demostración por inducción puede hacerse más simple considerando


una propiedad más fuerte.
I Dado que la hipótesis de inducción se va a volver más fuerte

26
¿Cómo solucionamos el problema con la demostración?

Una demostración por inducción puede hacerse más simple considerando


una propiedad más fuerte.
I Dado que la hipótesis de inducción se va a volver más fuerte

Vamos a seguir tratando de demostrar que T (n) ∈ O(n!) pero ahora


considerando una propiedad más fuerte.

26
¿Cómo solucionamos el problema con la demostración?

Una demostración por inducción puede hacerse más simple considerando


una propiedad más fuerte.
I Dado que la hipótesis de inducción se va a volver más fuerte

Vamos a seguir tratando de demostrar que T (n) ∈ O(n!) pero ahora


considerando una propiedad más fuerte.

Vamos a demostrar lo siguiente:


(∃c ∈ R+ )(∃d ∈ R+ )(∃n0 ∈ N)(∀n ≥ n0 )(T (n) ≤ c · n! − d · n)

26
Inducción constructiva sobre una propiedad más fuerte
Para tener una mejor idea de los posible valores para c, d y n0 vamos a
considerar primero el paso inductivo en la demostración.

27
Inducción constructiva sobre una propiedad más fuerte
Para tener una mejor idea de los posible valores para c, d y n0 vamos a
considerar primero el paso inductivo en la demostración.

Supongamos que la propiedad se cumple para n:


T (n) ≤ c · n! − d · n

27
Inducción constructiva sobre una propiedad más fuerte
Para tener una mejor idea de los posible valores para c, d y n0 vamos a
considerar primero el paso inductivo en la demostración.

Supongamos que la propiedad se cumple para n:


T (n) ≤ c · n! − d · n

Tenemos que:
T (n + 1) = (n + 1)2 + (n + 1) · T (n)
≤ (n + 1)2 + (n + 1) · (c · n! − d · n)
= c · (n + 1)! + (n + 1)2 − d · n · (n + 1)
= c · (n + 1)! + ((n + 1) − d · n) · (n + 1)

27
Inducción constructiva sobre una propiedad más fuerte

Para poder demostrar que la propiedad se cumple para n + 1 necesitamos


que lo siguiente sea cierto:

(n + 1) − d · n ≤ −d
Inducción constructiva sobre una propiedad más fuerte

Para poder demostrar que la propiedad se cumple para n + 1 necesitamos


que lo siguiente sea cierto:

(n + 1) − d · n ≤ −d

De lo cual concluimos la siguiente restricción para d:

(n + 1)
≤ d
(n − 1)
Inducción constructiva sobre una propiedad más fuerte

Para poder demostrar que la propiedad se cumple para n + 1 necesitamos


que lo siguiente sea cierto:

(n + 1) − d · n ≤ −d

De lo cual concluimos la siguiente restricción para d:

(n + 1)
≤ d
(n − 1)

Si consideramos n ≥ 2 concluimos que d ≥ 3


I Consideramos entonces n0 = 2 y d = 3
Inducción constructiva sobre una propiedad más fuerte

Para concluir la demostración debemos considerar el caso base n0 = 2


Inducción constructiva sobre una propiedad más fuerte

Para concluir la demostración debemos considerar el caso base n0 = 2

Tenemos que:
T (0) = 0
T (1) = 12 + 1 · T (0) = 1
T (2) = 22 + 2 · T (1) = 6
Inducción constructiva sobre una propiedad más fuerte

Para concluir la demostración debemos considerar el caso base n0 = 2

Tenemos que:
T (0) = 0
T (1) = 12 + 1 · T (0) = 1
T (2) = 22 + 2 · T (1) = 6

Entonces se debe cumplir que T (2) ≤ c · 2! − 3 · 2, vale decir,

6 ≤ c ·2−6
Inducción constructiva sobre una propiedad más fuerte

Para concluir la demostración debemos considerar el caso base n0 = 2

Tenemos que:
T (0) = 0
T (1) = 12 + 1 · T (0) = 1
T (2) = 22 + 2 · T (1) = 6

Entonces se debe cumplir que T (2) ≤ c · 2! − 3 · 2, vale decir,

6 ≤ c ·2−6

Concluimos que c ≥ 6, por lo que consideramos c = 6


I Tenemos entonces que (∀n ≥ 2)(T (n) ≤ 6 · n! − 3 · n), de lo cual
concluimos que T (n) ∈ O(n!)
El Teorema Maestro

Muchas de las ecuaciones de recurrencia que vamos a usar en este curso


tienen la siguiente forma:
(
c n=0
T (n) = n
a · T (b b c) + f (n) n ≥ 1

donde a, b y c son constantes, y f (n) es una función arbitraria.

El Teorema Maestro nos dice cuál es el orden de T (n) dependiendo de


ciertas condiciones sobre a, b y f (n)

30
El Teorema Maestro

El Teorema Maestro también se puede utilizar cuando b bn c es


reemplazado por d bn e

Antes de dar el enunciado del Teorema Maestro necesitamos definir una


condición de regularidad sobre la función f (n)

31
Una condición de regularidad sobre funciones

Dado: función f : N → R+
0 y constantes a, b ∈ R tales que a ≥ 1 y b > 1

Definición
f es (a, b)-regular si existen constantes c ∈ R+ y n0 ∈ N tales que c < 1 y
n
(∀n ≥ n0 )(a · f (b c) ≤ c · f (n))
b
Una condición de regularidad sobre funciones

Dado: función f : N → R+
0 y constantes a, b ∈ R tales que a ≥ 1 y b > 1

Definición
f es (a, b)-regular si existen constantes c ∈ R+ y n0 ∈ N tales que c < 1 y
n
(∀n ≥ n0 )(a · f (b c) ≤ c · f (n))
b

Ejercicio
1. Demuestre que las funciones n, n2 y 2n son (a, b)-regulares si a < b.
2. Demuestre que la función log2 (n) no es (1,2)-regular.
Una solución al segundo problema

Por contradicción, supongamos que log2 (n) es (1,2)-regular.

Entonces existen constantes c ∈ R+ y n0 ∈ N tales que c < 1 y


n
(∀n ≥ n0 )(log2 (b c) ≤ c · log2 (n))
2

33
Una solución al segundo problema

Por contradicción, supongamos que log2 (n) es (1,2)-regular.

Entonces existen constantes c ∈ R+ y n0 ∈ N tales que c < 1 y


n
(∀n ≥ n0 )(log2 (b c) ≤ c · log2 (n))
2

De esto concluimos que:


2·k
(∀k ≥ n0 )(log2 (b c) ≤ c · log2 (2 · k))
2
Una solución al segundo problema

Vale decir:
(∀k ≥ n0 )(log2 (k) ≤ c · (log2 (k) + 1))
Una solución al segundo problema

Vale decir:
(∀k ≥ n0 )(log2 (k) ≤ c · (log2 (k) + 1))

Dado que 0 < c < 1, concluimos que:


c
(∀k ≥ n0 )(log2 (k) ≤ )
1−c
Lo cual nos lleva a una contradicción.

34
El enunciado del Teorema Maestro

Teorema
Sea f : N → R+ +
0 , a, b, c ∈ R0 tales que a ≥ 1 y b > 1, y T (n) una función
definida por la siguiente ecuación de recurrencia:
(
c n=0
T (n) =
a · T (b bn c) + f (n) n ≥ 1

Se tiene que:
El enunciado del Teorema Maestro

Teorema
Sea f : N → R+ +
0 , a, b, c ∈ R0 tales que a ≥ 1 y b > 1, y T (n) una función
definida por la siguiente ecuación de recurrencia:
(
c n=0
T (n) =
a · T (b bn c) + f (n) n ≥ 1

Se tiene que:
1. Si f (n) ∈ O(nlogb (a)−ε ) para ε > 0, entonces T (n) ∈ Θ(nlogb (a) )
El enunciado del Teorema Maestro

Teorema
Sea f : N → R+ +
0 , a, b, c ∈ R0 tales que a ≥ 1 y b > 1, y T (n) una función
definida por la siguiente ecuación de recurrencia:
(
c n=0
T (n) =
a · T (b bn c) + f (n) n ≥ 1

Se tiene que:
1. Si f (n) ∈ O(nlogb (a)−ε ) para ε > 0, entonces T (n) ∈ Θ(nlogb (a) )
2. Si f (n) ∈ Θ(nlogb (a) ), entonces T (n) ∈ Θ(nlogb (a) · log2 (n))
El enunciado del Teorema Maestro

Teorema
Sea f : N → R+ +
0 , a, b, c ∈ R0 tales que a ≥ 1 y b > 1, y T (n) una función
definida por la siguiente ecuación de recurrencia:
(
c n=0
T (n) =
a · T (b bn c) + f (n) n ≥ 1

Se tiene que:
1. Si f (n) ∈ O(nlogb (a)−ε ) para ε > 0, entonces T (n) ∈ Θ(nlogb (a) )
2. Si f (n) ∈ Θ(nlogb (a) ), entonces T (n) ∈ Θ(nlogb (a) · log2 (n))
3. Si f (n) ∈ Ω(nlogb (a)+ε ) para ε > 0 y f es (a, b)-regular, entonces
T (n) ∈ Θ(f (n))
Usando el Teorema Maestro

Considere la siguiente ecuación de recurrencia:


(
1 n=0
T (n) =
3 · T (b n2 c) + c · n n≥1
Usando el Teorema Maestro

Considere la siguiente ecuación de recurrencia:


(
1 n=0
T (n) =
3 · T (b n2 c) + c · n n≥1

Dado que log2 (3) > 1.5, tenemos que log2 (3) − 0.5 > 1
Usando el Teorema Maestro

Considere la siguiente ecuación de recurrencia:


(
1 n=0
T (n) =
3 · T (b n2 c) + c · n n≥1

Dado que log2 (3) > 1.5, tenemos que log2 (3) − 0.5 > 1

Deducimos que c · n ∈ O(nlog2 (3)−0.5 ), por lo que usando el Teorema


Maestro concluimos que T (n) ∈ Θ(nlog2 (3) )
El Teorema Maestro y la función dxe

Suponga que cambiamos b bn c por d bn e en la definición de


(a, b)-regularidad.

Entonces el Teorema Maestro sigue siendo válido pero con


T (b bn c) + f (n) reemplazado por T (d bn e) + f (n)

37
Analizando la complejidad de un algoritmo

Sea A : Σ∗ → Σ∗ un algoritmo
I Recuerde que tA (n) es el mayor número de pasos realizados por A
sobre las entradas w ∈ Σ∗ de largo n

Definición (Complejidad en el peor caso)


Decimos que A en el peor caso es O(f (n)) si tA (n) ∈ O(f (n))

38
Analizando la complejidad de un algoritmo

Notación
Las definición de peor caso puede ser modificada para considerar las
notaciones Θ y Ω
I Simplemente reemplazando O(f (n)) por Θ(f (n)) u Ω(f (n)),
respectivamente

Por ejemplo, decimos que A en peor caso es Ω(f (n)) si tA (n) ∈ Ω(f (n))

39

También podría gustarte