Tabla de contenidos
A menos que le gusten las matemáticas o la programación, la palabra «algoritmo» puede que le parezca griega, pero es uno de los componentes básicos de todo lo que está usando para leer este artículo. Aquí hay una explicación rápida de qué son y cómo funcionan.
Descargo de responsabilidad: no soy profesor de matemáticas o informática, por lo que no todos los términos que utilizo son técnicos. Eso es porque estoy tratando de explicar todo en un inglés sencillo para las personas que no se sienten muy cómodas con las matemáticas. Dicho esto, hay algunas matemáticas involucradas, y eso es inevitable. Geeks de las matemáticas, siéntase libre de corregir o explicar mejor en los comentarios, pero por favor, manténgalo simple para los que no están inclinados a las matemáticas entre nosotros.
Imagen de Ian Ruotsala
¿Qué es un algoritmo?
La palabra «algoritmo» tiene una etimología similar a «álgebra», excepto que se refiere al matemático árabe mismo, al-Khwarizmi (solo un dato interesante). Un algoritmo, para los no programadores entre nosotros, es un conjunto de instrucciones que toman una entrada, A, y proporcionan una salida, B, que cambia los datos involucrados de alguna manera. Los algoritmos tienen una amplia variedad de aplicaciones. En matemáticas, pueden ayudar a calcular funciones a partir de puntos en un conjunto de datos, entre cosas mucho más avanzadas. Aparte de su uso en la programación en sí, juegan un papel importante en cosas como la compresión de archivos y el cifrado de datos.
Un conjunto básico de instrucciones
Digamos que tu amigo se encuentra contigo en una tienda de comestibles y lo estás guiando hacia ti. Dices cosas como «entra por las puertas del lado derecho», «pasa la sección de pescado de la izquierda» y «si ves la lechería, me pasaste». Los algoritmos funcionan así. Podemos usar un diagrama de flujo para ilustrar instrucciones basadas en criterios que conocemos de antemano o que averiguamos durante el proceso.
(imagen titulada » Rutina para romper el hielo » EDITAR: cortesía de Trigger and Freewheel )
Desde el INICIO, seguiría el camino y, dependiendo de lo que suceda, seguirá el «flujo» hasta un resultado final. Los diagramas de flujo son herramientas visuales que pueden representar de manera más comprensible un conjunto de instrucciones utilizadas por las computadoras. De manera similar, los algoritmos ayudan a hacer lo mismo con más modelos basados en matemáticas.
Gráficos
Usemos una gráfica para ilustrar las diversas formas en que podemos dar instrucciones.
Podemos expresar este gráfico como una conexión entre todos sus puntos. Para reproducir esta imagen, podemos dar un conjunto de instrucciones a otra persona.
Método 1
Podemos representar esto como una serie de puntos, y la información seguiría la forma estándar del gráfico = {(x1, y1), (x2, y2),…, (xn, yn)}.
gráfico = {(0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1) }
Es bastante fácil trazar cada punto, uno tras otro, y conectarlos al punto anterior. Sin embargo, imagine una gráfica con mil puntos o múltiples segmentos yendo en todas direcciones. Esa lista tendría muchos datos, ¿verdad? Y luego tener que conectar cada uno, uno a la vez, puede ser un dolor.
Método 2
Otra cosa que podemos hacer es dar un punto de partida, la pendiente de la línea entre él y el siguiente punto, e indicar dónde esperar el siguiente punto usando la forma estándar de gráfico = {(punto de partida}, [m1, x1, h1 ],…, [Mn, xn, hn]}. Aquí, la variable ‘m’ representa la pendiente de la línea, ‘x’ representa la dirección en la que contar (ya sea xo y), y ‘h’ te dice cómo muchos para contar en dicha dirección También puede recordar trazar un punto después de cada movimiento.
gráfico = {(0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2.5, x, 2], [-3, x, 1], [-3, x, 1], [-3, x, 1]}
Terminarás con el mismo gráfico. Puede ver que los últimos tres términos de esta expresión son los mismos, por lo que es posible que podamos recortarlo simplemente diciendo «repítalo tres veces» de alguna manera. Digamos que cada vez que vea aparecer la variable ‘R’, significa que debe repetir lo último. Podemos hacer esto:
gráfico = {(0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2.5, x, 2], [-3, x, 1], [R = 2]}
¿Qué pasa si los puntos individuales realmente no importan, y solo el gráfico sí importa? Podemos consolidar esas tres últimas secciones así:
gráfico = {(0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2.5, x, 2], [-3, x, 3]}
Acorta las cosas un poco desde donde estaban antes.
Método 3
Intentemos hacerlo de otra manera.
y = 0, 0≤x≤3
x = 0, 0≤y≤3
y = x, 3≤x≤5
y = 2.5x-7.5, 5≤x≤7
y = -3x + 29, 7≤x≤ 8
y = -3x + 29, 8≤x≤9
y = -3x + 29, 9≤x≤10
Aquí lo tenemos en términos algebraicos puros. Una vez más, si los puntos en sí mismos no importan y solo el gráfico lo hace, podemos consolidar los últimos tres elementos.
y = 0, 0≤x≤3
x = 0, 0≤y≤3
y = x, 3≤x≤5
y = 2.5x-7.5, 5≤x≤7
y = -3x + 29, 7≤x≤ 10
Ahora bien, el método que elija dependerá de sus habilidades. Tal vez seas bueno con las matemáticas y la gráfica, así que eliges la última opción. Tal vez seas bueno navegando, así que eliges la segunda opción. Sin embargo, en el ámbito de las computadoras, estás realizando muchos tipos diferentes de tareas y la capacidad de la computadora no cambia realmente. Por lo tanto, los algoritmos están optimizados para las tareas que completan.
Otro punto importante a tener en cuenta es que cada método se basa en una clave. Cada conjunto de instrucciones es inútil a menos que sepa qué hacer con ellas. Si no sabe que se supone que debe trazar cada punto y conectar los puntos, el primer conjunto de puntos no significa nada. A menos que sepa lo que significa cada variable en el segundo método, no sabrá cómo aplicarlas, al igual que la clave de un cifrado. Esa clave también es una parte integral del uso de algoritmos y, a menudo, esa clave se encuentra en la comunidad o mediante un «estándar».
Compresión de archivo
Cuando descarga un archivo .zip, extrae el contenido para poder usar lo que contenga. Hoy en día, la mayoría de los sistemas operativos pueden sumergirse en archivos .zip como si fueran carpetas normales, haciendo todo en segundo plano. En mi máquina con Windows 95, hace más de una década, tuve que extraer todo manualmente antes de que pudiera ver algo más que los nombres de archivo dentro. Eso es porque lo que estaba almacenado en el disco como un archivo .zip no estaba en una forma utilizable. Piense en un sofá cama. Cuando quieras usarlo como cama, tienes que quitar los cojines y desplegarlo, lo que ocupa más espacio. Cuando no lo necesite, o quiera transportarlo, puede plegarlo nuevamente.
Los algoritmos de compresión se ajustan y optimizan específicamente para los tipos de archivos a los que están dirigidos. Los formatos de audio, por ejemplo, utilizan cada uno una forma diferente de almacenar datos que, cuando los decodifica el códec de audio, darán un archivo de sonido similar a la forma de onda original. Para obtener más información sobre esas diferencias, consulte nuestro artículo anterior, ¿Cuáles son las diferencias entre todos esos formatos de audio?Los formatos de audio sin pérdida y los archivos .zip tienen una cosa en común: ambos producen los datos originales en su forma exacta después del proceso de descompresión. Los códecs de audio con pérdida utilizan otros medios para ahorrar espacio en el disco, como recortar las frecuencias que no pueden ser escuchadas por los oídos humanos y suavizar la forma de onda en secciones para eliminar algunos detalles. Al final, si bien es posible que no podamos escuchar realmente la diferencia entre una pista de MP3 y una de CD, definitivamente hay un déficit de información en la primera.
Cifrado de datos
Los algoritmos también se utilizan para proteger datos o líneas de comunicación. En lugar de almacenar datos para que utilicen menos espacio en disco, se almacenan de una manera que otros programas no pueden detectar. Si alguien roba su disco duro y comienza a escanearlo, puede recoger datos incluso cuando elimine archivos porque los datos en sí todavía están allí, aunque la ubicación de reenvío haya desaparecido. Cuando los datos están encriptados, lo que se almacena no se parece a lo que es. Por lo general, parece aleatorio, como si la fragmentación se hubiera acumulado con el tiempo. También puede almacenar datos y hacer que aparezcan como otro tipo de archivo. Los archivos de imagen y de música son buenos para esto, ya que pueden ser bastante grandes sin generar sospechas, por ejemplo. Todo esto se hace mediante algoritmos matemáticos, que toman algún tipo de entrada y la convierten en otro tipo de salida muy específico.HTG explica: ¿Qué es el cifrado y cómo funciona?
Los algoritmos son herramientas matemáticas que proporcionan una variedad de usos en informática. Trabajan para proporcionar una ruta entre un punto de inicio y un punto final de manera coherente y proporcionan las instrucciones para seguirla. ¿Sabes más de lo que destacamos? ¡Comparte tus explicaciones en los comentarios!