Vous êtes sur la page 1sur 6

Taller 1 FADA

Fundamentos de Análisis y Diseño de Algoritmos / 750094M


/ Grupo 01 (Ingenierı́a) / Prof. Jesús Alexander Aranda Bueno /
Monitor Juan Marcos Caicedo / 2019-2

El taller debe ser realizado en grupos de 3 personas.

I. Órdenes de crecimiento

1. (Valor: 10 puntos) En cada literal se encontrará una pareja de funciones


a comparar. Analizando el comportamiento de ambas funciones, debe indicar
< si la función de la izquierda es de menor orden de crecimiento que la función
de la derecha, = si ambas funciones poseen el mismo orden de crecimiento,
y > si la función de la izquierda es de mayor orden de crecimiento que la
función de la derecha.

(a) 4n y 7n ( )

(b) 10log 2 (n) y 200log(log(n)) ( )

(c) 5n2 ∗ 2n y 3n ( )

(d) nlog(n) y log(log(n)) ( )

1
n!
(e) n1
y (n − 3)! ( )

(f) 100n! y (n − 1)! ∗ n2 ( )

2
II. Ecuaciones de Recurrencia

2. (Valor: 10 puntos) En cada literal se encontrará una ecuación de re-


currencia que debe resolver. Debe indicar la solución en notación Theta, es
decir en términos de Θ( )

Nota: Considere como caso base T (1) = Θ(1):

(a) T (n) = 4T ( n2 ) + n2

(b) T (n) = 3T ( n2 ) + n2

(c) T (n) = T ( n3 ) + n

(d) T (n) = 2T ( n2 ) + n ∗ log(n)

(e) T (n) = 16T ( n4 ) + n

3
III. Análisis de Algoritmos

3. (Valor: 10 puntos) En cada literal se encontrará un algoritmo escrito en


pseudocódigo. Para cada algoritmo, debe expresar su orden de complejidad
en notación Theta, es decir en términos de Θ( )

(a) funcion1(n)
for(i = 1; i <= n; i = i * 2)
for(j = 1; j <= n; j = j * 2)
print("Hola Mundo")

(b) funcion2(n)
if(n == 1) then
{ print("Hola Mundo") }
else
{ print("Hola Mundo")
for(j = 1; j <= 2; j = j + 1)
funcion2(n/2)}

4. (Valor: 10 puntos) ¿Cuándo se dice que un algoritmo de ordenamiento


es in-place? Explique de manera clara y de un ejemplo de algoritmo de
ordenamiento que sea in-place.

5. (Valor: 10 puntos) Va a crearse un nuevo algoritmo de búsqueda lla-


mado búsqueda ternaria. Dicho algoritmo se basa en el algoritmo de
búsqueda binaria que es bien conocido, sólo que, de manera similar a
búsqueda binaria, el algoritmo búsqueda ternaria realizarı́a la búsqueda
del elemento pero considerando tres partes, y dependiendo del elemento, con-
tinuarı́a su búsqueda en sólo una de esas tres partes. Búsqueda ternaria,
al igual que búsqueda binaria, debe recibir el arreglo ordenado ascenden-
temente. Muestre (Debe explicar de manera clara su respuesta):

• La ecuación de recurrencia que modele el comportamiento de búsqueda


ternaria.

• La complejidad de búsqueda ternaria.

4
IV. Diseño de Algoritmos

Problema 1: Mı́nimo local (Valor: 20 puntos)

• Entrada: Un arreglo no ordenado de enteros positivos: arreglo1 de


tamaño n: arreglo1[1...n], donde todos sus elementos son diferentes
entre sı́.

• Salida: Un valor de arreglo1 que sea considerado un mı́nimo local.


Un mı́nimo local es un valor tal que sus dos vecinos (valores a la
izquierda y a la derecha) son mayores que él. Si sólo posee un vecino,
es decir, el primer elemento o último elemento del arreglo, su único
vecino adyacente es mayor que él. Nota: en un arreglo pueden existir
varios mı́nimos locales, en este caso sólo es necesario retornar uno de
ellos.

• Ejemplos:

– Consideremos arreglo1 = [1 2 3]. El algoritmo retornarı́a 1.


– Consideremos arreglo1 = [4 2 3]. El algoritmo retornarı́a 2.

⇒ Diseñe un algoritmo para el Problema 1: Mı́nimo local cuya com-


plejidad resulte en ser O(log(n)). Debe:

1. Precisar de manera correcta la idea de su algoritmo.

2. Realizar un pseudocódigo del algoritmo.

3. Estimar la complejidad del algoritmo en base al pseudocódigo.

5
Problema 2: Suma exacta (Valor: 20 puntos)

• Entrada: Un entero positivo k y dos arreglos no necesariamente orde-


nados arreglo1[1...n] y arreglo2[1...n], ambos de igual tamaño n, y que
sus elementos son enteros positivos menores o iguales a n.

• Salida: True, si existe al menos un elemento de arreglo1 que sumado


con un elemento de arreglo2 sea igual a k. False, en caso contrario.

• Ejemplos:

– Consideremos k = 6, arreglo1 = [3 1 2], arreglo2 = [2 3 1]. El


algoritmo retornarı́a True.
– Consideremos k = 10, arreglo1 = [1 3 2], arreglo2 = [3 2 1]. El
algoritmo retornarı́a False.

⇒ Diseñe un algoritmo para el Problema 2: Suma exacta cuya com-


plejidad resulte en ser O(n). Debe:

1. Precisar de manera correcta la idea de su algoritmo.

2. Realizar un pseudocódigo del algoritmo.

3. Estimar la complejidad del algoritmo en base al pseudocódigo.

Vous aimerez peut-être aussi