Los algoritmos y la computación - 2da Parte

avatar


Portada.png
La imagen de fondo de la portada es una imagen de libre uso tomada de Pixabay y editada por @abdulmath con Inkscape


Una pregunta que todos nos podieramos hacer en algún momento es:

¿Qué tipo de problemas resuelven los algoritmos?


La ordenación no es en absoluto el único problema computacional para el que se han desarrollado los algoritmos. Las aplicaciones prácticas de los algoritmos son omnipresentes, como por ejemplo:

  • El proyecto del Genoma Humano ha hecho grandes progresos hacia los objetivos de identificar los 100.000 genes del ADN humano, determinar las secuencias de los 3.000 millones de pares de bases químicas que componen el ADN humano, almacenar esta información en bases de datos y desarrollar herramientas para el análisis de los datos. Cada uno de estos pasos requiere algoritmos sofisticados. Aunque las soluciones a los distintos problemas que se plantean están fuera del alcance de una simple explicación, muchos métodos para resolver estos problemas biológicos utilizan ideas de la teoría de la computación y los algoritmos, lo que permite a los científicos realizar las tareas utilizando los recursos de forma eficiente. El ahorro se produce en tiempo, tanto humano como mecánico, y en dinero, ya que se puede extraer más información del laboratorio.


digitization.png
Imagen de Pixabay

  • Internet permite a personas de todo el mundo acceder y recuperar rápidamente grandes cantidades de información. Con la ayuda de algoritmos inteligentes, los sitios de Internet son capaces de gestionar y manipular este gran volumen de datos. Ejemplos de problemas que hacen un uso esencial de los algoritmos incluyen la búsqueda de buenas rutas en las que viajarán los datos, y el uso de un motor de búsqueda para encontrar rápidamente las páginas en las que reside una determinada información información concreta.
  • El comercio electrónico permite negociar e intercambiar bienes y servicios por vía electrónica, y depende de la privacidad de la información personal, como números de tarjetas de crédito, contraseñas y extractos bancarios. Las principales tecnologías utilizadas en el comercio electrónico son la criptografía de clave pública y las firmas digitales, que se basan en algoritmos numéricos y en la teoría de los números.
  • Las empresas de manufacturas y otras empresas comerciales a menudo necesitan asignar recursos escasos de la manera más beneficiosa. Una empresa petrolera puede querer saber dónde colocar sus pozos para maximizar su beneficio esperado. Un candidato político puede querer determinar dónde gastar dinero comprando publicidad de campaña para maximizar las posibilidades de ganar unas elecciones. Una compañía aérea puede querer asignar tripulaciones a los vuelos de la forma más barata posible, asegurándose de que cada vuelo está cubierto y de que se cumplen las normas gubernamentales relativas a la programación de las tripulaciones. Un proveedor de servicios de Internet puede querer determinar dónde colocar recursos adicionales para servir a sus clientes con mayor eficacia. Todos estos son ejemplos de problemas que pueden resolverse mediante programación lineal.


computer.png
Imagen de Pixabay


Dos de las características comunes a muchos problemas algorítmicos interesantes son:

  1. Tienen muchas soluciones candidatas, la inmensa mayoría de las cuales no resuelven el problema en cuestión. Encontrar una que lo haga, o una que sea la mejor, puede suponer todo un reto.
  2. Tienen muchas aplicaciones prácticas.


No todos los problemas resueltos por algoritmos tienen un conjunto de soluciones candidatas fácilmente identificables soluciones.


Por ejemplo, supongamos que nos dan un conjunto de valores numéricos que representan muestras de una señal, y queremos calcular la transformada discreta de Fourier de estas muestras. La transformada discreta de Fourier convierte el dominio del tiempo en el dominio de la frecuencia, produciendo un conjunto de coeficientes numéricos, de modo que podemos determinar la fuerza de varias frecuencias en la señal muestreada. Además de estar en el corazón del procesamiento de señales, las transformadas discretas de Fourier tienen aplicaciones en la compresión de datos y en la multiplicación de grandes polinomios y números enteros.



artificial.png
Imagen de Pixabay



Una estructura de datos es una forma de almacenar y organizar los datos para facilitar el acceso y las modificaciones. Ninguna estructura de datos funciona bien para todos los fines, por lo que es importante conocer los puntos fuertes y las limitaciones de varias de ellas.


Las técnicas de diseño y análisis de algoritmos son las que permiten desarrollar algoritmos por su cuenta, demostrando que dan la respuesta correcta y comprender su eficacia.


Durante muchos años, pudimos contar con que las velocidades de reloj de los procesadores aumentaran a un ritmo constante. Sin embargo, las limitaciones físicas suponen un obstáculo fundamental para el aumento constante de la velocidad de reloj: como la densidad de potencia aumenta de forma superlineal con la velocidad de reloj, los chips corren el riesgo de fundirse cuando su velocidad de reloj es lo suficientemente alta.


Para para realizar más cálculos por segundo, los chips se están diseñando para contener no sólo uno, sino varios núcleos de procesamiento. Podemos comparar estos computadores multinúcleo a varios computadores secuenciales en un solo chip; en otras palabras, son un tipo de computador paralelo. Para obtener el mejor rendimiento de los computadores multinúcleo, tenemos que diseñar algoritmos teniendo en cuenta el paralelismo.



waves.png
Imagen de Pixabay


Si quedastes fascinado con este apasionante tema de los algoritmos y la computación, no te pierdas la próxima publicación sobre este tema, si deseas ampliar más te invito a leer las siguientes referencias:

  • Alfred V. Aho, John E. Hopcroft, and Jeffrey D. Ullman. The Design and Analysis of Computer Algorithms. Addison-Wesley, 1974.
  • Selim G. Akl. The Design and Analysis of Parallel Algorithms. Prentice Hall, 1989.
  • Mikhail J. Atallah, editor. Algorithms and Theory of Computation Handbook. CRC Press, 1999.
  • Eric Bach and Jeffrey Shallit. Algorithmic Number Theory—Volume I: Efficient Algorithms. The MIT Press, 1996.


HiveFirma.png
cervantes.png



0
0
0.000
0 comments