Está en la página 1de 6

Laura Alejandra Riaño Camargo Código: 1014252165

Andrés Felipe Correcha Meneses Código: 1032473825

Trabajo Clasificación de Algoritmos

Encontrar y justificar un ejemplo de:

1. Fuerza bruta:

El software John The Ripper, que es utilizado para “crackear” contraseñas en


distintos tipos de cifrado, puede utilizar la fuerza bruta para descifrar una contraseña;
en la que realiza combinaciones de diferentes tipos de caracteres hasta lograr su
objetivo.

2. Divide y vencerás:

La búsqueda binaria sigue un enfoque de disminuir y conquistar al dividir


repetidamente el espacio de búsqueda por la mitad, eliminando la mitad de los
elementos en cada iteración, hasta encontrar el elemento deseado o determinar que
no está en la lista.

En cada iteración, el algoritmo de búsqueda binaria reduce el problema a la mitad,


disminuyendo la cantidad de elementos a examinar en cada paso. De esta manera,
se logra una eficiencia significativa en comparación con otros algoritmos de
búsqueda.

3. Disminuir y conquistar:

El algoritmo Merge Sort sigue un enfoque de disminuir y conquistar al dividir la lista


de elementos en subconjuntos más pequeños y ordenarlos individualmente antes de
combinarlos en una lista ordenada completa.

Al dividir la lista de elementos en subproblemas más pequeños y manejables y


combinarlos de manera ordenada, Merge Sort resuelve el problema de
ordenamiento de manera eficiente y efectiva, siendo útil para ordenar listas de
elementos de cualquier tamaño.

4. Programación dinámica:

El problema de la Mochila 0/1, se tiene un conjunto de ítems, cada uno con un valor
y un peso, y una mochila con una capacidad máxima de peso. El objetivo es
determinar el subconjunto de ítems que maximiza el valor total, sin sobrepasar la
capacidad máxima de peso de la mochila. En este problema, no se permite
fraccionar los ítems, es decir, se pueden tomar o dejar completamente, de ahí el
nombre "0/1".
Al almacenar y reutilizar resultados parciales en una tabla y abordar el problema de
manera sistemática, el algoritmo de programación dinámica resuelve el problema de
la Mochila 0/1 de manera eficiente y efectiva.

5. Algoritmo codicioso:

El algoritmo de Kruskal selecciona las aristas de menor peso en cada iteración,


siempre que no generen ciclos, para construir el árbol de expansión mínima. Al
seguir este enfoque codicioso, el algoritmo de Kruskal garantiza encontrar un árbol
de expansión mínima óptimo global. La complejidad temporal del algoritmo de
Kruskal es O(m log m), donde m es el número de aristas en el grafo, lo que lo
convierte en un algoritmo eficiente para resolver el problema del árbol de expansión
Laura Alejandra Riaño Camargo Código: 1014252165
Andrés Felipe Correcha Meneses Código: 1032473825
mínima.

Al seleccionar las aristas de menor peso en cada iteración y garantizar la


construcción de un árbol sin ciclos, el algoritmo de Kruskal encuentra de manera
eficiente y efectiva el árbol de expansión mínima en un grafo no dirigido y
ponderado.

6. Transformar y conquistar:

El algoritmo FFT( Fast Fourier) es la transformación del problema original en


subproblemas más pequeños permite una solución mucho más eficiente. La
complejidad temporal del algoritmo FFT es O(n log n), lo que representa una mejora
significativa en comparación con la complejidad de O(n^2) de calcular la DFT
directamente.

Al dividir el problema de calcular la Transformada de Fourier Discreta en


subproblemas más fáciles y combinar sus soluciones, el algoritmo FFT resuelve el
problema de manera eficiente y efectiva, lo que lo convierte en una herramienta
esencial en el procesamiento de señales y el análisis de datos.

7. Algoritmo de retroceso:

Las N-Reinas consiste en colocar N reinas en un tablero de ajedrez de tamaño NxN


de tal manera que ninguna de las reinas esté amenazando a las demás, es decir,
ninguna de las reinas puede estar en la misma fila, columna o diagonal que
cualquier otra reina.

Al construir soluciones incrementales y retroceder cuando se encuentra con una


situación en la que la solución parcial no puede ser extendida a una solución
completa, el algoritmo de retroceso resuelve el problema de las N-Reinas de manera
efectiva y, en la práctica, suele ser más eficiente que una búsqueda exhaustiva por
fuerza bruta.

8. ¿Cuál es la diferencia entre ++i y i++?, dar un ejemplo donde se pueda evidenciar la
diferencia.

La principal diferencia de usar ++i y i++ es el tipo de incremento que se genera. En


el primer caso, con el operador ++i se obtiene un preincremento; en el que se
incrementa el valor de i y se retorna el valor ya incrementado. A diferencia, en el
segundo caso, con el operador i++ se genera un postincremento; en el que se
retorna el valor actual de i y posteriormente se incrementa.
Laura Alejandra Riaño Camargo Código: 1014252165
Andrés Felipe Correcha Meneses Código: 1032473825
Trabajo Complejidad de Algoritmos 1

1. Ejercicio 1 - Análisis del peor caso para (f(n) completo):

a. La sumatoria de los valores de un vector, mientras la sumatoria sea menor a


un valor de prueba, n es el tamaño del vector.
b. El método de burbuja.
c. Sucursales (columnas) n x Meses (filas) m.

i. Encontrar el mayor por sucursales para cada mes.

ii. Encontrar el mayor de todo el año.

2. Ejercicio 2 - Realizar los siguientes ejercicios, encontrando el punto de corte (ya sea
matemáticamente o por gráfica (aproximado)):

a. f( n ) = n6 + 3n

f(n) = n^6 + 3n
n^6 + 3n = 0
n(n^5 + 3) = 0

raíz

n=0

n=−√ 3
5
Laura Alejandra Riaño Camargo Código: 1014252165
Andrés Felipe Correcha Meneses Código: 1032473825
b. f( n ) = 2n + 12

2n + 12 = 0
2n = -12
n = -12 / 2

raíz
n = -6
Laura Alejandra Riaño Camargo Código: 1014252165
Andrés Felipe Correcha Meneses Código: 1032473825
c. f( n ) = 3n + 2n

f(n) = 5n
5n = 0

n=0

d. f( n ) = n^2 + n
Laura Alejandra Riaño Camargo Código: 1014252165
Andrés Felipe Correcha Meneses Código: 1032473825
n^2 + n = 0
n(n + 1) = 0

raíces

n=-1
n=0

También podría gustarte