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.