Documentos de Académico
Documentos de Profesional
Documentos de Cultura
24 de abril de 2019
Análisis de la Complejidad de Algoritmos
Análisis asintótico:
f(n)
Función O
ALGORITMO Función
(Secuencia finita de pasos que
permiten resolver un problema) Función
Función discreta
Análisis de la Complejidad de Algoritmos
f(n)
Función O
ALGORITMO Función
(Secuencia finita de pasos que
permiten resolver un problema) Función
10 8 6 4 5 3 1 9 2 7
1 2 3 4 5 6 7 8 9 10
Para este ejemplo particular, donde n = 10, responder las siguientes preguntas:
10 8 6 4 5 3 1 9 2 7
1 2 3 4 5 6 7 8 9 10
Para este ejemplo particular, donde n = 10, responder las siguientes preguntas:
➢ ¿Cuál es el mejor caso? Cuando el elemento que buscamos está al inicio del arreglo
10 8 6 4 5 3 1 9 2 7
1 2 3 4 5 6 7 8 9 10
Para este ejemplo particular, donde n = 10, responder las siguientes preguntas:
➢ ¿Cuál es el mejor caso? Cuando el elemento que buscamos está al inicio del arreglo
➢ ¿Cuál es el peor caso? Cuando el elemento que buscamos está al final del arreglo.
10 8 6 4 5 3 1 9 2 7
1 2 3 4 5 6 7 8 9 10
Para este ejemplo particular, donde n = 10, responder las siguientes preguntas:
➢ ¿Cuál es el mejor caso? Cuando el elemento que buscamos está al inicio del arreglo.
➢ ¿Cuál es el peor caso? Cuando el elemento que buscamos está al final del arreglo.
➢ ¿Cuál es el caso promedio? Cuando el elemento que buscamos está en posición 1, o en la posición 2,
o en la posición 3, y así sucesivamente hasta la última posición. Asumimos que, para este ejemplo, la
probabilidad de encontrar el número en cualquiera de las 10 posiciones es 1/10.
Definiciones: Tiempos de Ejecución del Mejor
Caso, Peor Caso, y Caso Promedio
Dado un conjunto de entradas D = {dato1, dato2,…, datoN }, donde cada entrada es
de tamaño n, para un algoritmo determinado se definen los siguientes casos:
Tiempo del mejor caso: Es el tiempo mínimo necesario para ejecutar el algoritmo
entre todos los elementos del conjunto de entradas D.
Tiempo del peor caso: Es el tiempo máximo necesario para ejecutar el algoritmo
entre todos los elementos del conjunto de entradas D.
Problema 1: ¿Qué pasa con el cálculo del tiempo del mejor y peor casos si el
conjunto de datos de entrada es muy grande o infinito?
➢ ¿Por qué?
Fuente: http://web.mit.edu/16.070/www/lecture/big_o.pdf
Función de Complejidad para Algunos Casos
(2)
Fuente: http://web.mit.edu/16.070/www/lecture/big_o.pdf
Función de Complejidad para Algunos Casos
(3)
Fuente: http://web.mit.edu/16.070/www/lecture/big_o.pdf
Ejemplo
Número triangular Tn
Notas Importantes para Realizar el Análisis
de Complejidad Temporal de un Algoritmo
➢ Las operaciones clave se definen así cuando el tiempo para efectuar las otras
operaciones es mucho menor que o es proporcional al tiempo para realizar las
operaciones clave. El espacio se mide al contar el máximo de memoria necesaria
para el algoritmo.
DEMO EN MATLAB
(FindMaximum.m)
(n)
Ejemplo 2: Ordenamiento por Inserción
(Isertion Sort) (1)
Fuente: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-
2005/video-lectures/lecture-1-administrivia-introduction-analysis-of-algorithms-insertion-sort-mergesort/lec1.pdf
Ejemplo 2: Ordenamiento por Inserción
(Isertion Sort) (2)
InsertionSort.m
Fuente: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-
2005/video-lectures/lecture-1-administrivia-introduction-analysis-of-algorithms-insertion-sort-mergesort/lec1.pdf
Ejemplo 2: Ordenamiento por Inserción
(Isertion Sort) (3)
Ejemplo 2: Ordenamiento por Inserción
(Isertion Sort) (4)
Ejemplo: Revisar el PDF del siguiente link:
Fuente: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-
2005/video-lectures/lecture-1-administrivia-introduction-analysis-of-algorithms-insertion-sort-mergesort/lec1.pdf
Fuente: http://web.mit.edu/16.070/www/lecture/lecture_5_2.pdf
Ejemplo 2: Ordenamiento por Inserción
(Isertion Sort) (5)
Ejemplo: Revisar el PDF del siguiente link:
Fuente: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-
2005/video-lectures/lecture-1-administrivia-introduction-analysis-of-algorithms-insertion-sort-mergesort/lec1.pdf
2 1
3 2
4 3
. .
. .
. .
n n-1
(n )
2
Fuente: http://web.mit.edu/16.070/www/lecture/lecture_5_2.pdf
Ejemplo 3: Ordenamiento de Números por el “Método de
la Burbuja” o “Bubble Sorting”
si, si + 1, si+2,…, sj
Iteración Número Máximo de Comparaciones y Swaps
1 (n - 1)
2 (n – 2)
3 (n – 3)
. .
. .
. .
n–1 n – (n -1) = 1
(n )
2
Ejemplo 4: Ordenamiento por Merge-Sort
(n*log2(n))
Algoritmo Merge Ordenamiento de los elementos de los subgrupos
* Estrategia Divide y Vencerás: Consiste en dividir, de forma recursiva, un
problema en sub-problemas del mismo tipo (o en problemas relacionados). Esta
división se realiza hasta que los sub-problemas resultantes se vuelven lo
suficientemente simples como para ser resueltos directamente. Luego, las
soluciones de los sub-problemas se combinan para obtener la solución del
problema original.
Ejemplo 5: Predicción de un Número Entero X con un Número
Exacto ceil(log2(n) ) de Preguntas de “SI” o “NO”
0, 1, 2,…, X, X+1,…, n - 1
DEMO EN MATLAB
(GuessingAnIntegerNumber.m)
(log2(n))
Ejemplo 6: Cracking por Fuerza Bruta de una Clave
Binaria de Longitud n
DEMO EN MATLAB
(CrackingPasswords.m)
(2 )
n
PROBLEMAS A
ENFRENTAR AL
MOMENTO DE
SELECCIONAR
ALGORITMOS
Problemas para Seleccionar un Algoritmo:
Tamaño de los Datos
Fuente: http://www.math.ucla.edu/~wittman/10b.1.10w/Lectures/Lec3.pdf
Problemas para Seleccionar un Algoritmo:
Limitaciones de Memoria
Fuente: http://www.math.ucla.edu/~wittman/10b.1.10w/Lectures/Lec3.pdf
Problemas para Seleccionar un Algoritmo:
Tiempo de Implementación (Programación)
Fuente: http://www.math.ucla.edu/~wittman/10b.1.10w/Lectures/Lec3.pdf
Problemas para Seleccionar un Algoritmo:
Calidad de la Solución
Fuente: http://www.math.ucla.edu/~wittman/10b.1.10w/Lectures/Lec3.pdf
Problemas Computacionales tipo P, NP,
NP-hard y NP-completos (1)
Problemas tipo P (tiempo polinómico): Son todos los problemas que se pueden
resolver con algoritmos cuya función de complejidad está acotada superiormente por
una función polinómica, O(nk) con k. Es decir, son problemas donde el cálculo y la
verificación de una solución se realizan en tiempo polinómico.
Problemas tipo NP-hard: Un problema B es del tipo NP-hard si cada problema del
tipo NP puede ser reducido a B en un tiempo polinómico. Los problemas del tipo NP-
hard son al menos tan difíciles como los problemas del tipo NP. Los problemas NP-
hard no están necesariamente contenidos en el tipo NP.
Map
coloring
Fuente: http://princetonacm.acm.org/downloads/PvsNP.pdf
Problema P versus NP (2)
➢ P vs NP: Si es fácil comprobar que una solución para un problema es correcta, entonces
¿es también fácil resolver dicho problema?
➢ La mayoría de científicos que trabajan en esta área creen que P NP. Sin embargo,
nadie ha podido demostrar que esto sea cierto hasta el momento.
Links: http://www.claymath.org/millennium-problems
http://www.claymath.org/millennium-problems/p-vs-np-problem
¿Qué Pasaría si P = NP?
Fuente: http://princetonacm.acm.org/downloads/PvsNP.pdf
El Problema de la Suma de Subconjuntos (1)
SubsetSumProblemExhaustive.m
Fuente: http://www.math.ucla.edu/~wittman/10b.1.10w/Lectures/Lec3.pdf
El Problema de la Suma de Subconjuntos (2)
SubsetSumProblemApproximation.m
Fuente: http://www.math.ucla.edu/~wittman/10b.1.10w/Lectures/Lec3.pdf
El Problema de la Suma de Subconjuntos (3)
TimeComplexitySubsetSumProblem.m
Fuente: http://www.math.ucla.edu/~wittman/10b.1.10w/Lectures/Lec3.pdf
El Problema de la Suma de Subconjuntos (4)
Fuente: http://www.math.ucla.edu/~wittman/10b.1.10w/Lectures/Lec3.pdf
DEBER PARA LA
PRÓXIMA
CLASE
Para la próxima clase resolver los siguientes
ejercicios (1)
Encontrar para el algoritmo “merge and sort” R: n*log2(n)
Para valores de n grandes, ¿Cuál es le mejor método para ordenar una secuencia
de números enteros, el método de la burbuja o “merge and sort”? Justifique su
respuesta.
Para la próxima clase resolver los siguientes
ejercicios (2)
Para la próxima clase resolver los siguientes
ejercicios (3)
Resolver los siguientes ejercicios (4)
R: (n + 1)/2
S= S1 S2 S3 S4 S5 S6 S7 S8 … Sn
HASTA LA
PRÓXIMA
CLASE