¿Qué son los algoritmos informáticos y cómo funcionan?
A menos que te interesen las matemáticas o la programación, la palabra "algoritmo" podría ser griega para ti, pero es uno de los componentes básicos de todo lo que estás usando para leer este artículo. Aquí hay una explicación rápida de lo que 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 uso son técnicos. Eso es porque estoy tratando de explicar todo en un lenguaje sencillo para que las personas no se sientan cómodas con las matemáticas. Dicho esto, hay algunas matemáticas involucradas, y eso es inevitable. Geeks matemáticos, siéntase libre de corregir o explicar mejor en los comentarios, pero por favor, sea sencillo para los matemáticamente desincentivados entre nosotros..
Imagen por Ian Ruotsala
¿Qué es un algoritmo??
La palabra 'algoritmo' tiene una etimología similar a 'álgebra', excepto que se refiere al matemático árabe en sí, al-Khwarizmi (solo un dato interesante). Un algoritmo, para los que no son 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 otras cosas mucho más avanzadas. Además de su uso en la programación en sí, desempeñan roles importantes en cosas como la compresión de archivos y el cifrado de datos.
Un conjunto básico de instrucciones
Digamos que su amigo se encuentra con usted en una tienda de comestibles y lo está guiando hacia usted. Dices cosas como "entra por las puertas del lado derecho", "pasa la sección de peces a la izquierda" y "si ves la lechería, me pasas". Los algoritmos funcionan así. Podemos usar un diagrama de flujo para ilustrar instrucciones basadas en los criterios que conocemos de antemano o descubrir durante el proceso.
(Imagen titulada "Rutina para romper el hielo" EDIT: cortesía de Trigger and Freewheel)
Desde INICIO, irá por el camino y, dependiendo de lo que suceda, seguirá el "flujo" hacia un resultado final. Los diagramas de flujo son herramientas visuales que pueden representar más comprensiblemente 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.
Graficas
Usemos una gráfica para ilustrar las diferentes maneras en que podemos dar direcciones.
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 de graph = (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 que van en todos los sentidos. 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 inicio, la pendiente de la línea entre él y el siguiente punto, e indicar dónde esperar el siguiente punto utilizando la forma estándar de graph = (punto de inicio, [m1, x1, h1 ],…, [Mn, xn, hn]. Aquí, la variable 'm' representa la pendiente de la línea, 'x' representa la dirección para contar (si x o 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 la misma gráfica. Puede ver que los últimos tres términos en esta expresión son los mismos, por lo que podemos recortar eso simplemente diciendo "repetir eso tres veces" de alguna manera. Digamos que cada vez que vea aparecer la variable 'R', significa 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 no importan realmente, y solo lo hace el gráfico? 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 un poco las cosas de donde estaban antes..
Método 3
Tratemos de hacer esto 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í no importan y solo lo hace el gráfico, 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, el método que escojas depende de tus habilidades. Tal vez eres genial con las matemáticas y los gráficos, 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 diferentes tipos de tareas y la capacidad de la computadora realmente no cambia. Por lo tanto, los algoritmos están optimizados para las tareas que realizan.
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 debe trazar cada punto y conectar los puntos, el primer conjunto de puntos no significa nada. A menos que sepa qué significa cada variable en el segundo método, no sabrá cómo aplicarlas, como 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 descargas un archivo .zip, extraes el contenido para que puedas usar lo que esté dentro de él. 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 poder ver algo más que los nombres de archivo que contenía. Esto se debe a que lo que estaba almacenado en el disco como un archivo .zip no estaba en una forma utilizable. Piensa en un sofá desplegable. Cuando quieras usarlo como cama, debes quitar los cojines y desplegarlos, lo que ocupa más espacio. Cuando no lo necesite o desee 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 una forma diferente de almacenar datos que, una vez descodificados por el códec de audio, proporcionará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 el recorte de frecuencias que no pueden ser escuchados 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 use menos espacio en el disco, se almacena de una manera que otros programas no pueden detectar. Si alguien roba su disco duro y comienza a escanearlo, puede recoger datos incluso cuando borra archivos porque los datos en sí siguen allí, incluso aunque la ubicación de reenvío haya desaparecido. Cuando los datos están encriptados, lo que se almacena no parece 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 los archivos de música son buenos para esto, ya que pueden ser bastante grandes sin sospechar, por ejemplo. Todo esto se realiza mediante el uso de algoritmos matemáticos, que toman algún tipo de entrada y la convierten en otro tipo de salida muy específico. Para obtener más información sobre cómo funciona el cifrado, consulte Explicaciones de HTG: ¿Qué es el cifrado y cómo funciona??
Los algoritmos son herramientas matemáticas que proporcionan una variedad de usos en ciencias de la computación. Trabajan para proporcionar una ruta entre un punto de inicio y un punto final de una manera consistente, y proporcionan las instrucciones para seguirlo. ¿Sabes más de lo que destacamos? Comparte tus explicaciones en los comentarios.!