¿Cuál es el papel de los algoritmos en la programación web? Si tiene un papel importante, ¿cómo puede ser útil un algoritmo?

El algoritmo de la palabra deriva del nombre del matemático, Mohammed ibn-Musa al-Khwarizmi, que formó parte de la corte real de Bagdad y que vivió entre 780 y 850. El trabajo de Al-Khwarizmi es la fuente probable de la palabra álgebra como bien.

El desarrollo web ya no es menos complejo que otros dominios de ingeniería de software. Cada disciplina requiere un conocimiento específico, pero para resolver problemas, un desarrollador necesita comprender el panorama general y, en última instancia, saber cómo funcionan las computadoras.

Esos brillantes programadores, CLRS, autores de Introducción a los algoritmos definen algoritmos de esta manera simple:

Por lo tanto, un algoritmo es una secuencia de pasos computacionales que transforman la entrada en la salida.

En resumen, un algoritmo podría ser una función simple que toma un conjunto de parámetros como entrada y devuelve una salida . Es importante comprenderlos porque los algoritmos a menudo determinan la rapidez con la que se ejecuta un sistema.

Por ejemplo, una base de datos puede buscar miles de elementos en unos pocos milisegundos porque ciertos algoritmos que usan se ejecutan en tiempo logarítmico .

Algoritmo de adición simple

Considere este algoritmo de suma simple como un ejemplo para analizar:

// Algoritmo de adición
función add ($ x, $ y) {
devolver $ x + $ y;
}

Analizar este algoritmo es sencillo. La función toma dos parámetros $x y $y como entrada y devuelve su suma como salida . Francamente, este algoritmo es simple; por lo tanto, no nos interesa.

Lo que nos importa en los algoritmos es su complejidad .

La complejidad también se conoce como tiempo de ejecución y crecimiento, como el tiempo logarítmico descrito para las bases de datos.

Los bucles agregan complejidad

Algunas de las estructuras de control más importantes para los desarrolladores web son los bucles. Los bucles solo agregan una cantidad significativa de complejidad al algoritmo; específicamente, generalmente son de complejidad lineal .

// Devuelve la suma de todos los elementos en una matriz
función running_sum ($ arr) {
$ suma = 0;
para ($ i = 0; $ i <sizeof ($ arr); $ i ++) {
$ suma + = $ i;
}
devolver $ suma;
}

Este algoritmo se ha vuelto más complejo pero aún es manejable para el análisis. Es fácil ver ahora que la entrada es una matriz y la salida es la suma de todos los elementos en la matriz especificada.

Además de entrada y salida, analizamos algoritmos basados ​​en su complejidad . La complejidad considera cómo se escala el algoritmo con un tamaño de entrada específico. En el ejemplo anterior, el ciclo for itera de $i a sizeof($arr) ; en consecuencia, el número de iteraciones es uno a uno con el número de elementos. Llamamos a este tipo de complejidad lineal .

El crecimiento lineal simplemente significa que el algoritmo es un poco más lento que el algoritmo de suma debido a la cantidad de entradas consideradas.

Los algoritmos solo son comparables si comparten una entrada y salida común; por lo tanto, add($x, $y) y running_sum($arr) no son comparables.

Complejidad creciente con bucles anidados

Ahora debe tener curiosidad acerca de cómo se hacen los algoritmos increíblemente complejos . Aquí hay un método realmente fácil: anidar los bucles.

// Imprime todas las publicaciones de una variedad de foros
función printAllPosts ($ foros) {
foreach ($ foros como $ foro) {
foreach ($ hilos como $ hilo) {
foreach ($ publicaciones como $ publicaciones) {
echo $ post;
}
}
}
}

Llamamos a tales polinomios de crecimiento anidados en lugar de lineales. Considere cada bucle foreach como un algoritmo lineal que procesa los elementos f [matemática] f [/ matemática], t [matemática] t [/ matemática] y p [matemática] p [/ matemática] respectivamente. Al anidar nuestros bucles lineales, procesamos elementos p [math] p [/ math] varias veces por bucle, de modo que los elementos ftp [math] ftp [/ math] se procesan al final del algoritmo. En consecuencia, también podemos llamar a este algoritmo cúbico para procesar elementos ftp [math] ftp [/ math].

El truco aquí para analizar la complejidad del algoritmo es contar el número de bucles for anidados. Lo más probable es que cuanto más anidación tenga, más lento se vuelve su algoritmo; por el contrario, cuanto menos anidación tenga, más rápido se volverá su algoritmo.

Por lo tanto, cuando se enfrenta a una elección entre tres bucles o un bucle para una función, es más probable que el bucle sea más rápido.

Francamente, analizar algoritmos es complejo

Por lo tanto, no me sumergiré en detalles más profundos más allá del alcance del análisis de bucles anidados. Hemos descubierto que los bucles anidados son un signo de código lento; sin embargo, esto puede no ser siempre el caso.

En este libro, Algorithms of the Intelligent Web muestra a los lectores cómo usar las mismas técnicas empleadas por nombres conocidos como Google Ad Sense, Netflix y Amazon para transformar los datos sin procesar en información procesable. Es un modelo orientado a ejemplos para crear aplicaciones que recopilan, analizan y actúan sobre las cantidades masivas de datos que los usuarios dejan a su paso mientras usan la web. Los lectores aprenden a construir motores de recomendación al estilo de Netflix y cómo aplicar las mismas técnicas a los sitios de redes sociales. Vea cómo el análisis de seguimiento de clics puede generar rotaciones de anuncios más inteligentes. Todos los ejemplos están diseñados tanto para ser reutilizados como para ilustrar una técnica general, un algoritmo, que se aplica a una amplia gama de escenarios.

Qué hay adentro

  • Introducción al aprendizaje automático.
  • Extrayendo estructura de datos
  • Aprendizaje profundo y redes neuronales.
  • Cómo funcionan los motores de recomendación

Sobre el lector

Se asume el conocimiento de Python.

Descargas gratis :

  1. http://hackerspace.cs.rutgers.edu/library/Bioloid/plans/AlgorithmsIntelligentWeb.pdf
  2. https://sisis.rz.htw-berlin.de/i…
  3. http://marcelina.userengage.io/a…

Debería leer este artículo: Una introducción suave a los algoritmos para desarrolladores web.

Vale la pena entender la línea: un algoritmo es, por lo tanto, una secuencia de pasos computacionales que transforman la entrada en la salida.

Los algoritmos se vuelven importantes en el desarrollo web cuando tienes muchos datos que tienes que procesar o cuando estás realizando transformaciones complicadas en esos datos.

También eche un vistazo aquí: para desarrolladores web, ¿cuáles son algunas aplicaciones del mundo real que implementan algoritmos complejos? • programación de r / learn