Crecimiento Asintotico

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 189

Crecimiento Asintótico

Análisis y Diseño de Algoritmos


Dra. Aurea Soriano Vargas

1
Clase pasada

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 2


Clase pasada

● Problema de emparejamiento estable. Dados n hombres y n mujeres, y sus preferencias,


encuentre una coincidencia estable, si existe.
● Algoritmo Gale-Shapley. Garantiza encontrar una coincidencia estable para cada instancia
de problema.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 3


Clase pasada

● Problema de emparejamiento estable. Dados n hombres y n mujeres, y sus preferencias,


encuentre una coincidencia estable, si existe.
● Algoritmo Gale-Shapley. Garantiza encontrar una coincidencia estable para cada instancia
de problema.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 4


Clase pasada

● Problema de emparejamiento estable. Dados n hombres y n mujeres, y sus preferencias,


encuentre una coincidencia estable, si existe.
● Algoritmo Gale-Shapley. Garantiza encontrar una coincidencia estable para cada instancia
de problema.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 5


Clase pasada

● Problema de emparejamiento estable. Dados n hombres y n mujeres, y sus preferencias,


encuentre una coincidencia estable, si existe.
● Algoritmo Gale-Shapley. Garantiza encontrar una coincidencia estable para cada instancia
de problema.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 6


Clase pasada

● Problema de emparejamiento estable. Dados n hombres y n mujeres, y sus preferencias,


encuentre una coincidencia estable, si existe.
● Algoritmo Gale-Shapley. Garantiza encontrar una coincidencia estable para cada instancia
de problema.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 7


Clase pasada

● Problema de emparejamiento estable. Dados n hombres y n mujeres, y sus preferencias,


encuentre una coincidencia estable, si existe.
● Algoritmo Gale-Shapley. Garantiza encontrar una coincidencia estable para cada instancia
de problema.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 8


Clase Pasada
Preferencias de
hombres
0 1 2 3 4

Victor Bertha Amy Diane Erika Claire

William Diane Bertha Amy Claire Erika


Algoritmo Gale-Shapley: n2
Xavier Bertha Erika Claire Diane Amy

Yancey Amy Diane Claire Bertha Erika

Zeus Bertha Diane Amy Erika Claire

Preferencias de
mujeres
0 1 2 3 4

Amy Zeus Victor William Yancey Xavier

Bertha Xavier William Yancey Victor Zeus

Claire William Xavier Yancey Zeus Victor

Diane Victor Zeus Yancey Xavier William

Erika y Diseño
Análisis Yancey William
de Algoritmos, Zeus Soriano
Aurea Xavier Victor
Vargas (2020) 9
Hoy

● ¿Qué es la eficiencia?

● Herramientas:
○ Análisis del peor caso
○ Analizar el crecimiento asintótico de funciones

● Notación asintótica

● Práctica de cómo encontrar tiempos de ejecución asintóticos de algoritmos

● Teorema del Maestro

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 10


Hoy

● ¿Qué es la eficiencia?

● Herramientas:
○ Análisis del peor caso
○ Analizar el crecimiento asintótico de funciones

● Notación asintótica

● Estructuras de datos básicas

● Práctica de cómo encontrar tiempos de ejecución asintóticos de algoritmos

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 11


¿Asíntota?

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 12


¿Asíntota?

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 13


¿Es eficiente mi algoritmo?

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 14


¿Es eficiente mi algoritmo?

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 15


¿Es eficiente mi algoritmo?

Idea: Implementarlo, calcular el tiempo que toma en procesar.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 16


¿Es eficiente mi algoritmo?

Idea: Implementarlo, calcular el tiempo que toma en procesar.

¿Problemas?
¿Efectos del lenguaje de programación?
¿Efectos del procesador?
¿Efectos de la cantidad de memoria?
¿Efectos de otras cosas que se ejecutan
en la computadora?
¿Efectos de los valores de entrada?
¿Efectos del tamaño de entrada?

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 17


¿Es eficiente mi algoritmo?

Idea: Implementarlo, calcular el tiempo que toma en procesar.

¿Problemas?
¿Efectos del lenguaje de programación?
¿Efectos del procesador?
¿Efectos de la cantidad de memoria?
¿Efectos de otras cosas que se ejecutan
en la computadora?
¿Efectos de los valores de entrada?
¿Efectos del tamaño de entrada?

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 18


Análisis del peor caso

Tiempo de ejecución en el peor de los casos: retorna el mayor tiempo de


ejecución posible en cualquier entrada de tamaño N.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 19


Análisis del peor caso

Tiempo de ejecución en el peor de los casos: retorna el mayor tiempo de


ejecución posible en cualquier entrada de tamaño N.

Parece pesimista, pero:


● Efectivo en la práctica
● Es difícil encontrar una buena alternativa
○ Ventajas: garantía muy fuerte
○ Contras: garantía muy fuerte

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 20


Análisis del peor caso

Tiempo de ejecución en el peor de los casos: retorna el mayor tiempo de


ejecución posible en cualquier entrada de tamaño N.

Parece pesimista, pero:


● Efectivo en la práctica
● Es difícil encontrar una buena alternativa
○ Ventajas: garantía muy fuerte
○ Contras: garantía muy fuerte

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 21


Análisis del peor caso

Tiempo de ejecución en el peor de los casos: retorna el mayor tiempo de


ejecución posible en cualquier entrada de tamaño N.

Parece pesimista, pero:


● Efectivo en la práctica
● Es difícil encontrar una buena alternativa
○ Ventajas: garantía muy fuerte
○ Contras: garantía muy fuerte
Este es mi algoritmo!
Algoritmo:
Hacer esto
Hacer lo otro
Retornar la respuesta
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 22
Análisis del peor caso

Tiempo de ejecución en el peor de los casos: retorna el mayor tiempo de


ejecución posible en cualquier entrada de tamaño N.

Parece pesimista, pero: Esta es mi entrada


● Efectivo en la práctica
● Es difícil encontrar una buena alternativa
○ Ventajas: garantía muy fuerte
○ Contras: garantía muy fuerte
Este es mi algoritmo!
Algoritmo:
Hacer esto
Hacer lo otro
Retornar la respuesta
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 23
Fuerza Bruta

Buen punto de partida para pensar en la eficiencia: ¿podemos


hacerlo mejor que una solución de “fuerza bruta”?

¿Cuál es la solución de fuerza bruta para el problema de


emparejamiento estable?

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 24


Gale-Shapley
Preferencias de
hombres
0 1 2 3 4

Victor Bertha Amy Diane Erika Claire

William Diane Bertha Amy Claire Erika


Algoritmo Gale-Shapley: n2
Xavier Bertha Erika Claire Diane Amy

Yancey Amy Diane Claire Bertha Erika

Zeus Bertha Diane Amy Erika Claire

Preferencias de
mujeres
0 1 2 3 4

Amy Zeus Victor William Yancey Xavier

Bertha Xavier William Yancey Victor Zeus

Claire William Xavier Yancey Zeus Victor

Diane Victor Zeus Yancey Xavier William

Erika y Diseño
Análisis Yancey William
de Algoritmos, Zeus Soriano
Aurea Xavier Victor
Vargas (2020) 25
Gale-Shapley
Preferencias de
hombres
0 1 2 3 4

Victor Bertha Amy Diane Erika Claire

William Diane Bertha Amy Claire Erika


Algoritmo Gale-Shapley: n2
Xavier Bertha Erika Claire Diane Amy

Yancey Amy Diane Claire Bertha Erika

Zeus Bertha Diane Amy Erika Claire

Preferencias de
mujeres
0 1 2 3 4

Amy Zeus Victor William Yancey Xavier

Bertha Xavier William Yancey Victor Zeus

Claire William Xavier Yancey Zeus Victor

Diane Victor Zeus Yancey Xavier William

Erika y Diseño
Análisis Yancey William
de Algoritmos, Zeus Soriano
Aurea Xavier Victor
Vargas (2020) 26
Fuerza Bruta
Preferencias de
hombres
0 1 2 3 4

Victor Bertha Amy Diane Erika Claire

William Diane Bertha Amy Claire Erika


Algoritmo Gale-Shapley: n2
Xavier Bertha Erika Claire Diane Amy

Yancey Amy Diane Claire Bertha Erika

Zeus Bertha Diane Amy Erika Claire

Preferencias de
mujeres
0 1 2 3 4

Amy Zeus Victor William Yancey Xavier

Bertha Xavier William Yancey Victor Zeus


Calcular todas las posibles
Claire William Xavier Yancey Zeus Victor permutaciones(todos los posibles
Diane Victor Zeus Yancey Xavier William
emparejamientos perfectos)

Erika y Diseño
Análisis Yancey William
de Algoritmos, Zeus Soriano
Aurea Xavier Victor
Vargas (2020) 27
Fuerza Bruta
Preferencias de
hombres
0 1 2 3 4

Victor Bertha Amy Diane Erika Claire

William Diane Bertha Amy Claire Erika


Algoritmo Gale-Shapley: n2
Xavier Bertha Erika Claire Diane Amy

Yancey Amy Diane Claire Bertha Erika

Zeus Bertha Diane Amy Erika Claire

Preferencias de
mujeres
0 1 2 3 4

Amy Zeus Victor William Yancey Xavier

Bertha Xavier William Yancey Victor Zeus


Calcular todas las posibles
Claire William Xavier Yancey Zeus Victor permutaciones(todos los posibles
Diane Victor Zeus Yancey Xavier William
emparejamientos perfectos)
= n! × (tiempo de comprobar si un
Erika y Diseño
Análisis Yancey William
de Algoritmos, Zeus Soriano
Aurea Xavier Victor
Vargas (2020) emparejamiento es estable) 28
Fuerza Bruta
Preferencias de
hombres
0 1 2 3 4

Victor Bertha Amy Diane Erika Claire

William Diane Bertha Amy Claire Erika


Algoritmo Gale-Shapley: n2
Xavier Bertha Erika Claire Diane Amy

Yancey Amy Diane Claire Bertha Erika

Zeus Bertha Diane Amy Erika Claire

Preferencias de
mujeres
0 1 2 3 4

Amy Zeus Victor William Yancey Xavier

Bertha Xavier William Yancey Victor Zeus


Calcular todas las posibles
Claire William Xavier Yancey Zeus Victor = Θ(n! n2)
permutaciones(todos los posibles
Diane Victor Zeus Yancey Xavier William
emparejamientos perfectos)
= n! × (tiempo de comprobar si un
Erika y Diseño
Análisis Yancey William
de Algoritmos, Zeus Soriano
Aurea Xavier Victor
Vargas (2020) emparejamiento es estable) 29
Fuerza Bruta
Preferencias de
hombres
0 1 2 3 4

Victor Bertha Amy Diane Erika Claire

William Diane Bertha Amy Claire Erika


Algoritmo Gale-Shapley: n2
Xavier Bertha Erika Claire Diane Amy

Yancey Amy Diane Claire Bertha Erika

Zeus Bertha Diane Amy Erika Claire

Preferencias de
mujeres
0 1 2 3 4

Amy Zeus Victor William Yancey Xavier

Bertha Xavier William Yancey Victor Zeus


Calcular todas2
las posibles
Claire William Xavier Yancey Zeus Victor = Θ(n! n )
permutaciones(todos los posibles
Θ (big-theta) ⇒perfectos)
emparejamientos caso promedio
= n!Solución
× (tiempodedeFuerza Bruta
Diane Victor Zeus Yancey Xavier William
comprobar si un
Erika y Diseño
Análisis Yancey William
de Algoritmos, Zeus Soriano
Aurea Xavier Victor
Vargas (2020) emparejamiento es estable) 30
Peor de los casos: Gale-Shapley(GS) vs la fuerza bruta

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 31


Peor de los casos: Gale-Shapley vs la fuerza bruta

Implementación Implementación
“ingenua” (GS) eficiente(GS)

Operaciones n3 n2

n=4 0.06 segundos 0.02 segundos

n=6 0.21 segundos 0.04 segundos

n=10 1 segundo 0.1 segundos

n=100 > 15 minutos 10 segundos

n=1000 > 275 horas > 15 minutos

n=10000 > 30 años > 25 horas

suponiendo 1ms por iteración del


Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 32
bucle.
Peor de los casos: Gale-Shapley vs la fuerza bruta

Implementación Implementación Fuerza Bruta


“ingenua” (GS) eficiente(GS)

Operaciones n3 n2 n!*n2

n=4 0.06 segundos 0.02 segundos 0.38 segundos

n=6 0.21 segundos 0.04 segundos > 25 segundos

n=10 1 segundo 0.1 segundos > 4 días

n=100 > 15 minutos 10 segundos ...

n=1000 > 275 horas > 15 minutos ...

n=10000 > 30 años > 25 horas ...

suponiendo 1ms por iteración del


Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 33
bucle.
Peor de los casos: Gale-Shapley vs la fuerza bruta

Implementación Implementación Fuerza Bruta


“ingenua” (GS) eficiente(GS)

Operaciones n3 n2 n!*n2

n=4 0.06 segundos 0.02 segundos 0.38 segundos

n=6 0.21 segundos 0.04 segundos > 25 segundos

n=10 1 segundo 0.1 segundos > 4 días

n=100 > 15 minutos 10 segundos ...

n=1000 > 275 horas > 15 minutos ...

n=10000 > 30 años > 25 horas ...

suponiendo 1ms por iteración del


Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 34
bucle.
Peor de los casos: Gale-Shapley vs la fuerza bruta

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 35


Peor de los casos: Gale-Shapley vs la fuerza bruta

Con un truco de
visualización: log2

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 36


Tiempos de ejecución en función del tamaño de entrada

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 37


Tiempo de ejecución

● ¿A qué nos referimos cuando medimos el tiempo de ejecución?

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 38


Tiempo de ejecución

● ¿A qué nos referimos cuando medimos el tiempo de ejecución?


○ Probablemente nos preocupemos por el tiempo en la pared: ¿cuánto tiempo se tarda en
resolver el problema, en segundos, minutos u horas?

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 39


Tiempo de ejecución

● ¿A qué nos referimos cuando medimos el tiempo de ejecución?


○ Probablemente nos preocupemos por el tiempo en la pared: ¿cuánto tiempo se tarda en
resolver el problema, en segundos, minutos u horas?

● Esto depende en gran medida del lenguaje de programación, la


arquitectura, etc.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 40


Tiempo de ejecución

● ¿A qué nos referimos cuando medimos el tiempo de ejecución?


○ Probablemente nos preocupemos por el tiempo en la pared: ¿cuánto tiempo se tarda en
resolver el problema, en segundos, minutos u horas?

● Esto depende en gran medida del lenguaje de programación, la


arquitectura, etc.

● Estas cosas son muy importantes, pero no son el objetivo de esta clase.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 41


Tiempo de ejecución

● ¿A qué nos referimos cuando medimos el tiempo de ejecución?


○ Probablemente nos preocupemos por el tiempo en la pared: ¿cuánto tiempo se tarda en
resolver el problema, en segundos, minutos u horas?

● Esto depende en gran medida del lenguaje de programación, la


arquitectura, etc.

● Estas cosas son muy importantes, pero no son el objetivo de esta clase.
● Queremos una forma de hablar sobre el tiempo de ejecución de un
algoritmo, independiente de estas consideraciones.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 42


Peor de los casos

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 43


Peor de los casos

Cambiamos n log(n) a 5n log(n) ....

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 44


Peor de los casos

Cambiamos 5n log(n) a 100n log(n) ....

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 45


Análisis asintótico:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 46


Análisis asintótico:

¿Cómo escala el tiempo de ejecución a medida que n aumenta?

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 47


Análisis asintótico:

¿Cómo escala el tiempo de ejecución a medida que n aumenta?

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 48


Análisis asintótico:

¿Cómo escala el tiempo de ejecución a medida que n aumenta?

Ventajas
Abstrae sin considerar las
especificaciones de hardware y
lenguaje de programación.

Hace que el análisis de algoritmos


sea mucho más manejable.
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 49
Análisis asintótico:

¿Cómo escala el tiempo de ejecución a medida que n aumenta?

Ventajas
Abstrae sin considerar las
especificaciones de hardware y
lenguaje de programación.

Hace que el análisis de algoritmos


sea mucho más manejable.
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 50
Análisis asintótico:

¿Cómo escala el tiempo de ejecución a medida que n aumenta?

Ventajas Desventajas
Abstrae sin considerar las
especificaciones de hardware y Solo tiene sentido si n es
lenguaje de programación. grande (en comparación con
los factores constantes).
Hace que el análisis de algoritmos
sea mucho más manejable.
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 51
Crecimiento asintótico:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 52


Crecimiento asintótico:

Objetivo: crear
herramientas para
ayudar a clasificar de
forma aproximada
los tiempos de
ejecución del
algoritmo

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 53


Crecimiento asintótico:

Objetivo: crear Tiempo de ejecución=


herramientas para número de "pasos"
ayudar a clasificar de primitivos (por
forma aproximada
los tiempos de ejemplo, línea de
ejecución del código o
algoritmo instrucciones)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 54


Crecimiento asintótico:

Objetivo: crear Tiempo de ejecución=


herramientas para número de "pasos"
ayudar a clasificar de primitivos (por
forma aproximada
los tiempos de ejemplo, línea de
ejecución del código o
algoritmo instrucciones)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 55


Crecimiento asintótico:

Objetivo: crear Tiempo de ejecución=


herramientas para número de "pasos"
ayudar a clasificar de primitivos (por
forma aproximada
los tiempos de ejemplo, línea de
ejecución del código o
algoritmo instrucciones)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 56


Crecimiento asintótico:

Objetivo: crear Tiempo de ejecución=


herramientas para número de "pasos"
ayudar a clasificar de primitivos (por
forma aproximada
los tiempos de ejemplo, línea de
ejecución del código o
algoritmo instrucciones)

1.62n2 + 3.5n + 8 es demasiado detallado


Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 57
Notación:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 58


Notación:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 59


Notación:

● Sea T(n) una función que define el


peor tiempo de ejecución de un
algoritmo.

● A partir de ahora para toda esta clase,


asumimos que todas las funciones
T(n), f(n), g(n), etc. son no negativas

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 60


Recordatorios rápidos:

● ∃: “Existe”

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 61


Recordatorios rápidos:

● ∃: “Existe”
● ∀: “Para todo”

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 62


Recordatorios rápidos:

● ∃: “Existe”
● ∀: “Para todo”
● Ejemplo:
○ ∀ estudiante de ADA, ∃ un problema de algoritmos que
realmente emociona al estudiante.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 63


Recordatorios rápidos:

● ∃: “Existe”
● ∀: “Para todo”
● Ejemplo:
○ ∀ estudiante de ADA, ∃ un problema de algoritmos que
realmente emociona al estudiante.
● Declaración mucho más fuerte:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 64


Recordatorios rápidos:

● ∃: “Existe”
● ∀: “Para todo”
● Ejemplo:
○ ∀ estudiante de ADA, ∃ un problema de algoritmos que
realmente emociona al estudiante.
● Declaración mucho más fuerte:
○ ∃ un problema de algoritmos de manera que, ∀
estudiantes de ADA, cada estudiante se emociona por el
problema.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 65


Recordatorios rápidos:

● ∃: “Existe”
● ∀: “Para todo”
● Ejemplo:
○ ∀ estudiante de ADA, ∃ un problema de algoritmos que
realmente emociona al estudiante.
● Declaración mucho más fuerte:
○ ∃ un problema de algoritmos de manera que, ∀
estudiantes de ADA, cada estudiante se emociona por el
problema.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 66


Recordatorios rápidos:

● Vamos a definir formalmente un límite superior:


○ “T(n) crece no más rápido que f(n)”

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 67


O (…) significa un límite superior

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 68


O (…) significa un límite superior

"gran-o de ...","o de ...","big-o de ..."

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 69


O (…) significa un límite superior

● Sean T(n), f(n) funciones de enteros positivos.


○ Pensemos en T(n) como un tiempo de ejecución: positivo
y creciente en n.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 70


O (…) significa un límite superior

● Sean T(n), f(n) funciones de enteros positivos.


○ Pensemos en T(n) como un tiempo de ejecución: positivo
y creciente en n.

● Decimos "T(n) es O(f(n))" si f(n) crece al menos tan rápido


como T(n) a medida que n aumenta.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 71


O (…) significa un límite superior

● Sean T(n), f(n) funciones de enteros positivos.


○ Pensemos en T(n) como un tiempo de ejecución: positivo
y creciente en n.

● Decimos "T(n) es O(f(n))" si f(n) crece al menos tan rápido


como T(n) a medida que n aumenta.

● Formalmente,
𝑇(𝑛) = 𝑂(𝑓(𝑛))

∃𝑐, 𝑛0 > 0 𝑠. 𝑡. ∀𝑛 ≥ 𝑛0,
Análisis y Diseño de Algoritmos, Aurea0 ≤ 𝑇(𝑛)
Soriano 𝑐 ⋅𝑓(𝑛)
Vargas≤(2020) 72
O (…) significa un límite superior

● Sean T(n), f(n) funciones de enteros positivos.


○ Pensemos en T(n) como un tiempo de ejecución: positivo
y creciente en n.

● Decimos "T(n) es O(f(n))" si f(n) crece al menos tan rápido


como T(n) a medida que n aumenta.

● Formalmente,
𝑇(𝑛) = 𝑂(𝑓(𝑛))

∃𝑐, 𝑛0 > 0 𝑠. 𝑡. ∀𝑛 ≥ 𝑛0,
Análisis y Diseño de Algoritmos, Aurea0 ≤ 𝑇(𝑛)
Soriano 𝑐 ⋅𝑓(𝑛)
Vargas≤(2020) 73
Big O

T(n) es O (f(n)) si

T(n) ≤ c · f (n), donde c ≥ 0 para todo n ≥ n0

O(n) es el límite superior asintótico de T(n).

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 74


Big O

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 75


Big O

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 76


Big O

T (n) = O(f(n)) significa:


Finalmente, (para n suficientemente grande)
algo que crece como f(n) siempre es más
grande que T(n).

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 77


Ejemplo 1

● T(n) = n, f(n) = n2.


● T(n) = O(f(n))

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 78


Ejemplo 1

● T(n) = n, f(n) = n2.


● T(n) = O(f(n))

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 79


Ejemplo 2

● g(n) = 2, f(n) = 1.
● g(n) = O(f(n)) (y también also f(n) = O(g(n)))

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 80


Ejemplo 2

● g(n) = 2, f(n) = 1.
● g(n) = O(f(n)) (y también also f(n) = O(g(n)))

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 81


Ejemplo 3

● f(n) = 1, g(n) como a continuación.


● g(n) = O(f(n)) (y también f(n) = O(g(n)))

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 3

● f(n) = 1, g(n) como a continuación.


● g(n) = O(f(n)) (y también f(n) = O(g(n)))

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 3

● f(n) = 1, g(n) como a continuación.


● g(n) = O(f(n)) (y también f(n) = O(g(n)))

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 4 de prueba

● f(n) = n+7
● g(n) = n
Vamos a probar que f(n) es O(g(n))

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 4 de prueba

● f(n) = n+7
● g(n) = n
Vamos a probar que f(n) es O(g(n))

1. Tenemos que probar: n+7 es O(n)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 4 de prueba

● f(n) = n+7
● g(n) = n
Vamos a probar que f(n) es O(g(n))

1. Tenemos que probar: n+7 es O(n)


2. La condición que tenemos que verificar es que:
N+7 es O(n) si hay dos constantes positivas c y n0
tal que n+7 <= c*n para un n>=n0

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 4 de prueba

● f(n) = n+7
● g(n) = n
Vamos a probar que f(n) es O(g(n))

1. Tenemos que probar: n+7 es O(n)


2. La condición que tenemos que verificar es que:
N+7 es O(n) si hay dos constantes positivas c y n0
tal que n+7 <= c*n para un n>=n0
3. n+7 <= c*n

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 4 de prueba

● f(n) = n+7
● g(n) = n
Vamos a probar que f(n) es O(g(n))

1. Tenemos que probar: n+7 es O(n)


2. La condición que tenemos que verificar es que:
N+7 es O(n) si hay dos constantes positivas c y n0
tal que n+7 <= c*n para un n>=n0
3. n+7 <= c*n
⇔ 7 <= c*n-n

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 4 de prueba

● f(n) = n+7
● g(n) = n
Vamos a probar que f(n) es O(g(n))

1. Tenemos que probar: n+7 es O(n)


2. La condición que tenemos que verificar es que:
N+7 es O(n) si hay dos constantes positivas c y n0
tal que n+7 <= c*n para un n>=n0
3. n+7 <= c*n
⇔ 7 <= c*n-n
⇔ 7<= n*(c-1)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 4 de prueba

● f(n) = n+7
● g(n) = n
Vamos a probar que f(n) es O(g(n))

1. Tenemos que probar: n+7 es O(n)


2. La condición que tenemos que verificar es que:
N+7 es O(n) si hay dos constantes positivas c y n0
tal que n+7 <= c*n para un n>=n0
3. n+7 <= c*n
⇔ 7 <= c*n-n
⇔ 7<= n*(c-1)
⇔ n*(c-1) >= 7

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 4 de prueba

● f(n) = n+7
● g(n) = n
Vamos a probar que f(n) es O(g(n))

1. Tenemos que probar: n+7 es O(n)


2. La condición que tenemos que verificar es que:
N+7 es O(n) si hay dos constantes positivas c y n0
tal que n+7 <= c*n para un n>=n0
3. n+7 <= c*n
⇔ 7 <= c*n-n
⇔ 7<= n*(c-1)
⇔ n*(c-1) >= 7
⇔ n>= 7/(c-1)
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)
Ejemplo 4 de prueba

● f(n) = n+7
● g(n) = n
3. ⇔ n>= 7/(c-1)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 4 de prueba

● f(n) = n+7
● g(n) = n
3. ⇔ n>= 7/(c-1)
4. Seleccionamos c=2 y n0=7.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 4 de prueba

● f(n) = n+7
● g(n) = n
3. ⇔ n>= 7/(c-1)
4. Seleccionamos c=2 y n0=7.
5. Por tanto, se sostiene que existen dos constantes positivas c y n0 tales
que n + 7 <= cn para n> = n0.
(n>=7) y (n>=n0)<=> (n>=7)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 4 de prueba

● f(n) = n+7
● g(n) = n
3. ⇔ n>= 7/(c-1)
4. Seleccionamos c=2 y n0=7.
5. Por tanto, se sostiene que existen dos constantes positivas c y n0 tales
que n + 7 <= cn para n> = n0.
(n>=7) y (n>=n0)<=> (n>=7)
6. Como la afirmación se sostiene, podemos concluir que n+7 es O(n).

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 5 de contraejemplo

● f(n) = n2
● g(n) = n
Vamos a probar que f(n) NO es O(g(n))

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 5 de contraejemplo

● f(n) = n2
● g(n) = n
Vamos a probar que f(n) NO es O(g(n))

1. La condición a ser verificada: que n2 es O(n) si hay dos constantes


positivas c y n0 tal que n2 <= c*n para un n>=n0

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 5 de contraejemplo

● f(n) = n2
● g(n) = n
Vamos a probar que f(n) NO es O(g(n))

1. La condición a ser verificada: que n2 es O(n) si hay dos constantes


positivas c y n0 tal que n2 <= c*n para un n>=n0
2. n2 <= c*n

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 5 de contraejemplo

● f(n) = n2
● g(n) = n
Vamos a probar que f(n) NO es O(g(n))

1. La condición a ser verificada: que n2 es O(n) si hay dos constantes


positivas c y n0 tal que n2 <= c*n para un n>=n0
2. n2 <= c*n
n <= c (si n!=0)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 5 de contraejemplo

● f(n) = n2
● g(n) = n
Vamos a probar que f(n) NO es O(g(n))

1. La condición a ser verificada: que n2 es O(n) si hay dos constantes


positivas c y n0 tal que n2 <= c*n para un n>=n0
2. n2 <= c*n
n <= c (si n!=0)
3. La desigualdad no puede ser satisfecha ya que c tiene que ser una
constante...

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 5 de contraejemplo

● f(n) = n2
● g(n) = n
Vamos a probar que f(n) NO es O(g(n))

1. La condición a ser verificada: que n2 es O(n) si hay dos constantes


positivas c y n0 tal que n2 <= c*n para un n>=n0
2. n2 <= c*n
n <= c (si n!=0)
3. La desigualdad no puede ser satisfecha ya que c tiene que ser una
constante…
4. Por lo tanto esta afirmación no es mantenida y n2 no es O(n).

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Afirmación

1) Todos los polinomios grado k son O(nk)


2) Para cualquier k>=1, nk no es O(nk-1)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 6

● f(n) = 4n
● g(n) = 8n

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 6

● f(n) = 4n
● g(n) = 8n
Vamos a probar que f(n) es O(g(n))

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 6

● f(n) = 4n
● g(n) = 8n
Vamos a probar que f(n) es O(g(n))

1. La condición a ser verificada: que 4n es O(8n) si hay dos constantes


positivas c y n0 tal que 4n <= c*8n para un n>=n0

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 6

● f(n) = 4n
● g(n) = 8n
Vamos a probar que f(n) es O(g(n))

1. La condición a ser verificada: que 4n es O(8n) si hay dos constantes


positivas c y n0 tal que 4n <= c*8n para un n>=n0
2. 4n <= c*8n

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 6

● f(n) = 4n
● g(n) = 8n
Vamos a probar que f(n) es O(g(n))

1. La condición a ser verificada: que 4n es O(8n) si hay dos constantes


positivas c y n0 tal que 4n <= c*8n para un n>=n0
2. 4n <= c*8n
4n/8n <= c*8n/8n

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 6

● f(n) = 4n
● g(n) = 8n
Vamos a probar que f(n) es O(g(n))

1. La condición a ser verificada: que 4n es O(8n) si hay dos constantes


positivas c y n0 tal que 4n <= c*8n para un n>=n0
2. 4n <= c*8n
4n/8n <= c*8n/8n
1/2n <= c*1

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 6

● f(n) = 4n
● g(n) = 8n
Vamos a probar que f(n) es O(g(n))

1. La condición a ser verificada: que 4n es O(8n) si hay dos constantes


positivas c y n0 tal que 4n <= c*8n para un n>=n0
2. 4n <= c*8n
4n/8n <= c*8n/8n
1/2n <= c*1
1/2n <= c

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 6

● f(n) = 4n
● g(n) = 8n
Vamos a probar que f(n) es O(g(n))

1. La condición a ser verificada: que 4n es O(8n) si hay dos constantes


positivas c y n0 tal que 4n <= c*8n para un n>=n0
2. 4n <= c*8n
4n/8n <= c*8n/8n
1/2n <= c*1
1/2n <= c
3. seleccionamos n0 = 2
c = 1/22= 1/4

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 6

● f(n) = 4n
● g(n) = 8n
Vamos a probar que f(n) es O(g(n))

3. seleccionamos n0 = 2
c = 1/22= ¼

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 6

● f(n) = 4n
● g(n) = 8n
Vamos a probar que f(n) es O(g(n))

3. seleccionamos n0 = 2
c = 1/22= ¼
4. 4n <= c*8n
4n <= 1/4*8n

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 6

● f(n) = 4n
● g(n) = 8n
Vamos a probar que f(n) es O(g(n))

3. seleccionamos n0 = 2
c = 1/22= ¼
4. 4n <= c*8n
4n <= 1/4*8n
4n <= 1/4*(2n * 4n)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 6

● f(n) = 4n
● g(n) = 8n
Vamos a probar que f(n) es O(g(n))

3. seleccionamos n0 = 2
c = 1/22= ¼
4. 4n <= c*8n
4n <= 1/4*8n
4n <= 1/4*(2n * 4n)
4n/4n <= 1/4*(2n * 4n)/4n

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 6

● f(n) = 4n
● g(n) = 8n
Vamos a probar que f(n) es O(g(n))

3. seleccionamos n0 = 2
c = 1/22= ¼
4. 4n <= c*8n
4n <= 1/4*8n
4n <= 1/4*(2n * 4n)
4n/4n <= 1/4*(2n * 4n)/4n
1 <= 1/4*(2n)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 6

● f(n) = 4n
● g(n) = 8n
Vamos a probar que f(n) es O(g(n))

3. seleccionamos n0 = 2
c = 1/22= ¼
4. 4n <= c*8n
4n <= 1/4*8n
4n <= 1/4*(2n * 4n)
4n/4n <= 1/4*(2n * 4n)/4n
1 <= 1/4*(2n)
1 <= 1/22*(2n)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 6

● f(n) = 4n
● g(n) = 8n
Vamos a probar que f(n) es O(g(n))

3. seleccionamos n0 = 2
c = 1/22= ¼
4. 4n <= c*8n
4n <= 1/4*8n
4n <= 1/4*(2n * 4n)
4n/4n <= 1/4*(2n * 4n)/4n
1 <= 1/4*(2n)
1 <= 1/22*(2n)
1 <= (2n-2) para todo n0 = 2
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)
Ejemplo 6

● f(n) = 4n
● g(n) = 8n
Vamos a probar que f(n) es O(g(n))

4. 1 <= (2n-2) para todo n0 = 2

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplo 6

● f(n) = 4n
● g(n) = 8n
Vamos a probar que f(n) es O(g(n))

4. 1 <= (2n-2) para todo n0 = 2


5. Como la afirmación se sostiene, podemos concluir que 4n es O(8n).

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Igualdad unilateral:

T(n) = O(f(n))

–No transitiva:
•f(n) = 5n3; g(n) = 3n2
•f(n) = O(n3) = g(n)
pero

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Igualdad unilateral:

T(n) = O(f(n))

–No transitiva:
•f(n) = 5n3; g(n) = 3n2
•f(n) = O(n3) = g(n)
pero

–Notación alternativa:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Calculando la complejidad Big-O de algo:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Calculando la complejidad Big-O de algo:

Dos pasos claves:

1) Descartar constantes

2) Eliminar términos menos significativos

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Calculando la complejidad Big-O de algo:

Dos pasos claves:

1) Descartar constantes

2) Eliminar términos menos significativos

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Calculando la complejidad Big-O de algo:

Dos pasos claves:

1) Descartar constantes
O(2n) => O(n)
O(1 + n/2 + 100) => O(n)
2) Eliminar términos menos significativos

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Calculando la complejidad Big-O de algo:

Dos pasos claves:

1) Descartar constantes
O(2n) => O(n)
O(1 + n/2 + 100) => O(n)
2) Eliminar términos menos significativos

O(n + n2) =>O(n2)


O(n3 + 50n2 + 10000) => O(n3)
O((n + 30) * (n + 5)) => O(n2)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplos:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplos:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplos:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplos:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplos:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplos:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


A partir de los ejemplos deducimos que...

1. Para demostrar T(n) = O(f(n)), debe obtener c y n0 para que se satisfaga la


definición.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


A partir de los ejemplos deducimos que...

1. Para demostrar T(n) = (f(n)), debe obtener c y n0 para que se satisfaga la


definición.

2. Para demostrar que T(n) NO es O (f(n)), una forma es por contradicción:


a. Suponiendo que alguien nos dio un c y un n0 para que se satisfaga la
definición.
b. Demostrando que ese alguien debe estar mintiendo al derivar una
contradicción.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


O(…) significa un límite superior, y
Ω(…) significa un límite inferior (omega)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


O(…) significa un límite superior, y
Ω(…) significa un límite inferior

Decimos "T(n) es Ω(f (n))" si f(n) crece como máximo tan rápido como T(n) cuando n
aumenta.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


O(…) significa un límite superior, y
Ω(…) significa un límite inferior

Decimos "T(n) es Ω(f (n))" si f(n) crece como máximo tan rápido como T(n) cuando n
aumenta.

Formalmente:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


O (…) significa un límite superior

● Sean T(n), f(n) funciones de enteros positivos.


○ Pensemos en T(n) como un tiempo de ejecución: positivo
y creciente en n.

● Decimos "T(n) es O(f(n))" si f(n) crece al menos tan rápido


como T(n) a medida que n aumenta.

● Formalmente,
𝑇(𝑛) = 𝑂(𝑓(𝑛))

∃𝑐, 𝑛0 > 0 𝑠. 𝑡. ∀𝑛 ≥ 𝑛0,
Análisis y Diseño de Algoritmos, Aurea0 ≤ 𝑇(𝑛)
Soriano 𝑐 ⋅𝑓(𝑛)
Vargas≤(2020) 139
O(…) significa un límite superior, y
Ω(…) significa un límite inferior

Decimos "T(n) es Ω(f (n))" si f(n) crece como máximo tan rápido como T(n) cuando n
aumenta.

Formalmente:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


O(…) significa un límite superior, y
Ω(…) significa un límite inferior

Decimos "T(n) es Ω(f (n))" si f(n) crece como máximo tan rápido como T(n) cuando n
aumenta.

Formalmente:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


O(…) significa un límite superior, y
Ω(…) significa un límite inferior

Decimos "T(n) es Ω(f (n))" si f(n) crece como máximo tan rápido como T(n) cuando n
aumenta.

Formalmente:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ω(…)

T(n) es Ω(f(n)) si

c · f(n) ≤ T(n), donde c ≥ 0 para todo n ≥ n0

Ω(n) es el límite inferior asintótico de T(n).

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 143


Ω(…)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 144


Ω(…)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 145


Ω(…)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 146


Big O

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 147


O(…) significa un límite superior, y
Ω(…) significa un límite inferior
Θ(…) significa ambos, caso promedio! (theta)

Decimos "T(n) es Θ(f (n))" si

T(n) = O(f(n))
-y-
T(n) = Ω(f(n))

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Resumen - O(), Ω(), Θ()

● O () - límite superior
○ T (n) ≤ c · f (n), donde c ≥ 0 para todo n ≥ n0

● Ω () - límite inferior
○ T (n) ≥ c · f (n), donde c ≥ 0 para todo n ≥ n0

● Θ () - límite ajustado
○ Tanto O () como Ω ()

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Resumen - O(), Ω(), Θ()

● O () - límite superior
○ T (n) ≤ c · f (n), donde c ≥ 0 para todo n ≥ n0

● Ω () - límite inferior
○ T (n) ≥ c · f (n), donde c ≥ 0 para todo n ≥ n0

● Θ () - límite ajustado
○ Tanto O () como Ω ()

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Propiedades - O(), Ω(), Θ()

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Propiedades - O(), Ω(), Θ() - Transitividad

Afirmación:

(a) Si f = O(g) y g = O(h), entonces f = O(h)

(b) Si f = Ω(g) y g = Ω(h), entonces f = Ω(h)

(b) Si f = Θ(g) y g = Θ(h), entonces f = Θ(h)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Propiedades - O(), Ω(), Θ() - Adición

Afirmación:

(a) Si f = O(h) y g = O(h), entonces f+g = O(h)

(b) Si f1, f2, ..., fk son cada una O(h), entonces f1 + f2 + ...+ fk es O(h)

(c) Si f = O(g), entonces f+g = Θ(g)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Notaciones o y ω

Las notaciones O y Ω son como <= y >=.


Las notaciones o y ω son como < y >.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Notaciones o y ω

Las notaciones O y Ω son como <= y >=.


Las notaciones o y ω son como < y >.

Por ejemplo:

𝑇(𝑛) = o(𝑓(𝑛))

∃𝑐, 𝑛0 > 0 𝑠. 𝑡. ∀𝑛 ≥ 𝑛0,
0 ≤ 𝑇(𝑛) < 𝑐 ⋅𝑓(𝑛)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Visión General

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Usaremos mucha notación asintótica de aquí en adelante

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Usaremos mucha notación asintótica de aquí en adelante

Esto hace felices tanto a Plucky como a Lucky.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Usaremos mucha notación asintótica de aquí en adelante

Esto hace felices tanto a Plucky como a Lucky.

• Plucky está feliz porque hay una definición precisa.


• Lucky está feliz porque no tenemos que prestar mucha atención a todos esos molestos factores
constantes como "4" o "6".

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Usaremos mucha notación asintótica de aquí en adelante

Esto hace felices tanto a Plucky como a Lucky.

• Plucky está feliz porque hay una definición precisa.


• Lucky está feliz porque no tenemos que prestar mucha atención a todos esos molestos factores
constantes como "4" o "6".
• Pero siempre debemos tener cuidado de no abusar de él.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Usaremos mucha notación asintótica de aquí en adelante

Esto hace felices tanto a Plucky como a Lucky.

• Plucky está feliz porque hay una definición precisa.


• Lucky está feliz porque no tenemos que prestar mucha atención a todos esos molestos factores
constantes como "4" o "6".
• Pero siempre debemos tener cuidado de no abusar de él.
• En el curso, (casi) todos los algoritmos que veamos
serán realmente prácticos, sin necesidad de
tomar

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Hasta aquí, ¿alguna
pregunta?

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Dividir y conquistar para multiplicación

Separar entero de dos dígitos:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 163


Multiplicación

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 164


Multiplicación de Karatsuba

¡Karatsuba descubrió cómo hacer esto mejor!

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 165


Multiplicación de Karatsuba

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 166


Ejemplos de Recursión

• Multiplicación de enteros innecesariamente recursiva


T(n) = 4 T(n/2) + O(n)
T(n) = O(n2)

• Multiplicación de enteros de Karatsuba


T (n) = 3T(n/2) + O(n)
T (n) = O (nlog_2 (3) ≈ n1.6)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 167


Ejemplos de Recursión

• Multiplicación de enteros innecesariamente recursiva


T(n) = 4 T(n/2) + O(n)
T(n) = O(n2)

• Multiplicación de enteros de Karatsuba


T (n) = 3T(n/2) + O(n)
T (n) = O (nlog_2 (3) ≈ n1.6)

¿Cuál es el patrón?!?!?!?!

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 168


El teorema del maestro

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 169


El teorema del maestro

Una fórmula que resuelve las recurrencias cuando


todos los subproblemas tienen el mismo tamaño.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 170


El teorema del maestro

Una fórmula útil es.


Conocer por qué
Una fórmula que resuelve las recurrencias cuando funciona deberías...
todos los subproblemas tienen el mismo tamaño.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 171


El teorema del maestro

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 172


El teorema del maestro

Tres parámetros:
a: número de subproblemas
b: factor por el cual se reduce el tamaño de entrada
d: necesidad de nd trabajos para crear todos los
subproblemas y combinar sus soluciones.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 173


El teorema del maestro

Muchos símbolos
aquellos son...

Tres parámetros:
a: número de subproblemas
b: factor por el cual se reduce el tamaño de entrada
d: necesidad de nd trabajos para crear todos los
subproblemas y combinar sus soluciones.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 174


Ejemplos

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplos

• Multiplicación de enteros innecesariamente recursiva


T(n) = 4 T(n/2) + O(n)
T(n) = O(n2)

• Multiplicación de enteros de Karatsuba


T (n) = 3T(n/2) + O(n)
T (n) = O (nlog_2 (3) ≈ n1.6)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplos

• Multiplicación de enteros innecesariamente recursiva


T(n) = 4 T(n/2) + O(n)
T(n) = O(n2)

T(n) = O(nlogb(a)) = O(nlog2(4)) = O(n2)

• Multiplicación de enteros de Karatsuba


T (n) = 3T(n/2) + O(n)
T (n) = O (nlog_2 (3) ≈ n1.6)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplos

• Multiplicación de enteros innecesariamente recursiva


T(n) = 4 T(n/2) + O(n)
T(n) = O(n2)

T(n) = O(nlogb(a)) = O(nlog2(4)) = O(n2)

• Multiplicación de enteros de Karatsuba


T (n) = 3T(n/2) + O(n)
T (n) = O (nlog_2 (3) ≈ n1.6)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Ejemplos

• Multiplicación de enteros innecesariamente recursiva


T(n) = 4 T(n/2) + O(n)
T(n) = O(n2)

T(n) = O(nlogb(a)) = O(nlog2(4)) = O(n2)

• Multiplicación de enteros de Karatsuba


T (n) = 3T(n/2) + O(n)
T (n) = O (nlog_2 (3) ≈ n1.6)
T(n) = O(nlogb(a)) = O(nlog2(3)) = O(n1.6)

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Prueba del Teorema del Maestro

Supongamos que

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Prueba del Teorema del Maestro

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Prueba del Teorema del Maestro

El trabajo total es como máximo:

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020)


Resumen

● ¿Cómo medimos el tiempo de ejecución de un algoritmo?


○ Análisis del peor de los casos
○ Análisis asintótico
● La notación O () nos facilita la vida.
● Definiciones de O (), Ω (), Θ ()
● Transitividad y aditividad.
● El "Método Maestro" también nos facilita la vida.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 183


Resumen

● ¿Cómo medimos el tiempo de ejecución de un algoritmo?


○ Análisis del peor de los casos
○ Análisis asintótico
● La notación O () nos facilita la vida.
● Definiciones de O (), Ω (), Θ ()
● Transitividad y aditividad.
● El "Método Maestro" también nos facilita la vida.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 184


Resumen

● ¿Cómo medimos el tiempo de ejecución de un algoritmo?


○ Análisis del peor de los casos
○ Análisis asintótico
● La notación O () nos facilita la vida.
LISTA DE
● Definiciones de O (), Ω (), Θ () EJERCICIOS
● Transitividad y aditividad. 1
● El "Método Maestro" también nos facilita la vida.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 185


Resumen

● ¿Cómo medimos el tiempo de ejecución de un algoritmo?


○ Análisis del peor de los casos
○ Análisis asintótico
● La notación O () nos facilita la vida.
● Definiciones de O (), Ω (), Θ ()
● Transitividad y aditividad.
● El "Método Maestro" también nos facilita la vida.

LISTA DE EJERCICIOS 1

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 186


Resumen

● ¿Cómo medimos el tiempo de ejecución de un algoritmo?


○ Análisis del peor de los casos
○ Análisis asintótico
● La notación O () nos facilita la vida.
● Definiciones de O (), Ω (), Θ ()
● Transitividad y aditividad.
● El "Método Maestro" también nos facilita la vida.
● Lista de ejercicios #1.

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 187


Lecturas Recomendadas

● Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest,


Clifford Stein, Introduction to Algorithms, 3rd Edition, MIT Press
Capítulo 2.3, 3

● Jon Kleinberg, Éva Tardos, Algorithm Design,


Pearson/Addison-Wesley - Capítulo 2

Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 188


iGracias!

189

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy