En los términos más simples, ¿qué es un algoritmo? ¿Cual es su propósito?

Un algoritmo es, en los términos más simples, un conjunto de instrucciones para realizar una tarea.

Por ejemplo, suponga que desea tomar una lista de números sin ordenar y cambiarla en una lista ordenada de números. En otras palabras, cambie {2, 1, 6, 4} a {1, 2, 4, 6}. La forma en que elige hacer esto se llama ‘algoritmo’.

Por ejemplo, aquí hay una implementación (frágil) de un tipo de burbuja in situ.

vacío BubbleSort (int * myArray, int numElements) {
para (int i = 0; i <numElements – 1; i ++)
para (int j = i + 1; j <numElements; j ++)
if (myArray [j] <myArray [i]) {
int temp = myArray [i];
myArray [i] = myArray [j];
myArray [j] = temp;
}
}

Hay toneladas de opciones diferentes para los algoritmos de clasificación. La clasificación de burbujas es un clásico, ya que es fácil de escribir.

Tenga en cuenta que un algoritmo no tiene que ser código. Si tiene un conjunto de reglas que siempre sigue cuando juega al blackjack, por ejemplo, ese es su algoritmo para el blackjack.

Un algoritmo es la idea detrás de un programa de computadora: para cada programa debe saber qué debe calcular y qué instrucciones desea que realice para calcular correctamente estos resultados. La parte de “qué instrucciones” se llama algoritmo.

Por ejemplo, suponga que desea encontrar la ruta más corta en el mapa. Una de las ideas puede ser verificar cada ruta entre los puntos dados y elegir la más corta (sí, es una idea dolorosamente ineficaz, pero es “en los términos más simples”, por lo que decir cómo hacerlo mejor no es realmente interesante a este respecto – aunque la pregunta de cómo hacerlo mejor es de qué se trata la algorítmica). Ahora, uno puede implementar el programa que genera todas las rutas, calcula la longitud de cada una y devuelve la más corta, y puede hacerlo de muchas maneras diferentes. Pueden implementarlo en C ++ o Python, pueden implementarlo como un programa orientado a objetos o un procedimiento, pueden convertirlo en un sistema basado en la web o un programa de escritorio y así sucesivamente. Puede que ni siquiera escriban nada, pero realizan todas estas operaciones a mano.

Pero el núcleo del programa será el mismo. Cada uno de estos programas escritos en diferentes idiomas usando diferentes técnicas hará lo mismo: generar todas las rutas, calcular la longitud de cada una y devolver la representación de la más corta; en otras palabras, cada una de ellas implementa el mismo algoritmo. Y no importa cuán efectivas se hayan utilizado las técnicas para escribir todos estos programas y con qué rapidez se ejecutarán las computadoras, todos y cada uno de ellos serán extremadamente lentos y no serán utilizables para ningún propósito práctico, porque el algoritmo era demasiado malo.

Un algoritmo es una receta que proporciona un método para obtener algunos resultados, suponiendo algunos aportes / recursos. O puede considerarlo como una lista de cosas comprensibles y accionables para lograr algún objetivo.

En cuanto a cómo, cuándo y para qué usar algoritmos, bueno, los está usando todo el tiempo. Cuando haces un café o haces compras, estás ejecutando algunos algoritmos.

Por ejemplo, podría usar un algoritmo de compra:

Si bien quedan elementos en la lista de compras:
Intenta localizar el primer artículo
Si tiene éxito, ponga el artículo en su carrito de compras
Eliminar el elemento de la lista
Ir a la salida
Espere en la cola hasta que esté próximo a pagar
Si el monto total a pagar es
Superior al efectivo que tiene -> use tarjeta de débito
Baja … -> paga en efectivo

La entrada para este algoritmo es la lista de compras y la salida es un conjunto de artículos de la lista que estaban disponibles en la tienda.


Por supuesto, podría ser más detallado, porque los humanos y nuestro entorno somos muy complejos.

En cuanto a los algoritmos informáticos, los procesadores conocen un número muy limitado de operaciones, por lo que los algoritmos utilizados en la programación son precisos. Pero la conclusión es que no son más que secuencias de instrucciones comprensibles con algún propósito específico. Todo lo que haces en tu computadora usa algunos algoritmos para lograr tus objetivos, aunque la mayoría de esas cosas son invisibles para ti.