Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los dos primeros factores se deben descartar ya que son inherentes a la implementación.
El tercer factor es relevante a la solución y debe tenerse en cuenta durante el análisis
Otro factor que debe tenerse en cuenta, es el tamaño de los datos de entrada que tendrá
que procesar el algoritmo.
Ejemplo 1:
Se tienen dos algoritmos que invierten una lista sencillamente encadenada de n
elementos:
Bibliografía: Estructuras de datos en C++, Jorge Villalobos – Capítulo 0 – Conceptos Básicos Página 1
8 de febrero de 2012 [ANALISIS DE ALGORITMOS]
p = nulo;
q = cabeza;
r = qsiguiente;
MQ ( q != nulo )
qsiguiente = p;
p q;
q = r;
si ( r != nulo)
r = rsiguiente;
FMQ
Cabeza = p;
Bibliografía: Estructuras de datos en C++, Jorge Villalobos – Capítulo 0 – Conceptos Básicos Página 2
8 de febrero de 2012 [ANALISIS DE ALGORITMOS]
Bibliografía: Estructuras de datos en C++, Jorge Villalobos – Capítulo 0 – Conceptos Básicos Página 3
8 de febrero de 2012 [ANALISIS DE ALGORITMOS]
Ejemplo 2:
El siguiente algoritmo busca el elemento elem en vector de tamaño N.
Como se puede apreciar, para muchos algoritmos aun conociendo el tamaño de los datos
de entrada, es imposible determinar el tiempo de ejecución para cada una de las posibles
entradas.
Por esta razón es muy conveniente trabajar con el tiempo utilizado por un algoritmo en el
peor de los casos.
TA(n) = tiempo que se demora el algoritmo A, en el peor de los casos, para encontrar una
solución a un problema de tamaño n.
Bibliografía: Estructuras de datos en C++, Jorge Villalobos – Capítulo 0 – Conceptos Básicos Página 4
8 de febrero de 2012 [ANALISIS DE ALGORITMOS]
Bibliografía: Estructuras de datos en C++, Jorge Villalobos – Capítulo 0 – Conceptos Básicos Página 5
8 de febrero de 2012 [ANALISIS DE ALGORITMOS]
Ejemplo 3:
Se tienen 8 algoritmos A1…A8 que resuelven el mismo problema, pero cada uno con
diferente complejidad. Si a cada algoritmo le toma 1 microsegundo en procesar un dato,
en la siguiente tabla se aprecia el tamaño máximo del problema que puede resolver.
Como se puede apreciar, algunos algoritmos resultan inaplicables a medida que el tamaño
de los datos crece.
Bibliografía: Estructuras de datos en C++, Jorge Villalobos – Capítulo 0 – Conceptos Básicos Página 6
8 de febrero de 2012 [ANALISIS DE ALGORITMOS]
ARITMETICA EN NOTACION O.
Teorema-2: Si A1 y A2 son algoritmos que se ejecutan uno seguido del otro, el tiempo
empleado es O( max ( f1 ( n ), f2 ( n ) ) ). Dos bloques de código que se ejecutan uno
después del otro, la complejidad del programa resultante es la complejidad del bloque
más costoso.
Ejemplo-4:
Calcular la complejidad de la asignación:
Var = 5;
Ejemplo-5:
Calcular la complejidad del algoritmo:
X = 1;
Y = 2;
Z = 3;
X = 1; O( 1 )
Y = 2; O( 1 )
Z = 3; O( 1 )
Bibliografía: Estructuras de datos en C++, Jorge Villalobos – Capítulo 0 – Conceptos Básicos Página 7
8 de febrero de 2012 [ANALISIS DE ALGORITMOS]
Ejemplo-6:
Calcular la complejidad de la siguiente asignación:
X = abs( y );
Ejemplo-7:
Calcular la complejidad del siguiente método:
i = 0;
acum = 1;
Bibliografía: Estructuras de datos en C++, Jorge Villalobos – Capítulo 0 – Conceptos Básicos Página 8
8 de febrero de 2012 [ANALISIS DE ALGORITMOS]
Solución:
i = 0; O( 1 ) O( 1 )
acum = 1; O( 1 )
return acum; O( 1 ) O( 1 )
}
Ejemplo-8:
Calcular la complejidad del siguiente bloque de código:
Solución:
a[ 0 ] = 0; O( 1 )
a[ 1 ] = 0; O( 1 )
a[ 2 ] = 0; O( 1 )
a[ 3 ] = 0; O( 1 )
a[ 4 ] = 0; O( 1 ) O( 1 )
a[ 5 ] = 0; O( 1 )
a[ 6 ] = 0; O( 1 )
a[ 7 ] = 0; O( 1 )
a[ 8 ] = 0; O( 1 )
Bibliografía: Estructuras de datos en C++, Jorge Villalobos – Capítulo 0 – Conceptos Básicos Página 9
8 de febrero de 2012 [ANALISIS DE ALGORITMOS]
Ejemplo-9:
Calcular la complejidad del siguiente método:
Ejemplo-10:
Calcular la complejidad del siguiente bloque de código:
Ejemplo-11:
Calcular la complejidad del siguiente bloque de código:
Bibliografía: Estructuras de datos en C++, Jorge Villalobos – Capítulo 0 – Conceptos Básicos Página 10
8 de febrero de 2012 [ANALISIS DE ALGORITMOS]
Ejemplo-12:
Encuentre la complejidad del algoritmo “búsqueda binaria”. Recuerde que para realizar la
búsqueda binaria de un elemento en un vector, el vector debe estar ordenado
ascendentemente.
Bibliografía: Estructuras de datos en C++, Jorge Villalobos – Capítulo 0 – Conceptos Básicos Página 11