Está en la página 1de 3

12/5/22, 18:53 Final 06/12/19 (Algoritmos II) - Cuba-Wiki

Final 06/12/19 (Algoritmos II)


Final tomado por Nicolás D'Ippolito. Duró 3 horas y se aprobaba con 2 ejercicios bien.

Sumario
1  Ejercicio 1
2  Ejercicio 2
3  Ejercicio 3
4  Ejercicio 4

Ejercicio 1
Dado un vector S de N elementos obtenidos iterativamente eligiendo números al azar en el intervalo [0,K], se
quiere eliminar los elementos repetidos, permitiéndose reordenar el arreglo. Se proponen tres alternativas.

Pasar los elementos S a una tabla de hash con encadenamiento S' y copiar S' sobre S
Hacer quicksort in-place y luego copiar los resultados a un arreglo usando dos indices para evitar
copiar los repetidos
Un algoritmo tipo counting sort que no tiene en cuenta la cantidad de veces que aparece cada elemento

Se testearon las tres soluciones descriptas para vectores de tamaño 200, 20000 y 200000 con K=50000. Pero
se mezclaron los resultados con los resultados de otros experimentos y no se puede volver a ejecutar el
programa. Decidir cual/es de las siguientes tablas representan los resultados del experimento. Luego dar un
algoritmo razonable para otros valores de K.

N 200 20000 200000

hash 19.79 1364.02 6423.2

qsort 43.7 2798.46 14702.7

csort 307.61 328.13 397.43

N 200 20000 200000

hash 150.79 364.02 623.2

qsort 8.56 1253.46 14702.7

csort 307.61 328.13 397.43

N 200 20000 200000

hash 19.79 1364.02 6423.2

qsort 8.56 1253.46 14702.7

csort 149.47 328.13 397.43

N 200 20000 200000

hash 150.79 364.02 632.2

qsort 43.7 2798.46 14702.7

csort 149.47 328.13 397.43

https://www.cubawiki.com.ar/index.php/Final_06/12/19_(Algoritmos_II) 1/3
12/5/22, 18:53 Final 06/12/19 (Algoritmos II) - Cuba-Wiki

Ejercicio 2
Implementar el algoritmo Floyd usando la técnica Divide & Conquer. Dado un árbol completo T, se debe
retornar un árbol H con los mismos elementos que T, pero que cumpla el invariante heap. Se puede asumir
que ya tiene implementados siftDown y siftUp con la complejidad adecuada. Dar la complejidad y justificar.

Ejercicio 3
En una implementación de un diccionario con hashing doble, explicar qué pasaría si una de las dos funciones
devolviera siempre el mismo valor(explicar qué pasaría si fuera la primera función y qué pasaría si fuera la
segunda).

Ejercicio 4
Dados las siguientes situaciones y fragmentos de TADs, indicar cual/es tienen errores y justificar.

En un laboratorio se tiene un frasco aislado con hielo. Al someterlo al calor, el hielo se derrite a razón
de   por caloría. Cómo el frasco se encuentra aislado, esta es la única transformación posible.

TAD frasco

generadores:

nuevoFrasco: tamaño -> frasco

observadores:

volumen_hielo: frasco -> nat

volumen_agua: frasco -> nat

operaciones:

darCalor: frasco x nat -> frasco

quitarHielo: frasco x nat -> frasco

darAgua: frasco x nat -> frasco

Fin TAD

Se tiene bolita que se puede mover dándole impulsos. Estos impulsos se miden en kilos y, por cada
impulso, la bolita de desplaza 2 unidades de distancia.

TAD bolita

[...]

observadores:

posicion: bolita -> nat

operaciones:

empujar: bolita x nat i x nat d -> bolita {d = 2i}

[...]

Fin TAD

Se quiere implementar una pila con la función TOP() en el caso en el que la pila no esté vacía.

TAD Pila

observadores:

top: pila -> <elem, bool>

Fin TAD

Ídem

TAD Pila

top: pila -> indicador

https://www.cubawiki.com.ar/index.php/Final_06/12/19_(Algoritmos_II) 2/3
12/5/22, 18:53 Final 06/12/19 (Algoritmos II) - Cuba-Wiki
hay_elem?: indicador -> bool

elem: pila x indicador i -> elem {hay_elem?(i)}

Fin TAD

https://www.cubawiki.com.ar/index.php/Final_06/12/19_(Algoritmos_II) 3/3

También podría gustarte