Cómo los algoritmos dan forma a su vida digital: una guía para no programadores

7

Tocas una pantalla. Aparece el contenido. No viste que sucediera, pero alguien, o algo, decidió qué mostrarte.

Los algoritmos son los arquitectos invisibles de la Internet moderna. Dictan las clasificaciones de búsqueda, seleccionan las redes sociales y dirigen su tráfico. Pero ¿qué es un algoritmo en el mundo real, más allá de la jerga tecnológica?

En su forma más simple, un algoritmo es una receta paso a paso. Es un conjunto de instrucciones para resolver un problema o completar una tarea. Podría ser tan básico como sumar dos números o tan complejo como una red neuronal que reconoce tu rostro. Estas reglas son la columna vertebral de cada aplicación de software y garantizan que las tareas se ejecuten de manera eficiente. Son el “cómo” detrás del “qué”.

Para entender por qué esto es importante, debemos observar cómo funcionan realmente las computadoras.

La lógica del código paso a paso

Las computadoras son obedientes pero literales. No lo adivinan. Si quieres que una computadora haga algo, debes escribir un programa que le diga exactamente qué hacer, paso a paso. La computadora ejecuta estas instrucciones mecánicamente.

Cuando escribes ese programa, tienes que elegir el método. Ese método es el algoritmo. Es la técnica utilizada para realizar el trabajo.

Considere esto: un amigo llega al aeropuerto. Necesitan llegar a tu casa. Tienes cuatro algoritmos diferentes que pueden seguir. Cada uno los lleva al mismo destino, pero el camino es completamente diferente.

El algoritmo de taxi
* Dirígete a la parada de taxis.
* Sube a un taxi.
* Déle al conductor su dirección.

El algoritmo Llámame
* Llama a tu celular cuando aterrice el avión.
* Reunirse fuera del área de reclamo de equipaje.

El algoritmo de alquiler de coches
* Tome el transporte hasta el mostrador de alquiler.
*Alquilar un vehículo.
* Conduce mediante GPS hasta tu casa.

El algoritmo del autobús
* Tome el autobús número 70 fuera del área de recogida de equipaje.
* Traslado al autobús 14 en Main Street.
* Baje en Elm Street.
* Camine dos cuadras hacia el norte.

Los cuatro funcionan. Ninguno está “equivocado”. Pero difieren enormemente en costo y tiempo. El taxi es rápido pero caro. El autobús es barato pero lento. Tú eliges el algoritmo según las circunstancias.

En software, hacemos lo mismo. Elegimos la técnica que se ajuste a los datos, el tiempo y el presupuesto.

Por qué ordenar es más importante de lo que crees

En programación, suele haber muchas formas de resolver un solo problema. Cada camino tiene sus compensaciones. En ninguna parte esto es más evidente que en la clasificación.

Las computadoras dedican una gran cantidad de tiempo a ordenar listas. Nombres. Precios. Fechas. Resultados de la búsqueda. Si la clasificación es ineficiente, todo el sistema se ralentiza.

Los investigadores han estudiado algoritmos de clasificación durante décadas. Aquí hay cinco enfoques comunes:

  • Clasificación de contenedores
  • Combinar orden
  • Clasificación de burbujas
  • Clasificación de conchas
  • Clasificación rápida

¿Cuál usas?

Si tiene un millón de números enteros entre 1 y 10, la clasificación bin es la ganadora. Es rápido y sencillo para rangos pequeños. Si tiene un millón de títulos de libros, la clasificación rápida probablemente sea la mejor opción. Maneja mejor los datos no estructurados. Conocer las fortalezas y debilidades permite a los desarrolladores elegir la herramienta adecuada. Elija el incorrecto y su aplicación se sentirá lenta.

Los principales tipos de algoritmos

Los algoritmos no se tratan sólo de ordenar. Se dividen en categorías amplias según lo que intentan lograr. Desde el cifrado hasta el aprendizaje automático, el tipo de algoritmo define cómo se procesan los datos.

Algoritmos de búsqueda

Están diseñados para recuperar información de una estructura de datos. Piense en la búsqueda lineal (verificar cada elemento) o la búsqueda binaria (cortar la lista por la mitad repetidamente). Los motores de búsqueda y las consultas de bases de datos dependen en gran medida de estos para encontrar lo que usted escribió en milisegundos.

Algoritmos de programación dinámica

Este enfoque optimiza problemas complejos dividiéndolos en subproblemas más simples. Evita volver a calcular los mismos datos una y otra vez. Los ejemplos incluyen generar la serie de Fibonacci, resolver el problema de la mochila (maximizar el valor en una bolsa limitada) o encontrar el camino más corto en un gráfico, como con los algoritmos de Bellman-Ford o Floyd-Warshall.

Algoritmos codiciosos

Los algoritmos codiciosos toman la mejor opción local en cada paso. No miran el panorama general. Asumen que la mejor elección inmediata conduce al mejor resultado general. Esto funciona bien para problemas como encontrar el árbol de expansión mínimo en una red (algoritmos de Kruskal y Prim). Pero a veces, ser codicioso te lleva a un callejón sin salida.

Algoritmos de retroceso

Estos algoritmos, utilizados para satisfacer restricciones, crean candidatos paso a paso. Si un candidato no pasa una verificación, “retrocede” y prueba un camino diferente. Los solucionadores de Sudoku y el problema de N-Queens son ejemplos clásicos. Es esencialmente prueba y error con un recuerdo de errores pasados.

Algoritmos de aprendizaje automático

Estos permiten que las computadoras aprendan de los datos en lugar de seguir reglas codificadas. Predicen resultados o toman decisiones. Se subdividen en aprendizaje supervisado (entrenado con datos etiquetados), aprendizaje no supervisado (encontrar patrones en datos no etiquetados), aprendizaje por refuerzo (aprendizaje mediante recompensa/castigo) y aprendizaje profundo (usando redes neuronales).

Algoritmos aleatorios

A veces, el determinismo es demasiado lento. Los algoritmos aleatorios introducen la aleatoriedad en su lógica. Utilizan enfoques probabilísticos para resolver problemas en los que un método estricto paso a paso resulta ineficiente. El método Monte Carlo y el Randomized Quicksort son buenos ejemplos.

Algoritmos de fuerza bruta

Este es el enfoque de “probarlo todo”. La fuerza bruta explora sistemáticamente todas las soluciones posibles. Es sencillo. Garantiza una solución si existe. Pero para problemas grandes o complejos, es dolorosamente ineficiente. Es el equivalente digital de probar cada llave de un anillo hasta que una encaje.

Estas categorías se superponen. Un algoritmo puede ser tanto programación dinámica como codicioso en diferentes contextos. La clave es comprender las compensaciones.

El impacto humano

A menudo pensamos en los algoritmos como lógica fría. Ellos son. Pero también son espejos de nuestras elecciones. Cuando priorizamos la velocidad, conseguimos taxis. Cuando priorizamos el costo, obtenemos autobuses. Cuando priorizamos la precisión, podemos aceptar la lentitud.

En tu vida digital, rara vez ves el código. Sólo ves el resultado. El feed que entiende tu estado de ánimo. El mapa que evita el tráfico. El resultado de la búsqueda que responde a tu pregunta antes de que termines de escribir.

No es magia. Son solo pasos.

¿Pero quién decide los pasos? ¿Y quién decide el peso de cada paso?

Ésa es la verdadera pregunta.

La próxima vez que te desplaces, pregúntate: ¿qué algoritmo impulsa el espectáculo? ¿Y por qué eligió ese contenido por ti?

La respuesta podría cambiar la forma en que miras la pantalla.

Cómo los algoritmos traducen las entradas en resultados del mundo real

Un algoritmo es solo un conjunto de instrucciones. Se necesita información. Procesa esos datos. Escupe salida. El lenguaje en el que lo escribes (Python, C++, Java) no cambia la mecánica central. Es la lógica lo que importa. Y esa lógica siempre busca una solución óptima, incluso si “óptima” significa algo diferente según la tarea.

El resultado no siempre es un solo número o una respuesta de sí o no. Varía enormemente según el problema que el código intenta resolver.

Resolución de problemas y clasificación

Algunos algoritmos están diseñados para encontrar respuestas específicas. Piense en Google Maps calculando el camino más corto entre dos puntos. O un simple script que ordena una lista desordenada de números. Estos son resultados clásicos de resolución de problemas.

Pero en el aprendizaje automático, el resultado suele ser una decisión. Un filtro de spam no sólo clasifica los correos electrónicos; los clasifica. ¿Este correo electrónico es basura? Sí o no. Un motor de recomendaciones no solo enumera elementos. Decide qué productos es más probable que compre en este momento. Es tomar una decisión por ti.

Números, estructuras y elementos visuales

A veces el resultado es sólo un número bruto. Los algoritmos analizan ecuaciones para encontrar raíces. Calculan promedios estadísticos a partir de conjuntos de datos masivos. Otras veces, generan estructuras de datos. Un algoritmo de clasificación reorganiza una matriz. Un algoritmo gráfico identifica componentes conectados, esencialmente trazando relaciones dentro de una red.

Luego está el lado visual. Los algoritmos de gráficos por computadora toman datos numéricos sin procesar y los convierten en imágenes. Los motores de renderizado de videojuegos generan imágenes 2D a partir de modelos 3D. Sin estos algoritmos, los mundos en los que jugamos serían sólo líneas en una pantalla.

Texto, señales y acciones físicas

Los algoritmos de procesamiento del lenguaje natural producen texto. Generan respuestas similares a las humanas, traducen idiomas o resumen artículos extensos. Ya no es sólo código; es conversación.

En robótica y sistemas integrados, el resultado es físico. Los algoritmos envían señales a motores y actuadores. Podrían encender una luz. O podrían coordinar los complejos movimientos de un brazo robótico en una línea de montaje. La instrucción digital se convierte en una acción física.

El panorama general

Ya sea que esté identificando patrones, revisando datos iniciales o encontrando un proceso matemático, los algoritmos eficientes automatizan el trabajo pesado. Ellos manejan las entradas y variables para que usted no tenga que hacerlo.

La pregunta no es realmente cómo funcionan. Es lo que serán capaces de hacer a continuación.

Los algoritmos son parte integral de la forma en que los sistemas informáticos procesan los datos. La mayoría de los programas informáticos constan de algoritmos que siguen instrucciones específicas para realizar una tarea sencilla.

Este artículo se actualizó junto con la tecnología de inteligencia artificial, luego fue verificado y editado por un editor de HowStuffWorks.

Aquí te dejamos algunos enlaces interesantes:

  • Cómo la inteligencia artificial lo está cambiando todo por completo
  • whatis.com: algoritmo
  • Cómo funciona Java
  • Cómo funciona la programación en C
  • Cómo funcionan las PC
  • Cómo funciona el cifrado
  • Cómo funciona la compresión de archivos

Preguntas frecuentes sobre algoritmos

¿Qué es un algoritmo en términos simples?
Cuando le dices a una computadora qué hacer, también eliges cómo lo hace. Ese es el algoritmo. Es la técnica básica o el conjunto de instrucciones que se utilizan para realizar el trabajo.

¿Qué es un ejemplo de algoritmo?
Una receta es un ejemplo clásico. Es una lista finita de instrucciones. Un algoritmo puede ser más específico, pero el concepto es el mismo.

¿Cuáles son las tres partes de un algoritmo?
Entradas de datos. Proceso de datos. Salidas de datos. Pones algo, la máquina hace algo y tú sacas algo.

¿Cuál es el uso del algoritmo en la programación informática?
Los algoritmos son la columna vertebral del procesamiento de datos. La mayoría de los programas informáticos son simplemente colecciones de algoritmos que siguen instrucciones específicas para realizar tareas sencillas. Sin ellos no hay automatización. Sin lógica. Solo hardware en bruto esperando dirección.