Ejercicios de Análisis Asintotico - Algorítmica III
Ejercicios de Análisis Asintotico - Algorítmica III
Ejercicios de Análisis Asintotico - Algorítmica III
2. Realizar el análisis del siguiente algoritmo, que dado una lista con n números naturales,
se requiere ordenarla de menor a mayor, utilizando el método select sort.
En la primera iteración, se busca uno por uno en todos los elementos del arreglo, para
ubicar el menor (ascendente)/ mayor (descendente) <según corresponda>; y lo lleva a
la posición 0. Por lo tanto, realiza n -1 comparaciones.
3. Realizar el análisis del siguiente algoritmo burbuja, que dada una lista con n números
naturales, se requiere ordenarla de menor a mayor, utilizando el método bubble sort.
Los cinco pasos del algoritmo requieren una cantidad constante de operaciones para
ser ejecutados. Sea c la suma de dichas constantes.
El bucle principal del algoritmo (paso 2-4) se ejecuta hasta que j toma el valor 2, y, en
cada ejecución de dicho bucle, se ejecuta el bucle formado por los pasos 2 y 3 siempre
que i sea menor que j.
Por tanto, el tiempo de ejecución del algoritmo verificará el peor caso en:
4. Realizar el análisis del siguiente algoritmo recursivo del tipo “divide y vencerás”, que
halla el máximo binario de un conjunto de n números naturales {a i,ai+1,…,aj}, donde n=
2n.
Si llamamos T(n) al tiempo que requiere el algoritmo para hallar el máximo de una lista
de n números, se verifica que el tiempo requerido para ejecutar el paso 3 será 2.T(n/2)
(cuando n sea potencia de dos). Como el número de operaciones que requieren los
pasos 0, 1, 2, 4 y 5 es constante, se verificará que:
T(n) <= 2.T(n/2) + c
Donde c es una constante. Como t(1) es constante, podemos suponer que T(1) <= c. Por
el teorema:
Teorema del caso donde h(n) = c: Sean a, b, c, números naturales tales que a>=1 y b >
1 y sea f: N → R una función tal que:
Entonces, se verifica:
(i) Si a = 1, f € O(log n) en S
(ii) Si a <> 1, f € O(nlogba) en S
T(n) € O(n)
5. Método de ordenamiento por mezcla: Realizar el análisis del algoritmo que dados dos
listas de números naturales ordenadas de menor a mayor L 1 = {a1, …, ar} y L2 = {b1, …,
bs} obtener una lista L con los r + s elementos de L1 U L2 ordenados de menor a mayor.
Sea n = r+s. Los cinco pasos del algoritmo requieren en el peor caso una cantidad
constante de operaciones para ser ejecutados. Sea c la suma de dichas constantes
(h(n)=c).
Por otra parte, el único bucle del algoritmo (paso 2-4) se ejecuta siempre que k sea
menor o igual que r + s + 1, es decir n + 1 veces.
n = r+s
Donde: n representa k elementos, tal como L1 representa r elementos y L2 representa
s elementos, entonces:
k = r + s, el paso 3: k = k + 1
k=r+s+1
en el paso 4, el bucle 2-4 se ejecuta mientras que k <= r+s+1, es decir, se ejecutará n+1
veces.
Entonces se verifica:
(i) Si a < b, f € O(n)
(ii) Si a > b, f € O(nlogb a)
(iii) Si a = b, f € O(n logb n)
7. Realizar el análisis del algoritmo QuickSort, para una lista de n elementos, utilizando el
método de ubicar el pivote en el medio de la lista.
Inicialmente, la lista creará dos sub listas aproximadamente de tamaño n/2. El número
total de comparaciones de estas dos sub listas es: 2(n/2) = n.
En la segunda división, el algoritmo procesará 4 sub listas, por tanto, el número total
de comparaciones en esta fase es 4(n/4) = n.
En la tercera división, el algoritmo procesará 8 sub listas, por tanto, el número total de
comparaciones en esta fase es 8(n/8) = n y así sucesivamente hasta i=j, es decir, la lista
ya no se pueda dividir más.
9. Realizar el análisis de algoritmo Buscar recursivo, donde dada una lista de n números
naturales L ={a1, …, an} y dado un número natural x, averiguar si x pertenece a L.
10. Realizar el análisis de algoritmo de búsqueda binaria, asumiendo que los elementos de
la lista L están ordenados de menor a mayor (es decir i < j, entonces a i < aj).
En el paso 6 se aplica el algoritmo Buscar a una lista que tiene la mitad de los elementos
que la de la lista original.
En consecuencia, teniendo en cuenta el teorema siguiente:
Teorema del caso donde h(n) = c: Sean a, b, c, números naturales tales que a>=1 y b >1
y sea f: N → R una función tal que: