0% encontró este documento útil (0 votos)
13 vistas5 páginas

Algoritmos 23 Taller 1

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 5

Algoritmos II Febrero 13, 2023

Taller I
Diego Villamizar

Este taller debe entregarlo antes de las 18.10 del Martes 14 de Marzo. Envíemelo por correo
preferiblemente. Seleccione y resuelva 10 de los 13 problemas. Los códigos que ponga debe
comentarlos para explicar su funcionamiento.

1. Si (A, ≤) es un Colio (reflexivo, antisimétrico, transitivo y todos dos elementos com-


parables), pruebe que (A∗ , ≤∗ ) es un Colio donde si x, y ∈ A∗ , entonces x ≤∗ y sii
∃k ∈ [min |x|, |y|] tal que xi = yi para i < k y xk < yk o y = x · z con z ∈ A∗ , donde
x · z quiere decir concatenar las palabras x y z.

2. Dado x ∈ A∗ , cuántas permutaciones en S|x| ordenan a x?

3. Cree un algoritmo, e impleméntelo en Python, que dada una permutación φ ∈ Sn ,


retorne su inversa φ−1 .

4. Cree un algoritmo, e impleméntelo en Python, que dada una matriz(arreglo de arreglos)


compute su determinante usando la fórmula de Leibniz i.e.,

X n
Y
det(A) = sgn(φ) Ai,φ(i) .
φ∈Sn i=1

5. Use el punto anterior como definición de determinante. Pruebe, e implemente usando


Python, la fórmula de Laplace para calcular el determinante i.e.,
n
X  
det(A) = (−1)i+1 A1,i det Ae1,i ,
i=1

donde A
e1,i es la matriz resultante de quitar la fila 1 y la columna i.

6. Pruebe que para cualquier constante real a, b con b > 0, se tiene que (n + a)b = Θ nb .


7. Considere el siguiente algoritmo para cambiar un número n de base 10 a base 2. Cuál


es su complejidad asimptótica en términos de el número n? Implemente la inversa:
dado un número en base 2, retórnelo en base 10. Cuál es su complejidad en términos
de la longitud de la representación en base 2?

1
2 Clase 1:

1 def cambioBase (n):


2 if n==0:
3 return "0"
4 res = ""
5 while (n >0):
6 res=str(n%2)+ res #c o n c a t e n a m i e n t o
7 n=n//2 #f l o o r ( n /2 )
8 return res

8. Dado un entero positivo n ∈ N, cree un algoritmo(e impleméntelo en Python) que


retorne dos listas P = [p1 , · · · , pm ] y A = [a1 , · · · , am ] con pj primos y aj > 0 tal que
n = pa11 pa22 · · · pamm es la descomposición de n en factores primos. ex: Si n = 12, retorne
P = [2, 3] , A = [2, 1].
Bonus: Encuentre los primos usando la criba de Eratóstenes.

9. Sea A = {a < b < c < · · · < z}, use la definición del problema 1. e implemente en
Python un algoritmo para que dadas dos cadenas x, y ∈ A∗ , retorne 1 si x ≥∗ y, −1 si
x ≤∗ y y 0 si x = y.

10. Use el problema anterior y modifique el algoritmo de Inserción (en GitHub) para que
ordene cadenas en el alfabeto A = {a, b, · · · , z}.

11. Modifique Merge Sort para que calcule el número de inversiones de una permutación
φ ∈ Sn . Compare con el algoritmo dado antes para calcular estas inversiones, y con-
cluya sobre la complejidad de calcular el número de inversiones.
( k−1
)
X
12. Cree un algoritmo que, dados n y k, calcule An,k = x ∈ {0, 1}n : xi xi+1 = k .
i=1

13. (Cormen et. al.) Una tabla de Young de dimensiones m × n es una matriz en
M atm×n (Z+ ) tal que las entradas de una fila cualquiera están ordenadas de menor
a mayor y cada columna tiene las entradas ordenadas de arriba a abajo. Algunas de
las entradas de la tabla de Young pueden ser ∞ (representadas por un −1) si no hay
un número en esa entrada. Usted puede guardar r ≤ m · n números en una tabla de
Young.

• Dibuje una tabla de Young que contenga los elementos {9, 16, 3, 2, 4, 8, 5, 14, 12}.
• Dé un algoritmo, e impleméntelo, que extraiga el mínimo elemento en una tabla
de Young. Su algoritmo debería correr en O(n + m) tiempo. Use recursión.
Clase 1: 3

• De un algoritmo para insertar un elemento en una tabla de Young no llena. Debe


correr en O(n + m) tiempo.
• Muestre cómo ordenar n2 números en tiempo O(n3 ) usando una tabla de Young.
4 Clase 1:
Bibliography

[1] T. H. Cormen, C. E. Leiserson, R. Rivest and C. Stein. Introduction to Algorithms,


second edition.

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