Está en la página 1de 3

Instituto Tecnológico y de Estudios Superiores de

Monterrey

Programación de estructuras de datos y algoritmos


fundamentales

Reflexión Final de Actividades Integradoras de la Unidad de


Formación TC1031 (Evidencia Competencia)

Nombre: Marcelo Marcos Flores


En el transcurso de este curso, se abordo varias esctructuras de datos y algoritmos, destacando su
relevancia para el procesamiento y analisis de datos en archivos de bitacora. Se examinaron estrategias y
tecnicas para admisitrar, organizar y analizar datos de manera efectica, desde la ordenacion eficiente
fechas hasta la exploracio de conexiones de red mediante grafos, ordenarlos por prioridades o acendencia
mediante tecnicas de gestion de datos para ciertos tipos de problemas especificos para analizarlos de
manera efectiva. La variedad de estructuras, como listas doblemente enlazadas (linked lists), arboles
binarios, grafos, y tablas hash, se seleccionaron estrategicamente para usos diferentes en cada situacion,
como por ejemplo para ordenarlos de ciertas maneras, identificar patrones, optimizar el acceso y
busqueda de infomacion especifica. A lo largo de este curso, se profundizo sobre las estructuras de datos
fundamentales en la programacion para el manejo estrategico de tipos de datos, en este caso una bitacora,
donde la eficiencia en el proceamiento y analisis de informacion es escencial.
En la primera evidencia, se abordo varios algorimos de ordenamiento como el Quick Sort para ordenar los
datos de la bitacora desordenados, y la busqueda secuencial cuando estos ya se presentan ordenados. La
elecion de estos metodos se debe a que cada uno es mas efectivo dependiendo de el problema a
solucionar. Donde el Quick Sort es un algoritrmo de ordenamiento que en el mejor caso es O(n log n) y el
peor casi O(n^2), que es muy eficiente para grandes conjuntos de datos que estan desordenados, este
divide las listas de datos para resolverlos en problemas mas pequeños. Y la busqueda secuencial para
buscar datos ordenados completamente, donde consulta todos los datos de manera secuencial. Sobre uso
de estrucutras de datos lineales, se exploro el uso de listas doblemente enlacadas o “Linked Lists” donde
son listas que estan conectadas entre si y permiten recorrer la estrcutura en ambas direcciones, ya que
tienen un puntero a la izquierda y otra en la derecha, esto le permite recorrer la lista hacia adelante y hacia
atrás. Esto es util en el analissi de registros de actividad sospechosa en sistemas computacionales, donde
tienen eficiencia gracias a su acceso rapido a elementos anteriores y siguientes, asu como la capacidad de
agregar o eliminar elementos en cualquier momento. En la estructura de datos jerarquicas (Arboles), las
direcciones IP se organizaron utilizando un arbol Heap y un BST binario, ambas estructuras de datso
fueron elegudas en funcion de sus caracteristicas y beneficios particulares. El arbol Heap facilida la
identificacion rapida de los elementos mas importantes en un conjuntos de datos desordenado, sin
embaego el BST permite busquedas rapidas, hacer insercion y eliminar elementos de maneara eficiente.
El Heap es mejor para hayar el maximo o minimo de elementos, mientras que el BST es mejor en otras
busquedas. En otra evidencia, las direcciones IP se utilizaron para analizar las conexiones en una red
mediante la implementacio de una representacion de grafo mediante una lista de adyacecia o un vector de
vectores de cadenas, donde cada IP tenia su nodo con sus IP adyacentes a el, y otras vicecersa, donde esto
representa un grafo conectado a multiples elementos y otros elementos conectados a el. En el ambito de la
ciberseguridad, los grafos son fundamentales para modelar las conexiones y relaciones entre entidades,
particularmente para identificar patrones y comportamientos inusuales en un botnet. La adaptibilidad de
los grafos a un conjunto de datos grandes y dinamicos fue crucial para la rapida evolucio de un entorno
botnet. En la luch contra amenazas ciberneticas, es una herramienta poderosa para comprender, visualizar
y priorizar informacion. Por ultimo se emplearon tablas hash representado como un unordered map para
almacenar direcciones IP de destino y origen en un formato numerico y facilitar la busqueda y
actualizacion eficientes de intentos de acceso en un vector. Aquí identificamos los IP de destino y origen
donde el unordered map tiene una key unica y esta claves se utilizan para rastrear los intentos de acceso
desde y hacia direcciones IP. Las tablas de hash y los mapas, son estructuras de datos que almacenan
inforamcion en pares de clave como un valor, donde la clave en un valor hash es creado a partir de la
informacion de interes. Las tablas hash son especialmente rapidas, ya que tiene una complejidad
promedio de O(1), que la hace muy eficiente para grandes cantidades de datos. Su velocidad se debe a
que puede acceder directamente a la informacio a travez de calves lo que la hace especialmenet util en un
contexto de IPs, no obstante, debido a algo llamado “Colsiones”, donde dos o mas elementos tienen el
valor hash igual y esto hace que tenga que mover su lista de una manera eficiente, sin embargo a esto le
puede costar espacio.
En los aloritmos de Ordenamiento (Quick Sort, Bubble Sort, Insertion Sort), para conjuntos de dats
grandes, la busqueda rapida generalmente es mas rapida en terminos de tiempo de ejecucion que las
busquedas burbuja e insercion. Quick Sort funciona localmente y tiene una complejidad de O(n log n) en
la mayoria de los casos. Una area de mejora en el codigo de bitacora para ordenar las IP por fecha, he
visto que envez del Quick Sort para ordenar fechas, una opcion para cosiderar podria ser el algoritmo
Merge Sort, ya que tiene una complejidad de tiempo de O(n log n) en el peor y mejor caso. La ventaje de
este es que es un algoritmo de ordenamiento estable y no depende del orden de los datos en el que se
ordenan inicialmente. Por ende considero que la mas eficiente hubiera sido el Merge Sort en este caso.
Las listas doblemente enlazadas son utiles para agregar y eliminar elementos de la lista en cualquier
momento. Sin embargo, las listas simplemente enlazadas pueden funcionar mejor con acceso aletorio. Si
la frequencia de inserciones y elimnaciones es baja, se podria considerar el uso de arrays si el acceso
aletorio es una operación importante. Los arboles Heap y BST son buenos para buscar y manipular datos
jeraquicos. Sin embargo, puede haber un desequilibrio en el arbol, donde la eficiencia se puede afectar,
por ende, una posible mejora para evitar esto, podria ser los arboles AVL, donde el tipo de arbol de
busqueda binaria es balanceado en que la altura de los subarboles izquierdo y derecho de cualquier nodo
difiere no mas de uno, lo que asegura que el tiempo de busqueda sea O(log n). En la estructura de datos
de Redes de grafos, estos son eficientres para representar conexiones entre redes y pienso que son lo
suficientemente eficientes para encontrar en una lista de adyacencias el botmaster, ya que asi considera
cada uno y se puede ademas utilizar un unordered map. Para las estructuras de datos de conjuntos (Tablas
Hash), estas ofrecen una eficiencia exelente para operaciones de busqueda ya que cuentan con key para
accesar a ellas, sin embargo estas si pueden representar colisiones, no obstante estas son muy eficientes en
un contexto de desplegar los IP con intentos de acceso a ellas y a otras.

También podría gustarte