Este capítulo incluye problemas diseñados para ser resueltos utilizando técnicas de programación concurrente y paralela. Este enfoque se centra en la ejecución simultánea de múltiples tareas, optimizando el rendimiento y la eficiencia de aplicaciones que requieren procesamiento de alto rendimiento, manejo de múltiples hilos, y la coordinación de recursos compartidos.
-
Cálculo Concurrente del Factorial: Implementa un programa que calcule el factorial de un número grande utilizando varios hilos para dividir y conquistar el cálculo.
-
Suma Paralela de un Arreglo: Escribe un programa que divida un gran arreglo de números entre varios hilos y calcule la suma total en paralelo.
-
Productor-Consumidor: Implementa el clásico problema del productor-consumidor utilizando una cola compartida, donde varios productores generan datos y varios consumidores los procesan.
-
Multiplicación de Matrices en Paralelo: Crea un programa que multiplique dos matrices grandes utilizando varios hilos para calcular los elementos de la matriz resultante en paralelo.
-
Manejo de una Cuenta Bancaria con Múltiples Hilos: Implementa un sistema de gestión de cuentas bancarias donde múltiples hilos representen cajeros automáticos que realizan depósitos y retiros concurrentemente.
-
Simulación de Filosofos Comensales: Escribe un programa que simule el problema de los filósofos comensales utilizando mecanismos de sincronización para evitar condiciones de carrera y bloqueos.
-
Cálculo Concurrente de Números Primos: Implementa un programa que encuentre todos los números primos menores que un número dado utilizando varios hilos para dividir el trabajo.
-
Servidor Concurrente de Archivos: Crea un servidor de archivos que maneje múltiples solicitudes de clientes para leer y escribir en archivos de forma concurrente.
-
Ordenación Rápida (Quicksort) Paralela: Implementa el algoritmo Quicksort de manera paralela dividiendo el trabajo entre varios hilos para acelerar el proceso de ordenación.
-
Simulación de Sistema de Tickets Concurrente: Escribe un programa que simule un sistema de venta de tickets para un evento, manejando múltiples clientes que intentan comprar tickets al mismo tiempo.
-
Buscador de Texto Concurrente: Crea una aplicación que busque un texto en múltiples archivos al mismo tiempo utilizando hilos para realizar las búsquedas concurrentemente.
-
Reducción Paralela de una Lista: Implementa una función de reducción (por ejemplo, suma o producto) que divida el trabajo entre varios hilos para procesar listas grandes más rápidamente.
-
Simulación de Semáforo en una Intersección: Escribe un programa que simule el control de semáforos en una intersección, utilizando concurrencia para manejar múltiples direcciones de tráfico.
-
Cálculo de la Serie de Fibonacci Concurrente: Implementa un programa que calcule los números de la serie de Fibonacci utilizando varios hilos para dividir y conquistar el cálculo.
-
Descarga de Archivos en Paralelo: Crea una aplicación que descargue múltiples archivos desde Internet simultáneamente utilizando varios hilos para acelerar el proceso de descarga.
-
Monitor de Temperatura Concurrente: Implementa un sistema que lea datos de temperatura de múltiples sensores en tiempo real utilizando hilos para manejar la entrada de datos concurrente.
-
Simulación de Red de Mensajería: Escribe un programa que simule un sistema de mensajería donde varios usuarios envían y reciben mensajes concurrentemente.
-
Cálculo de Pi en Paralelo: Implementa un programa que calcule el valor de Pi utilizando el método de Monte Carlo y divida el trabajo entre varios hilos.
-
Simulación de Clientes de Banco Concurrentes: Crea un simulador donde varios clientes realicen operaciones bancarias (depósitos, retiros, consultas) de forma concurrente.
-
Procesamiento Concurrente de Imágenes: Implementa un programa que aplique filtros a un conjunto de imágenes utilizando varios hilos para procesar cada imagen en paralelo.
-
Simulación de Sistema de Inventario: Escribe un programa que simule un sistema de inventario donde varios hilos representen transacciones de compra y venta concurrentes.
-
Compresión de Archivos en Paralelo: Implementa una aplicación que comprima varios archivos simultáneamente utilizando hilos para manejar la compresión en paralelo.
-
Simulación de Ascensores Concurrentes: Crea un programa que simule el funcionamiento de varios ascensores en un edificio, utilizando concurrencia para manejar las solicitudes de los usuarios.
-
Busqueda de Elementos en un Grafo Concurrente: Implementa un algoritmo de búsqueda en profundidad (DFS) o búsqueda en anchura (BFS) en un grafo utilizando concurrencia para explorar múltiples ramas simultáneamente.
-
Servidor Web Concurrente: Escribe un servidor web que maneje múltiples solicitudes de clientes simultáneamente utilizando hilos para procesar cada solicitud en paralelo.
-
Sistema de Control de Tráfico Aéreo Concurrente: Implementa una simulación de control de tráfico aéreo donde varios aviones reportan su posición y solicitan instrucciones de aterrizaje y despegue simultáneamente.
-
Encriptación de Archivos en Paralelo: Crea una aplicación que encripte un conjunto de archivos utilizando varios hilos para manejar la encriptación en paralelo.
-
Simulación de Red de Computadoras Concurrente: Escribe un programa que simule una red de computadoras donde cada nodo puede enviar y recibir datos de otros nodos concurrentemente.
-
Reconocimiento de Patrones en Datos Concurrentes: Implementa un programa que busque patrones específicos en grandes volúmenes de datos utilizando hilos para procesar diferentes segmentos de datos en paralelo.
-
Juego de Vida de Conway en Paralelo: Crea una versión paralela del Juego de la Vida de Conway, dividiendo el tablero en segmentos que se actualicen concurrentemente.
-
Cálculo de Histograma en Paralelo: Implementa un programa que divida una imagen en partes y calcule el histograma de color de cada parte utilizando hilos para el procesamiento en paralelo.
-
Clasificación de Textos en Paralelo: Crea un programa que analice y clasifique un gran conjunto de documentos de texto utilizando hilos para dividir y procesar los documentos en paralelo.
-
Simulación de Sistema de Riego Inteligente: Escribe un programa que simule un sistema de riego en una granja donde múltiples sensores monitorean la humedad y controlan el riego en diferentes parcelas de forma concurrente.
-
Manejo Concurrente de Carritos de Compras: Implementa un sistema de comercio electrónico donde múltiples usuarios pueden agregar y eliminar productos de su carrito de compras al mismo tiempo.
-
Simulación de Red de Transporte Público: Crea un simulador que modele el tráfico de autobuses y trenes en una ciudad, utilizando concurrencia para manejar las rutas y horarios.
-
Optimización Concurrente de Rutas de Entrega: Implementa un programa que optimice rutas de entrega para múltiples vehículos de forma concurrente, balanceando la carga y minimizando el tiempo de entrega.
-
Cálculo de Promedios de Ventas en Paralelo: Escribe un programa que procese registros de ventas de diferentes regiones de forma concurrente para calcular promedios y totales.
-
Simulación de Ecosistema Concurrente: Implementa un simulador de ecosistema donde diferentes especies de plantas y animales interactúan en tiempo real, utilizando hilos para manejar las interacciones.
-
Procesamiento de Video en Paralelo: Crea una aplicación que aplique efectos a un video en tiempo real, dividiendo el procesamiento entre varios hilos para optimizar el rendimiento.
-
Simulación de Red de Comunicaciones Satelitales: Escribe un programa que modele una red de comunicaciones satelitales donde múltiples satélites transmiten y reciben datos concurrentemente.
-
Simulación de Movimiento de Partículas Concurrente: Implementa un simulador donde múltiples partículas se mueven e interactúan en un espacio tridimensional, utilizando hilos para manejar los cálculos de movimiento.
-
Balanceo de Carga en Servidores: Crea un sistema de balanceo de carga que distribuya las solicitudes entrantes a un conjunto de servidores de manera equilibrada, utilizando concurrencia para manejar las solicitudes.
-
Análisis de Datos en Grandes Volúmenes Concurrente: Implementa un programa que procese grandes volúmenes de datos, como registros de sensores o logs de servidores, utilizando varios hilos para analizar diferentes partes del conjunto de datos simultáneamente.
-
Simulación de Hospital Concurrente: Escribe un programa que modele un hospital donde múltiples doctores y pacientes interactúan de forma concurrente, gestionando consultas, tratamientos y emergencias.
-
Simulación de Tráfico Marítimo en Paralelo: Implementa un simulador que modele el tráfico de barcos en un puerto, utilizando concurrencia para manejar la llegada y salida de barcos.
-
Reconocimiento de Imágenes en Paralelo: Crea un programa que utilice varios hilos para analizar y clasificar imágenes en un conjunto grande de datos, optimizando el tiempo de procesamiento.
-
**Sistema de Mon
itoreo de Red Concurrente**: Escribe una herramienta que monitoree la actividad de red en tiempo real, utilizando concurrencia para analizar diferentes segmentos de tráfico simultáneamente.
-
Simulación de Juegos Olímpicos Concurrente: Implementa un simulador de los Juegos Olímpicos donde múltiples eventos y competiciones se lleven a cabo en paralelo, con participantes y resultados manejados de manera concurrente.
-
Optimización de Rendimiento de Aplicaciones Web: Crea un programa que optimice el rendimiento de una aplicación web dividiendo las tareas de backend entre varios hilos para manejar múltiples solicitudes de usuario simultáneamente.
-
Simulación de Colapso de Tráfico en una Ciudad: Implementa un simulador que modele el colapso del tráfico en una ciudad, utilizando concurrencia para manejar las interacciones entre vehículos, semáforos y peatones.
Estos problemas están diseñados para aplicar y reforzar los conceptos de programación concurrente y paralela, proporcionando oportunidades para trabajar con múltiples hilos, sincronización de recursos, manejo de condiciones de carrera, y optimización de aplicaciones de alto rendimiento.