Los algoritmos y la computación - 1era Parte


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


Antes de que existieran los computadores, existian ya los algoritmos. Pero ahora que hay computadores, existen aún más algoritmos, y los algoritmos son el corazón de la computación.


Hablaremos de algunos algoritmos y con considerable profundidad, pero hace que su diseño y análisis sean accesibles para todos los niveles de lectores. Hare un esfuerzo en mantener las explicaciones elementales sin sacrificar la profundidad o el rigor matemático.


Iniciaremos por proporciona una visión general de los algoritmos y su lugar en los sistemas computacionales modernos. Dando una undefinición de lo que es un algoritmo y mostrar algunos ejemplos.


java.png
Imagen de Pixabay


Antes de comenzar, cabe la pena hacernos estas preguntas naturales:

¿Qué son los algoritmos?


¿Por qué merece la pena el estudio de los algoritmos?


¿Cuál es el papel de los algoritmos en relación con otras tecnologías utilizadas en las computadores?


Informalmente, un algoritmo es cualquier procedimiento computacional bien definido que toma algún valor, o conjunto de valores, como entrada y produce algún valor, o conjunto de valores, como salida. Un algoritmo es, por tanto, una secuencia de pasos computacionales que transforman la entrada en la salida.


También podemos ver un algoritmo como una herramienta para resolver un problema computacional bien especifico. El enunciado del problema especifica en términos generales la relación entrada/salida deseada. El algoritmo describe un procedimiento computacional específico para lograr esa relación de entrada/salida.


computer.png
Imagen de Pixabay


Por ejemplo, podríamos necesitar ordenar una secuencia de números en orden no decreciente. Este problema se plantea con frecuencia en la práctica y proporciona un terreno fértil para introducir muchas técnicas de diseño y herramientas de análisis estándar. Así es como definir formalmente el problema de ordenación:


Problema01.png

Por ejemplo, dada la sucesión de entrada (31, 41, 59, 26, 41, 58), un algoritmo de ordenación devuelve como salida la sucesión (26, 31, 41, 41, 58, 59).


Esta sucesión de entrada se denomina instancia del problema de ordenación. En general, una instancia de un problema consiste en la entrada (que satisface cualquier restricción impuesta en el enunciado del problema) necesaria para calcular una solución del problema.


Dado que muchos programas la utilizan como paso intermedio, la ordenación es una operación fundamental en computación. Como resultado, existen un gran número de buenos algoritmos de ordenación a nuestra disposición.


El algoritmo más adecuado para una aplicación determinada depende, entre otros factores, del número de elementos que haya que ordenar, del grado en que los elementos estén ya algo ordenados, de las posibles restricciones en los valores de los elementos, de la arquitectura del computador y del tipo de dispositivos de almacenamiento que se vayan a utilizar.



artificial-intelligence.png
Imagen de Pixabay



Se dice que un algoritmo es correcto si, para cada instancia de entrada, se detiene con la salida correcta. Decimos que un algoritmo correcto resuelve el problema computacional dado.


Un algoritmo incorrecto puede no detenerse en algunos casos de entrada, o puede puede detenerse con una respuesta incorrecta. Al contrario de lo que cabría esperar, los algoritmos a veces pueden ser útiles, si podemos controlar su tasa de error. Sin embargo, por lo general sólo nos ocupamos de estudiar algoritmos correctos.


Un algoritmo puede especificarse en inglés, como un programa de computación, o incluso como un diseño de hardware. El único requisito es que la especificación debe proporcionar una descripción precisa del procedimiento de cálculo que debe seguirse.



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

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now
Logo
Center