Skip to content

Latest commit

 

History

History
109 lines (54 loc) · 10.5 KB

capitulo19.md

File metadata and controls

109 lines (54 loc) · 10.5 KB

CAPÍTULO 19: PROGRAMACIÓN CONCURRENTE Y PARALELA

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.

  1. 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.

  2. 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.

  3. Productor-Consumidor: Implementa el clásico problema del productor-consumidor utilizando una cola compartida, donde varios productores generan datos y varios consumidores los procesan.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. 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.

  11. 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.

  12. 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.

  13. 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.

  14. 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.

  15. 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.

  16. 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.

  17. 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.

  18. 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.

  19. Simulación de Clientes de Banco Concurrentes: Crea un simulador donde varios clientes realicen operaciones bancarias (depósitos, retiros, consultas) de forma concurrente.

  20. 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.

  21. 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.

  22. 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.

  23. 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.

  24. 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.

  25. Servidor Web Concurrente: Escribe un servidor web que maneje múltiples solicitudes de clientes simultáneamente utilizando hilos para procesar cada solicitud en paralelo.

  26. 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.

  27. 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.

  28. 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.

  29. 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.

  30. 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.

  31. 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.

  32. 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.

  33. 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.

  34. 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.

  35. 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.

  36. 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.

  37. 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.

  38. 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.

  39. 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.

  40. 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.

  41. 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.

  42. 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.

  43. 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.

  44. 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.

  45. 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.

  46. 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.

  47. **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.

  1. 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.

  2. 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.

  3. 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.