04 AlgComp Tarea04 V2

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

Centro de Investigación y de Estudios Avanzados del IPN

Cinvestav Guadalajara

Programa de Maestría en Ciencias en Ingeniería Eléctrica

Algoritmos y Complejidad
Septiembre-Diciembre 2021

Tarea No. 4
Lista de Ejercicios No. 1

INDICACIONES:

• Crear un archivo PDF con el reporte de la tarea indicando los nombres de los
participantes en el equipo. Incluir al final del reporte una descripción de las partes
realizadas por cada participante.
• Anexar el código de los programas realizados con las instrucciones para su
ejecución y, en su caso, los casos de prueba.
• El nombre del archivo será: AC-TAREA04-EquipoXX.pdf, donde XX se refiere al
número del equipo
• Los ejercicios 1 a 20 cuentan como la Lista de ejercicios No. 1
• Los ejercicios 21 a 30 cuentan como la Tarea No. 4
• El BONO, ejercicio 31, es opcional para los equipos de 2 y obligatorio para los
equipos de 3.
• Enviar la tarea a cursodealgoritmosycomplejidad@gmail.com
• Fecha de entrega: 13 de octubre de 2021.

EJERCICIOS

1. Escriba en pseudocódigo un algoritmo para combinar dos arreglos ordenados en uno


solo y que no tome más pasos que la suma de las longitudes de los arreglos de entrada.

2. Demostrar que p(n) = aknk + ak-1nk-1 + . . . + a1n1 + a1n0 , ak ¹ 0, es un O (nk) para


cualquier k > 0. Determine las constantes apropiadas c y N0.

3. Demostrar que 2n es un O(3n), n > 0 y demuestre que 3n no es un O(2n), n > 0.

4. Demuestre que para cualesquiera constantes reales a y b, donde b > 0, (n+a)b = Q(nb).

5. Demuestre que el tiempo de ejecución de un algoritmo es Q(g(n)) si y solamente si su


tiempo de ejecución del peor caso es O(g(n)) y el tiempo de ejecución del mejor caso es
W(g(n)).

6. Supongamos que tenemos una recurrencia de la forma


T(1) = a
T(n) = T(n-1) + g(n), para n > 1

Dar una cota superior para T(n) cuando g(n) es de la forma

a. n2
b. n2 + 3n
c. n3/2
d. nlogn

7. Sea

d
p(n) = ∑ ai n i
i=0

donde ad > 0 y sea k una constante. Demuestre las siguientes propiedades.

a. Si k ³ d, entonces p(n) = O( nk ).
b. Si k £ d, entonces p(n) = W( nk ).
c. Si k = d, entonces p(n) = Q( nk ).
d. Si k > d, entonces p(n) = o( nk ).
e. Si k < d, entonces p(n) = w( nk ).

8. Determine, por iteración, una cota superior asintótica de la recurrencia

T(n) = 3T(n/2) + n

9. ¿Cuál es una cota superior asíntótica justa al tiempo de ejecución de los siguientes
fragmentos de programa?

a) sum = 0;
for( i = 0; i < n; i++ )
for( j = 0; j < n; j++ )
for( k = 0; k < n; k++ )
sum++;
b) sum = 0;
for( i = 0; i < n; i++ )
for( j = 0; j < n; j++ )
for( k = j; k < n; k++ )
sum++;

c) sum = 0;
for( i = 0; i < n; i++ )
for( j = 0; j < i; j++ )
for( k = 0; k < n; k++ )
sum++;

d) sum = 0;
for( i = 0; i < n; i++ )
for( j = 0; j < i; j++ )
for( k = j; k < n; k++ )
sum++;
e) sum = 0;
for( i = 0; i < n; i++ )
for( j = 0; j < i; j++ )
for( k = 0; k < i; k++ )
sum++;

10. Supongamos que tenemos una recurrencia de la forma

T(1) = a
T(n) = cT(n/d) + bnk, para n un potencia positiva de d

Expandiendo iterativamente T(n/di) para i = 1, 2, … Muestre que

a. si c > dk, entonces, T(n) es un O(n logd c )


b. si c = dk, entonces, T(n) es un O(nklogn)
c. si c < dk, entonces, T(n) es un O(nk)

11. Use el teorema maestro para dar cotas asintóticas de las siguientes recurrencias.

a) T(n) = 2T(n/4) + 1
b) T(n) = 2T(n/4) + √𝑛
c) T(n) = 4T(n/2) + n
d) T(n) = 4T(n/2) + n2
e) T(n) = 4T(n/2) + n3

12. Proporcione una cota asintótica superior e inferior para T(n) en cada una de las
siguientes recurrencias. Asuma que T(n) es constante para un valor pequeño de n. Sus
cotas deben ser tan ajustadas como sea posible y justifique sus respuestas.

a) T(n) = 4T(n/3) + n log n


b) T(n) = 4T(n/2) + n2 √𝑛
c) T(n) = T(n/2) + T(n/4) + T(n/8) + n
d) T(n) = T(n - 2) + 1 / lg n
e) T(n) = √𝑛 𝑇%√𝑛 & + 𝑛
13. Suponga una variante del Quicksort en el cual siempre se elige como pivote el primer
elemento del subarreglo que va a ser ordenado. ¿Qué modificaciones al algoritmo dado
en clase se tendrían que hacer para evitar ciclos infinitos cuando hay secuencias de
elementos iguales? ¿Cuál sería el orden de complejidad del algoritmo modificado?

14. Representar el peor y el mejor caso para los siguientes métodos de ordenamiento con el
siguiente conjunto de datos de entrada S = { 25, 6, 9, 13, 26, 4, 2, 17 } y calcular el
número de comparaciones y movimientos que se realizan en cada caso.
a) QuickSort
b) HeapSort

15. Supongamos que estamos comparando dos programas en la misma máquina de los
algoritmos de ordenamiento por inserción y por mezcla (mergesort). Para entradas de
tamaño n, el programa con el algoritmo de inserción toma un tiempo 8n2, mientras que el
programa con el algoritmo de mezcla toma 64nlogn pasos. ¿Para cuales valores de n el
algoritmo de inserción es mejor que el algoritmo de mezcla?. ¿Cómo podría mejorar el
algoritmo de mezcla para que sea más rápido sobre las entradas de tamaño pequeño?

16. El método de ordenamiento por inserción se puede expresar recursivamente como sigue.
Para ordenar A[1..n], se ordena recursivamente A[1..n-1] y se inserta A[n] en el arreglo
ordenado A[1..n-1]. Escriba una recurrencia para el tiempo de ejecución de la versión
recursiva del ordenamiento por inserción y resuélvala.

17. Utilice el algoritmo de Strassen como una subrutina para multiplicar matrices, y
desarrolle un algoritmo que multiplique una matriz de dimensión kn x n por otra matriz
de dimensión n x kn. Realice el análisis del algoritmo y determine el número de
multiplicaciones que se realizan.

18. Utilice el teorema maestro para demostrar que la solución a la recurrencia T(n) = 4T(n/3)
+ n, es 𝑇(𝑛) = Θ(𝑛!"#! $ ). Intente probar lo anterior por sustitución (sin usar el teorema
maestro) y muestre que la suposición 𝑇(𝑛) ≤ 𝑐𝑛!"#! $ falla. Luego muestra como sustraer
un término de orden menor para hacer que la prueba por sustitución sea exitosa.

19. ¿Se puede usar el teorema maestro para resolver la recurrencia T(n) = 4T(n/2) + n2lgn?
Indique por que sí o por qué no. Dar una cota superior a esta recurrencia.

20. Dada una secuencia de 2n números reales como entrada, diseñe un algoritmo O(nlogn)
que divida los números en n pares, con la propiedad que la partición minimiza el máximo
de la suma de los números en el par. Por ejemplo, sea la secuencia (1,3,5,9). Las
particiones posibles son ((1,3), (5,9)), ((1,5),(3,9)) y ((1,9),(3,5)). La suma de los pares
para esas particiones son (4,14), (6,12) y (10,8). Así la tercera partición tiene 10 como el
máximo de las sumas la cual es el valor mínimo del máximo en las tres particiones.

21. Se tienen 12 monedas, una de ellas es más pesada o ligera que las otras. Identifique la
moneda haciendo solamente tres operaciones de pesado.
22. ¿Cómo puede escribir un algoritmo no recursivo para el quicksort?. Analice su
complejidad y compárelo contra el algoritmo recursivo.

23. Considere un arreglo de tamaño nxn conteniendo elementos enteros (positivos, negativos
o zero). Suponga que los elementos en cada renglón se encuentran ordenados
estrictamente en forma creciente y los elementos en cada columna se encuentran
estrictamente en forma decreciente. De aquí no puede haber dos zeros en el mismo
renglón o en la misma columna. Describa un algoritmo eficiente para contar el número
de ocurrencias del elemento 0 en A. Analice el tiempo de ejecución el cual, por supuesto,
debe ser menor a O(n2).

24. Considere un arreglo A[1..n] que tiene números en el rango 1 a 𝑛% , pero a lo más
log log 𝑛 de esos números diferentes aparecen en el arreglo. Desarrolle un algoritmo que
ordene el arreglo A en substancialmente menos que 𝑂(𝑛 log 𝑛 ). Explique su algoritmo.

25. ¿Cómo puede determinar la complejidad de un algoritmo quicksort que divide una lista
de n elementos en dos partes, 9/10 y 1/10, esto es, una proporción de 9 a 1. Establezca la
recurrencia y deduzca su complejidad usando un árbol de recursión.

26. Proporcione un algoritmo para ordenar cuatro elementos usando solo cinco
comparaciones en el peor caso.

27. Considere un heap terciario, similar al heap binario, excepto que cada nodo interior (no
hoja) tiene tres hijos.

a) ¿Cómo representaría un heap terciario en un arreglo?


b) ¿Cuál es la altura de un heap terciario con n elementos?
c) Para un elemento en la posición i del heap, determine la posición de su padre y de sus
hijos y de sus hermanos.
d) ¿Cuál sería la complejidad del heapsort utilizando un heap terciario?

28. Let 𝑋[1. . 𝑛] and 𝑌[1. . 𝑛] be two arrays, each containing 𝑛 numbers already in sorted
order. Give an 𝑂(lg 𝑛) −time algorithm to find the median of all 2𝑛 elements in arrays
𝑋 and 𝑌. (Ejercicio 9.3-8 CLR).

29. Show that the second smallest of n elements can be found with 𝑛 + ⌈lg 𝑛⌉ − 2
comparisons in the worst case. (Hint: Also find the smallest element.) (Ejercicio 9.1-1
CLR).

30. Suppose that an algorithm uses only comparisons to find the 𝑖𝑡ℎ smallest element in a set
of 𝑛 elements. Show that it can also find the 𝑖 − 1 smaller elements and the 𝑛 − 𝑖 larger
elements without performing any additional comparisons. (Ejercicio 9.3-4 CLR).

BONO:

31. Resolver el problema 9.2 del libro CLR.

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