Introducción a la clase
En esta clase analizaremos cómo se aplican las estructuras de datos en la vida real, desde sistemas de bases de datos hasta inteligencia artificial. Veremos ejemplos concretos de cómo las estructuras de datos optimizan el rendimiento y facilitan la resolución de problemas en distintas áreas del desarrollo de software.
¿Qué obtendrás de esta clase?
- Comprender la aplicación de listas, pilas, colas, árboles y grafos en entornos reales.
- Aprender cómo las estructuras de datos mejoran el rendimiento en sistemas empresariales.
- Implementar ejemplos prácticos en C#.
- Analizar casos reales donde estas estructuras son fundamentales.
Aplicaciones de Estructuras de Datos en la Vida Real
Bases de datos y almacenamiento de información
Las bases de datos utilizan árboles y hash tables para organizar y acceder rápidamente a la información.
Ejemplo: Índices en bases de datos (B-Trees)
Las bases de datos como SQL Server y MySQL utilizan B-Trees para indexar y buscar datos eficientemente.
using System;
using System.Collections.Generic;
class BaseDatos
{
static Dictionary<int, string> usuarios = new Dictionary<int, string>();
static void Main()
{
usuarios.Add(101, "Ana");
usuarios.Add(102, "Carlos");
usuarios.Add(103, "Pedro");
Console.WriteLine("Ingrese el ID de usuario:");
int id = Convert.ToInt32(Console.ReadLine());
if (usuarios.ContainsKey(id))
Console.WriteLine("Usuario encontrado: " + usuarios[id]);
else
Console.WriteLine("Usuario no encontrado.");
}
}
Aquí se usa un diccionario (O(1)), similar a cómo funcionan los índices en bases de datos.
Motores de búsqueda y sistemas de recomendación
Los motores de búsqueda como Google organizan páginas web usando árboles de búsqueda y grafos.
Los sistemas de recomendación, como Netflix o Spotify, usan grafos para conectar usuarios con contenido.
Ejemplo: Grafo de Recomendaciones
using System;
using System.Collections.Generic;
class Recomendador
{
static Dictionary<string, List<string>> recomendaciones = new Dictionary<string, List<string>>();
static void Main()
{
recomendaciones.Add("Acción", new List<string> { "Mad Max", "John Wick", "Gladiador" });
recomendaciones.Add("Comedia", new List<string> { "Superbad", "Step Brothers", "The Office" });
Console.WriteLine("Ingrese un género de película:");
string genero = Console.ReadLine();
if (recomendaciones.ContainsKey(genero))
Console.WriteLine("Películas recomendadas: " + string.Join(", ", recomendaciones[genero]));
else
Console.WriteLine("No hay recomendaciones para ese género.");
}
}
Este código simula un grafo de recomendaciones, similar al usado por plataformas de streaming.
Redes sociales y relaciones entre usuarios
Las redes sociales utilizan grafos para representar relaciones entre usuarios.
Ejemplo: Amigos en una red social con grafos
using System;
using System.Collections.Generic;
class RedSocial
{
static Dictionary<string, List<string>> amigos = new Dictionary<string, List<string>>();
static void Main()
{
amigos.Add("Carlos", new List<string> { "Ana", "Pedro" });
amigos.Add("Ana", new List<string> { "Carlos", "Luis" });
amigos.Add("Pedro", new List<string> { "Carlos" });
Console.WriteLine("Ingrese el nombre de un usuario:");
string usuario = Console.ReadLine();
if (amigos.ContainsKey(usuario))
Console.WriteLine("Amigos de " + usuario + ": " + string.Join(", ", amigos[usuario]));
else
Console.WriteLine("Usuario no encontrado.");
}
}
Este código representa una red social usando un grafo, donde cada usuario tiene una lista de amigos conectados.
Gestión de tareas y procesamiento de eventos
Los sistemas operativos usan colas para gestionar tareas y eventos, asegurando que se procesen en orden.
Ejemplo: Sistema de impresión usando una cola
using System;
using System.Collections.Generic;
class Impresora
{
static void Main()
{
Queue<string> trabajos = new Queue<string>();
trabajos.Enqueue("Documento 1");
trabajos.Enqueue("Documento 2");
trabajos.Enqueue("Documento 3");
while (trabajos.Count > 0)
{
Console.WriteLine("Imprimiendo: " + trabajos.Dequeue());
}
}
}
Aquí, una cola (FIFO) garantiza que los documentos se impriman en orden de llegada.
Inteligencia Artificial y Machine Learning
En IA y Machine Learning, los árboles de decisión y grafos se utilizan para clasificar datos y encontrar patrones.
Ejemplo: Clasificación de datos con un árbol de decisión (simulación)
using System;
class ArbolDecision
{
static void Main()
{
Console.WriteLine("¿El objeto es redondo? (sí/no)");
string respuesta = Console.ReadLine().ToLower();
if (respuesta == "sí")
{
Console.WriteLine("¿Es pequeño? (sí/no)");
string tamaño = Console.ReadLine().ToLower();
if (tamaño == "sí")
Console.WriteLine("Puede ser una manzana.");
else
Console.WriteLine("Puede ser una pelota.");
}
else
{
Console.WriteLine("Puede ser un libro.");
}
}
}
Este código simula un árbol de decisión, usado en modelos de clasificación en IA.
Comparación de Aplicaciones
Aplicación | Estructura de Datos Utilizada |
---|---|
Bases de datos | Árboles (B-Trees), Diccionarios |
Motores de búsqueda | Árboles binarios, Hash Tables |
Redes sociales | Grafos |
Gestión de tareas | Pilas, Colas |
Inteligencia Artificial | Árboles de decisión, Grafos |
Caso de uso real
Un sistema de transporte usa grafos para calcular rutas óptimas entre ciudades, optimizando tiempo y costos.
Ejemplo en C#: Rutas con Grafos
using System;
using System.Collections.Generic;
class Rutas
{
static Dictionary<string, List<string>> mapa = new Dictionary<string, List<string>>();
static void Main()
{
mapa.Add("A", new List<string> { "B", "C" });
mapa.Add("B", new List<string> { "A", "D", "E" });
mapa.Add("C", new List<string> { "A", "F" });
mapa.Add("D", new List<string> { "B" });
mapa.Add("E", new List<string> { "B", "F" });
mapa.Add("F", new List<string> { "C", "E" });
Console.WriteLine("Ingrese ciudad de origen:");
string origen = Console.ReadLine();
Console.WriteLine("Ingrese ciudad de destino:");
string destino = Console.ReadLine();
if (mapa.ContainsKey(origen) && mapa[origen].Contains(destino))
Console.WriteLine("Ruta directa disponible.");
else
Console.WriteLine("Ruta no directa, se necesita más conexiones.");
}
}
Este programa modela una red de transporte con un grafo, simulando la conectividad entre ciudades.
Próxima clase: Aplicación de algoritmos en Arquitectura Clean
En la siguiente clase exploraremos cómo aplicar algoritmos y estructuras de datos dentro de Clean Architecture, garantizando modularidad, escalabilidad y separación de responsabilidades.