Ciencia

Algoritmo: características, para qué sirve, partes, ejemplos


Un algoritmo es un conjunto de instrucciones diseñadas para realizar una tarea específica. Es decir, es un procedimiento sistemático que en un número finito de pasos produce la respuesta a una pregunta o la solución de un problema. Un ejemplo de algoritmo es el del motor de búsqueda de Google, en el que al insertar una palabra, da varios resultados en forma de páginas web.

Puede ser un proceso complejo, como reproducir un archivo de música, o una operación simple, como sumar dos números. En la programación informática, los algoritmos se crean como funciones. Estas funciones son pequeños programas que pueden ser referenciados por un programa mayor.

Una aplicación para visualizar imágenes puede contener una biblioteca de funciones, usando cada una un algoritmo particular para representar los diferentes formatos de archivos de imagen.

Un programa para editar imágenes puede contener algoritmos diseñados para procesar los datos de las imágenes. Algunos ejemplos son recortar, cambiar de tamaño, nitidez, desenfoque, reducir ojos rojos y mejorar el color.

Índice del artículo

Características de un algoritmo

Claridad y precisión

El algoritmo debe ser claro y sin ambigüedades. Cada uno de sus pasos o acciones debe definirse con precisión, ser claro de forma rigurosa en todos los aspectos y debe tener inequívocamente un solo significado.

Entradas bien definidas

Un algoritmo tiene cero o más entradas, tomadas de un conjunto específico de objetos. Si el algoritmo indica que se deben tomar datos de entrada, estos datos de entrada deben estar bien definidos.

Salidas bien definidas

El algoritmo tiene siempre una o más salidas, que tienen una relación con las entradas. El algoritmo debe definir claramente qué informaciones de salida se producirán y también deben estar bien definidas.

Finitud

El algoritmo debe ser finito, es decir, siempre debe terminar en algún momento, después de un número finito de pasos, y no quedarse enganchado en lazos infinitos o cosas similares.

Factible

El algoritmo debe ser hábil y sencillo, de tal manera que pueda ejecutarse sin problema con los recursos disponibles. Por tanto, no debe contener ninguna tecnología futura.

Independencia del lenguaje

El algoritmo diseñado debe ser independiente del lenguaje, es decir, debe estar formado solo por instrucciones sencillas que se puedan implementar en cualquier lenguaje de programación y, sin embargo, el resultado sea siempre el mismo, tal como se esperaba.

Programas eficientes

Siempre existen diferentes formas de realizar una operación específica dentro de un programa. Por tanto, los programadores buscan crear los algoritmos más eficientes posibles.

Con el empleo de algoritmos muy eficientes, se podrá garantizar que los programas se ejecuten a la mayor velocidad, utilizando un mínimo de recursos del sistema.

Sin embargo, no siempre los algoritmos se producen intachablemente la primera vez. Por tal razón, los programadores buscan mejorarlos para incluirlos en futuras actualizaciones de software.

Por tanto, siempre que se sepa de una versión nueva de una aplicación con un mejor rendimiento quiere decir que esta versión contiene algoritmos más eficientes.

¿Para qué sirve un algoritmo?

El algoritmo es un instrumento sumamente útil, utilizado para realizar trabajos. En informática, al elegirse el mejor algoritmo se garantiza que la computadora haga la tarea dada de la mejor manera posible.

Por tanto, sirve para optimizar un programa de computación con los recursos disponibles. Es decir, cuando se decide resolver algún problema a través de los mejores algoritmos, se desea la mejor combinación de velocidad del programa y menor consumo de memoria.

Los diferentes algoritmos que se pueden estudiar son tan variados como los problemas que resuelven. Sin embargo, es muy probable que el problema que se esté tratando de resolver sea similar a otro problema en algunos aspectos.

Al lograr comprender una amplia gama de algoritmos, se podrá elegir el más adecuado para un problema y aplicarlo correctamente.

Compresión de archivos

Estos algoritmos se ajustan y optimizan específicamente para los tipos de archivos a los que están dirigidos. Por ejemplo, cada formato de audio utiliza una forma diferente de almacenar los datos. Cuando es decodificado por el códec de audio, generará un archivo de sonido similar a la forma de onda original.

Encriptado de datos

Los algoritmos también se utilizan para proteger datos o líneas de comunicación. En lugar de almacenar los datos comprimidos para que utilicen menos espacio en disco, se almacenan de manera que otros programas no puedan detectarlos.  Cuando los datos están encriptados, lo que se almacena no se parece a lo que es.

¿Cómo funciona un algoritmo?

Para lograr que una computadora haga algo, se tiene que escribir un programa de computación. Para escribir este programa hay que decirle a la computadora, paso a paso, lo que se quiere que haga.

Luego la computadora ejecuta el programa, realizando cada instrucción automáticamente, para lograr el resultado final. Así como se indica qué hacer a la computadora, también se puede elegir cómo lo hará, a través del algoritmo, siendo la técnica básica utilizada para hacer el trabajo.

Caso de ejemplo

Digamos que se tiene un amigo que llega al aeropuerto y necesita ir del aeropuerto a nuestra casa. Estos son cuatro algoritmos diferentes que se le podrían dar para resolver esta situación:

Algoritmo llámame

– Cuando llegue el avión, llama a mi celular.

– Reúnete conmigo fuera del área de entrega de equipaje.

Algoritmo de taxi

– Ve a la parada de taxis.

– Sube a un taxi.

– Dale al conductor mi dirección.

Algoritmo del bus

– Saliendo del aeropuerto, toma el bus número 70.

– Al llegar a la Calle Principal toma el bus 14.

– Bájate en la Calle Elmo.

– Camina dos cuadras hacia el norte, hasta mi casa.

Algoritmo rentar un vehículo

– Toma un servicio de transporte hasta el lugar donde rentan automóviles.

– Alquila un vehículo.

– Sigue las instrucciones del GPS para llegar a mi casa.

Los cuatro algoritmos logran exactamente el mismo objetivo, pero cada uno lo hace de manera diferente. Cada algoritmo tiene también un costo y un tiempo de viaje diferente. Por tanto, el algoritmo se elige según las circunstancias.

Partes de un algoritmo

Adquisición de los datos de entrada

El algoritmo debe disponer de ciertos recursos para poder leer los valores desde una fuente externa. La mayoría de los algoritmos requieren de algunos valores de datos para así definir un problema específico. Por ejemplo, los coeficientes de un polinomio.

Cálculo

El algoritmo debe disponer de ciertos recursos para poder realizar cálculos aritméticos, comparaciones, comprobar condiciones lógicas, etc.

Selección

El algoritmo debe disponer de ciertos medios para poder elegir entre dos o más cursos de acción posibles, basados en los datos iniciales, en entradas del usuario y/o en resultados calculados.

Iteración

El algoritmo debe disponer de ciertos medios para poder ejecutar de forma repetida un conjunto de instrucciones, ya sea por un número fijo de veces o hasta que se cumpla alguna condición lógica.

Informe de resultados o salida

El algoritmo debe disponer de ciertos recursos para poder informar al usuario los resultados que haya calculado, o poder solicitar datos adicionales del usuario.

Tipos de algoritmos

Algoritmo recursivo

Este algoritmo es muy interesante, porque se llama a sí mismo con un valor diferente como parámetro de entrada, que obtuvo luego de haber resuelto el parámetro de entrada anterior. Es decir, se llama a sí mismo repetidamente hasta que se resuelva el problema.

Problemas como la Torre de Hanoi o la búsqueda profunda de un grafo se pueden resolver fácilmente utilizando este tipo de algoritmos.

Algoritmo dividir y conquistar

En estos algoritmos, el mismo se divide en dos partes. En la primera parte se divide el problema en cuestión en sub-problemas más pequeños del mismo tipo. Igualmente, en la segunda parte se resuelven sus sub-problemas, combinando luego ambas partes para producir la solución final del problema.

Por ejemplo, con estos algoritmos se pueden realizar ordenaciones por combinación y ordenaciones rápidas.

Algoritmo de programación dinámica

Estos algoritmos funcionan recordando los resultados de la ejecución anterior y usándolos para encontrar nuevos resultados. Es decir, resuelven problemas complejos dividiéndolos en múltiples sub-problemas simples para luego ir resolviendo cada uno de ellos, almacenándolos luego para usarlos posteriormente.

Algoritmo de fuerza bruta

Este algoritmo busca ciegamente todas las soluciones posibles para encontrar una o más soluciones que puedan resolver una función. Se puede pensar en fuerza bruta como si se utilizaran todas las combinaciones posibles de números para abrir una caja fuerte.

Algoritmo de retroceso

Este algoritmo resuelve problemas de forma recursiva e intenta llegar a la solución de un problema solventando cada parte del mismo. Si falla la solución, se elimina y se retrocede para encontrar otra solución.

Es decir, este algoritmo resuelve un sub-problema, pero si esto no resuelve el problema total, deshace el último paso y comienza de nuevo para encontrar la solución al problema.

Ejemplos de algoritmos

Algoritmo recursivo

Este pseudocódigo encuentra el factorial de un número entero no negativo “N”, usando un algoritmo de recursividad:

Algoritmo de programación dinámica

La secuencia de Fibonacci es un buen ejemplo de algoritmo de programación dinámica. Se puede ver en este pseudocódigo:

– Si (N=0 o N=1), Fibonacci(N)= 0

– Si no, Fibonacci(N)= Fibonacci(N-1) + Fibonacci(N-2)

Algoritmo de retroceso

El problema de ajedrez de las 8 reinas es un buen ejemplo. Este problema establece que en un tablero de ajedrez están 8 piezas reinas y hay que colocarlas de tal manera que ninguna de las reinas esté en posición de atacar a cualquier otra después de organizadas.

Ejemplos varios

– Algoritmo para el diagnóstico del VIH.

– Los motores de búsqueda en Internet utilizan algoritmos patentados para mostrar los resultados más relevantes de su índice de búsqueda para consultas específicas.

– Las recetas, al igual que las ecuaciones matemáticas, son algoritmos.

– El correo electrónico sabe dónde enviar gracias a los algoritmos.

– El contenido que se ve en las redes sociales llega mediante algoritmos. De hecho, todo lo que se hace en la web es producto de algoritmos.

– Los videojuegos son narraciones algorítmicas.

– Las aplicaciones para teléfonos inteligentes son simplemente algoritmos.

– La mayoría de las transacciones financieras se realizan mediante algoritmos.

– Cada vez que se ordena una columna en una hoja de cálculo intervienen algoritmos.

Referencias

  1. Lee Rainie (2017). Code-Dependent: Pros and Cons of the Algorithm Age. Pew Research Center. Tomado de: pewresearch.org.
  2. Tech Terms (2020). Algorithm. Tomado de: techterms.com.
  3. Britannica (2020). Algorithm. Tomado de: britannica.com.
  4. Educba (2020). Types of Algorithms. Tomado de: educba.com.
  5. How to Geek (2016). What Are Computer Algorithms, and How Do They Work? Tomado de: howtogeek.com.
  6. How Stuff Works (2020). What is a computer algorithm? Tomado de: computer.howstuffworks.com.