Algoritmos Vittini
Algoritmos Vittini
Algoritmos Vittini
Matricula: 2024-0822
Carrera: Ciberseguridad
Fecha: 16/05/2024
Introducción
En este trabajo veremos algunos diferentes tipos de algoritmos y sus características de
cada uno de estos, Los algoritmos son secuencias de instrucciones que permiten resolver
problemas o realizar tareas específicas de manera eficiente y sistemática. Son
fundamentales en la informática y en diversas disciplinas, desde la inteligencia artificial
hasta la optimización de procesos industriales. También se puede decir que Los
algoritmos son como recetas que siguen las computadoras para resolver problemas o
realizar tareas específicas. Son súper importantes en todo lo que hacemos con
tecnología, desde que nuestros teléfonos nos muestren la ruta más rápida hasta que
nuestros datos estén seguros en internet. Hay muchos tipos de algoritmos, cada uno con
sus propias características y usos, y a continuación vamos a explorar algunos de ellos.
Los algoritmos son conjuntos de instrucciones diseñadas para realizar tareas o resolver
problemas. Existen diversos tipos de algoritmos, cada uno con características
específicas que los hacen adecuados para diferentes tipos de problemas. A continuación,
se presentan algunos de los tipos más comunes de algoritmos junto con sus
características:
1. Algoritmos de Búsqueda
Lineal (secuencial):
Descripción: Busca un elemento recorriendo secuencialmente una lista.
Complejidad: O(n), donde n es el número de elementos.
Uso: Listas desordenadas.
Binaria:
Descripción: Busca un elemento en una lista ordenada dividiendo repetidamente el
espacio de búsqueda a la mitad.
Complejidad: O(log n).
Uso: Listas ordenadas.
2. Algoritmos de Ordenamiento
Burbuja (Bubble Sort):
Descripción: Compara y cambia elementos adyacentes si están en el orden
incorrecto, repitiendo el proceso hasta que la lista esté ordenada.
Complejidad: O(n²).
Uso: Pequeñas listas debido a su baja eficiencia.
Quicksort:
Descripción: Divide la lista en sublistas más pequeñas y las ordena de manera
recursiva.
Complejidad: O(n log n) en promedio.
Uso: Listas grandes, debido a su alta eficiencia promedio.
Mergesort:
Descripción: Divide la lista en sublistas, las ordena y luego las fusiona.
Complejidad: O(n log n).
Uso: Listas grandes, especialmente cuando se requiere estabilidad en el
ordenamiento.
3. Algoritmos de Grafos
Dijkstra:
Descripción: Encuentra la ruta más corta desde un nodo origen a todos los demás
nodos en un grafo con pesos no negativos.
Complejidad: O(V²) o O((V + E) log V) usando colas de prioridad, donde V es el
número de vértices y E el número de aristas.
Uso: Problemas de rutas y redes.
Kruskal:
Descripción: Encuentra el árbol de expansión mínima en un grafo.
Complejidad: O(E log E).
Uso: Conectividad mínima en redes.
4. Algoritmos de Optimización
Programación Lineal:
Descripción: Optimiza una función lineal sujeta a restricciones lineales.
Complejidad: Depende del método (Simplex, O(n!); Karmarkar, O(n³.5L²)).
Uso: Problemas de asignación de recursos.
Algoritmos Genéticos:
Descripción: Utiliza técnicas inspiradas en la evolución natural, como selección,
mutación y cruce, para encontrar soluciones óptimas.
Complejidad: Variable.
Uso: Problemas complejos y no lineales, como diseño de circuitos y optimización de
rutas.
6. Algoritmos Criptográficos
RSA:
Descripción: Algoritmo de cifrado asimétrico que utiliza dos claves (pública y
privada).
Complejidad: Basado en la factorización de números grandes, lo que lo hace
computacionalmente difícil de romper.
Uso: Seguridad en la transmisión de datos.
AES (Advanced Encryption Standard):
Descripción: Algoritmo de cifrado simétrico que utiliza bloques de datos.
Complejidad: Muy eficiente para el cifrado y descifrado.
Uso: Seguridad en datos almacenados y transmitidos.
7. Algoritmos de Compresión
Huffman:
Descripción: Algoritmo de compresión sin pérdida que utiliza frecuencias de
caracteres para construir un árbol binario y asignar códigos de longitud variable.
Complejidad: O(n log n).
Uso: Compresión de texto y datos.
LZ77:
Descripción: Algoritmo de compresión basado en la sustitución de repeticiones con
referencias a posiciones anteriores en la cadena.
Complejidad: Variable.
Uso: Compresión de archivos y datos.
Conclusión