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:
- ¿Cuáles son los "patrones de diseño de desarrollo web" que cree que todo desarrollador web debe saber?
- ¿Puedo usar Cloudflare para mi sitio web de red social?
- ¿Cuál es la diferencia entre una API, una biblioteca y un marco?
- ¿Puede Angular 4 funcionar bien para aplicaciones que crecen?
- ¿Cuál es mi mejor camino para construir un buen sitio web para mi empresa cuando parece que si lo elimino, termino haciendo la mayor parte del trabajo de todos modos?
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)
yrunning_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 :
- http://hackerspace.cs.rutgers.edu/library/Bioloid/plans/AlgorithmsIntelligentWeb.pdf
- https://sisis.rz.htw-berlin.de/i…
- http://marcelina.userengage.io/a…