Para demostrar la importancia de los algoritmos (por ejemplo, para estudiantes y profesores que no hacen teoría o incluso son de campos completamente diferentes), a veces es útil tener a mano una lista de ejemplos en los que se han implementado algoritmos centrales en empresas comerciales, gubernamentales, o software / hardware ampliamente utilizado.
Estoy buscando ejemplos que satisfagan los siguientes criterios:
El software / hardware que usa el algoritmo debería estar en uso ahora mismo.
El ejemplo debe ser específico. Proporcione una referencia a un sistema específico y un algoritmo específico.
Por ejemplo, en "el algoritmo X es útil para el procesamiento de imágenes" el término "procesamiento de imágenes" no es lo suficientemente específico; en "La búsqueda de Google usa algoritmos gráficos", el término "algoritmos gráficos" no es lo suficientemente específico.El algoritmo debe enseñarse en estudiantes universitarios o doctores típicos. clases en algoritmos o estructuras de datos. Idealmente, el algoritmo está cubierto en los libros de texto de algoritmos típicos. Por ejemplo, "el conocido sistema X usa un algoritmo poco conocido Y" no es bueno.
Actualizar:
Gracias de nuevo por las excelentes respuestas y enlaces! Algunas personas comentan que es difícil satisfacer los criterios porque los algoritmos centrales son tan generalizados que es difícil señalar un uso específico. Veo la dificultad Pero creo que vale la pena proponer ejemplos específicos porque, según mi experiencia, les digo a las personas: "¡Miren, los algoritmos son importantes porque están en todas partes !" No funciona.
Respuestas:
Los algoritmos que son el principal impulsor de un sistema son, en mi opinión, más fáciles de encontrar en cursos sin algoritmos por la misma razón por la que los teoremas con aplicaciones inmediatas son más fáciles de encontrar en matemáticas aplicadas que en cursos de matemáticas puras. Es raro que un problema práctico tenga la estructura exacta del problema abstracto en una conferencia. Para ser discutidor, no veo ninguna razón por la cual el material del curso de algoritmos de moda, como la multiplicación de Strassen, la prueba de primitiva AKS o el algoritmo Moser-Tardos sea relevante para problemas prácticos de bajo nivel de implementación de una base de datos de video, un compilador optimizador, un sistema operativo , un sistema de control de congestión de red o cualquier otro sistema. El valor de estos cursos es aprender que existen formas complejas de explotar la estructura de un problema para encontrar soluciones eficientes. Los algoritmos avanzados también es donde uno encuentra algoritmos simples cuyo análisis no es trivial. Por esta razón, no descartaría algoritmos aleatorios simples o PageRank.
Creo que puede elegir cualquier software grande y encontrar algoritmos básicos y avanzados implementados en él. Como estudio de caso, hice esto para el kernel de Linux y mostré algunos ejemplos de Chromium.
Estructuras de datos básicos y algoritmos en el kernel de Linux
Los enlaces son al código fuente en github .
B + Árboles con comentarios que te dicen lo que no puedes encontrar en los libros de texto.
Listas ordenadas por prioridad utilizadas para mutexes , controladores , etc.
Los árboles Radix se utilizan para la gestión de memoria , búsquedas relacionadas con NFS y funciones relacionadas con la red.
Montón de prioridad , que es literalmente, una implementación de libro de texto, utilizada en el sistema de grupo de control .
Funciones hash , con referencia a Knuth y a un documento.
Algunas partes del código, como este controlador , implementan su propia función hash.
Las matrices de bits , que se utilizan para lidiar con banderas, interrupciones, etc. y se presentan en Knuth Vol. 4)
Semáforos y cerraduras giratorias
La búsqueda binaria se utiliza para el manejo de interrupciones , la búsqueda de registro de caché , etc.
Búsqueda binaria con árboles B
Profundidad primera búsqueda y variante utilizada en la configuración del directorio .
La primera búsqueda de amplitud se utiliza para verificar la corrección del bloqueo en tiempo de ejecución.
La ordenación por fusión en listas vinculadas se utiliza para la recolección de basura , la administración del sistema de archivos , etc.
El ordenamiento de burbujas también se implementa asombrosamente en una biblioteca de controladores.
Knuth-Morris-Pratt coincidencia de cuerdas ,
Coincidencia de patrones de Boyer-Moore con referencias y recomendaciones sobre cuándo preferir la alternativa.
Estructuras de datos y algoritmos en el navegador web Chromium
Los enlaces son al código fuente en el código de Google . Solo voy a enumerar algunos. Sugeriría usar la función de búsqueda para buscar su algoritmo favorito o estructura de datos.
Bibliotecas de lenguaje de programación
Creo que vale la pena considerarlos. Los diseñadores de lenguajes de programación pensaron que valía la pena el tiempo y el esfuerzo de algunos ingenieros para implementar estas estructuras de datos y algoritmos para que otros no tuvieran que hacerlo. La existencia de bibliotecas es parte de la razón por la que podemos encontrar estructuras de datos básicas reimplementadas en software que está escrito en C pero no tanto para aplicaciones Java.
Algoritmos de asignación y programación
Me parecen interesantes porque, a pesar de que se denominan heurísticas, la política que utiliza dicta el tipo de algoritmo y la estructura de datos que se requieren, por lo que es necesario saber sobre pilas y colas.
Utilidades principales en sistemas * nix
Algoritmos Criptográficos
Esta podría ser una lista muy larga. Los algoritmos criptográficos se implementan en todo el software que puede realizar comunicaciones o transacciones seguras.
Compiladores
Compresión y procesamiento de imágenes
Aprendizaje de cláusulas controladas por conflictos
Desde el año 2000, el tiempo de ejecución de los solucionadores SAT en puntos de referencia industriales (generalmente de la industria del hardware, aunque también se utilizan otras fuentes) ha disminuido casi exponencialmente cada año. Una parte muy importante de este desarrollo es el algoritmo de aprendizaje de cláusulas controladas por conflictos que combina el algoritmo de propagación de restricciones booleanas en el documento original de Davis Logemann y Loveland con la técnica de aprendizaje de cláusulas que se originó en la programación de restricciones y la investigación de inteligencia artificial. Para modelos industriales específicos, SAT se considera un problema fácil ( vea esta discusión) Para mí, esta es una de las mejores historias de éxito en los últimos tiempos porque combina avances algorítmicos repartidos en varios años, ideas ingeniosas de ingeniería, evaluación experimental y un esfuerzo comunitario concertado para resolver el problema. El artículo del CACM de Malik y Zhang es una buena lectura. Este algoritmo se enseña en muchas universidades (he asistido a cuatro donde era el caso) pero generalmente en una clase de lógica o métodos formales.
Las aplicaciones de los solucionadores SAT son numerosas. IBM, Intel y muchas otras compañías tienen sus propias implementaciones de solucionador SAT. El administrador de paquetes en OpenSUSE también usa un solucionador SAT.
fuente
PageRank es uno de los algoritmos más conocidos. Desarrollado por el cofundador de Google, Larry Page y sus coautores, formó la base del motor de búsqueda original de Google y se le reconoce ampliamente por ayudarlos a lograr mejores resultados de búsqueda que sus competidores en ese momento.
Imaginamos un "surfista aleatorio" que comienza en alguna página web y hace clic repetidamente en un enlace aleatorio para llevarlo a una nueva página. La pregunta es: "¿Qué fracción del tiempo pasará el surfista en cada página?" Cuanto más tiempo pasa el surfista en una página, más importante se considera la página.
fuente
Mencionaría la implementación de software CPLEX (o similar) ampliamente utilizada del método / algoritmo Simplex para resolver problemas de programación lineal. Es el (?) Algoritmo más utilizado en economía e investigación operativa.
"Si uno tomara estadísticas sobre qué problema matemático está utilizando la mayor parte del tiempo de la computadora en el mundo, entonces (sin contar los problemas de manejo de la base de datos como ordenar y buscar) la respuesta probablemente sería la programación lineal " (L. Lovász, Un nuevo Algoritmo de programación lineal: ¿mejor o peor que el método simplex? Math. Intelligencer 2 (3) (1979/80) 141-146.)
El algoritmo Simplex también tiene una gran influencia en teoría; ver, por ejemplo, la Conjetura de Hirsch (Polinómica) .
Supongo que una licenciatura típica o un doctorado. La clase en algoritmos se ocupa del algoritmo Simplex (incluidos los algoritmos básicos de álgebra lineal como el Método de eliminación de Gauss).
(Otros algoritmos exitosos, incluido Quicksort para ordenar, se enumeran en Algoritmos del Libro ).
fuente
Según tengo entendido, el Programa nacional de emparejamiento de residentes fue durante mucho tiempo solo una aplicación directa del algoritmo Gale-Shapley para el problema del matrimonio estable. Desde entonces, se ha actualizado ligeramente para manejar algunos detalles adicionales como asignaciones conyugales (también conocido como "problema de dos cuerpos"), etc.
fuente
Si también incluye material de nivel de doctorado, muchos (¿la mayoría?) Programas de posgrado de CS incluyen algún curso de teoría de codificación. Si tiene un curso de teoría de la codificación, definitivamente cubrirá el código Reed-Solomon, que es esencial para el funcionamiento de los discos compactos y la codificación Huffman, que se utiliza en formatos de archivo JPEG, MP3 y ZIP. Dependiendo de la orientación del curso, también puede cubrir Lempel-Ziv, que se utiliza en el formato GIF. Personalmente, obtuve Lempel-Ziv en un curso de algoritmos de pregrado, pero creo que eso podría ser atípico.
fuente
GNU grep es una herramienta de línea de comando para buscar en uno o más archivos de entrada líneas que contengan una coincidencia con un patrón especificado. ¡Es bien sabido que grep es muy rápido! Aquí hay una cita de su autor Mike Haertel (tomada de aquí ):
fuente
De manera más general, el premio Kanellakis es otorgado por la ACM por precisamente esos descubrimientos teóricos que han tenido un gran impacto en la práctica.
El premio de 2012 es para el hashing sensible a la localidad , que se ha convertido en un método de referencia para la reducción de la dimensionalidad en la minería de datos para problemas cercanos al vecino (y es relativamente fácil de enseñar, al menos el algoritmo mismo)
fuente
Algunos ejemplos de usos industriales de estas estructuras de datos son:
Aquí también hay un sitio que recopila información sobre las aplicaciones de CountMin.
En cuanto a la enseñanza, sé que las técnicas básicas de dibujo se enseñan en Princeton en cursos de pregrado en matemáticas discretas. Me enseñaron el boceto CountMin en mi primer curso de algoritmos. En cualquier caso, el análisis de CountMin es más simple que el análisis de casi cualquier otro algoritmo aleatorio: es una aplicación directa de la independencia por pares y la desigualdad de Markov. Si este no es material estándar en la mayoría de los cursos de algoritmos, creo que es por razones históricas.
fuente
En la última década, los algoritmos se han utilizado para aumentar la cantidad (y la calidad, creo) de trasplantes de riñón a través de varios programas de igualación de donantes de riñón. He tenido problemas para encontrar las últimas noticias sobre esto, pero aquí hay al menos algunos consejos:
Tan recientemente como 2007, la Alianza para la Donación por Pares estaba utilizando un algoritmo de Abraham, Blum y Sandholm . Puede que todavía lo estén usando, pero no pude averiguarlo buscando en línea. Aunque este algoritmo seguramente no está cubierto en los cursos "estándar", combina varias ideas fundamentales que seguramente se enseñan en dichos cursos para proporcionar un algoritmo suficientemente bueno para un problema que es, en general, NP-complete (una variante de Cycle Cover )
El Registro Nacional del Riñón también utiliza algunos algoritmos estándar, incluido (en un punto) CPLEX. Esto condujo a una cadena de trasplantes realmente realizada que unía a 60 personas .
Este es uno de mis ejemplos favoritos no solo del éxito de los algoritmos, sino de la importancia de estudiar algoritmos para problemas de NP completo. Literalmente pueden salvar vidas , ¡y ya lo han hecho!
fuente
Algoritmo de Viterbi, que todavía se usa ampliamente en el reconocimiento de voz y en muchas otras aplicaciones: http://en.wikipedia.org/wiki/Viterbi_algorithm El algoritmo en sí es una programación dinámica básica.
De Wikipedia: "El algoritmo de Viterbi fue propuesto por Andrew Viterbi en 1967 como un algoritmo de decodificación para códigos convolucionales a través de enlaces de comunicación digital ruidosos. [1] El algoritmo ha encontrado una aplicación universal en la decodificación de los códigos convolucionales utilizados en celulares digitales CDMA y GSM, módems de acceso telefónico, comunicaciones satelitales, de espacio profundo y LAN inalámbricas 802.11. Ahora también se usa comúnmente en reconocimiento de voz, síntesis de voz, localización de palabras clave, lingüística computacional y bioinformática. Por ejemplo, en voz a texto (voz reconocimiento), la señal acústica se trata como la secuencia observada de eventos, y se considera que una cadena de texto es la "causa oculta" de la señal acústica. El algoritmo de Viterbi encuentra la cadena de texto más probable dada la señal acústica ".
fuente
fuente
Echa un vistazo al proyecto BonnTools de Jens Vygen para Chip Design. http://www.or.uni-bonn.de/~vygen/projects.html He escuchado algunas conversaciones sobre esto y también he visto algunos de sus documentos. Utilizan el redondeo aleatorio de estilo Raghavan-Thompson, así como el método de actualización de peso multiplicativo para resolver LP de flujo multicommodity a gran escala. Sin embargo, como cualquier gran proyecto, también necesitan hacer algo de ingeniería, pero la metodología se basa mucho en algoritmos bien conocidos.
fuente
Es curioso que vi esta pregunta hoy y luego, casualmente, hice clic en este enlace sobre los muchos usos de la Transformada de Fourier .
fuente
Estoy bastante sorprendido de que con todos los sofisticados algoritmos anteriores, nadie mencione la venerable familia de algoritmos de compresión Lempel-Ziv (inventada en 1977/78).
Actualizar
Aparentemente ya se mencionó brevemente.
fuente
La descomposición de valores singulares (SVD) tiene una fuerte conexión con el análisis estadístico de factores o el análisis de componentes principales y es comprensible dentro de una clase de estadística o álgebra lineal de pregrado, y tiene muchas propiedades teóricas importantes. También juega un papel en los algoritmos de compresión de imágenes. jugó un elemento clave en las entradas ganadoras en el concurso de premios de Netflix de $ 1M (una de las competencias de minería de datos más grandes del mundo en la historia) y ahora se implementa en su sitio para predecir las calificaciones de los usuarios. También se sabe que está muy relacionado con las redes neuronales autoorganizadas de Hebb que se originan en la teoría biológica.
También existe cierta conexión con el descenso de gradiente, que se usa ampliamente en aprendizaje automático y redes neuronales artificiales y como una técnica de optimización muy universalmente aplicada, en cuyo caso el método de Newton es una forma 2D básica. Hay un algoritmo de gradiente de descenso para obtener la SVD.
fuente
Encontrar un camino euleriano está en la base del ensamblaje del genoma, una tarea que se realiza comúnmente cuando se trabaja con genomas completos (en bioinformática, medicina, medicina forense, ecología).
ACTUALIZACIÓN Olvidé esta obvia: UPS, FedEx, USPS tienen que resolver grandes instancias de Problema de vendedor ambulante todas las noches. Ahorra mucho tiempo y dinero para que envíen a los conductores en una ruta óptima.
ACTUALIZACIÓN2 El problema del conjunto de vértices de retroalimentación mínima se utiliza para la resolución de puntos muertos en muchos sistemas operativos.
fuente
Me gusta este sistema para salvar el número máximo de vidas en el Reino Unido con trasplantes de riñón, basado en algoritmos de coincidencia máxima: donación de riñón emparejada y altruista . Emparejan a las personas que necesitan riñones que tienen un amigo / familiar no compatible dispuesto a donar, con otras personas en la misma situación, de manera máxima. Luego, el día de la donación, todos los donantes donan al mismo tiempo, seguido de un rápido transporte de riñones por todo el país a los receptores.
fuente
Vale la pena considerar este libro relativamente nuevo como una respuesta completa / detallada a la pregunta en forma conveniente, extendida / recopilada y que podría utilizarse como material complementario para una clase de algoritmos. [algunos de estos ya han sido mencionados; la fuerte superposición en sí misma es notable.]
Nueve algoritmos que cambiaron el futuro: las ingeniosas ideas que impulsan las computadoras de hoy por MacCormick
Otra referencia algo similar pero más teórica, The Best of the 20th Century: Editors Name Top 10 Algorithms Cipra / SIAM.
fuente
La búsqueda de cadenas Knuth-Morris-Pratt es ampliamente utilizada, específica y enseñada en CS de pregrado / posgrado.
fuente
Pensando en algoritmos muy básicos
Es bueno mostrar que aparecen en la vida real:
A. Muchos grupos usan un tipo de algoritmo de árbol de cobertura para comunicarse, al dividir las listas telefónicas de manera jerárquica entre las personas B. Los automóviles en una intersección generalmente usan un algoritmo round-robin (de manera voluntaria) C. La mayoría de los lugares, como bancos y hospital, organizan a sus clientes en un algoritmo FIFO
fuente
Un problema algorítmico fascinante surge en la aplicación médica de la tomografía computarizada. En la tomografía computarizada (TC), el cuerpo está expuesto a rayos X desde diferentes ángulos. En un extremo del escáner están los transmisores de rayos X y en el otro extremo los sensores. A partir de una serie de escaneos de este tipo, se reconstruye una imagen para que el médico la examine.
El algoritmo de retroproyección filtrada es la base para la reconstrucción de una imagen a partir de un conjunto de escaneos. Este algoritmo es en realidad una forma de un problema de aproximación en el que la "señal" se muestrea por debajo de la velocidad de Nyquist. Este algoritmo se usa "detrás de escena" en todos los hospitales y la proyección de filtro básica de nuevo utiliza matemática de pregrado como transformaciones de Fourier para lograr el Teorema de la rebanada de Fourier .
fuente
Un ejemplo de FFT
Una vez ayudé a portar un algoritmo FFT a un lenguaje de sistema diferente.
El algoritmo se estaba utilizando para determinar los saltos de línea en la entrega coaxial de televisión por cable / internet / teléfono. Básicamente, un técnico solicitaría que se enviara una señal a la casilla del cliente, al mismo tiempo que mostraría una visualización en tiempo real de las estadísticas para el cliente específico, como QoS, dB, ... El técnico podría usar los datos y un gráfico para determinar dentro de unos pocos pies entre la casa y el poste donde existió una ruptura parcial (o múltiples rupturas, como me dijeron).
Como se mencionó anteriormente, FFT se usa ampliamente, pero este fue uno de los más evidentes y obvios (en términos de por qué y cómo) que he visto en la práctica.
Lo siento, tuve que mantenerlo en un nivel alto.
fuente
El algoritmo de línea de Bresenham es el algoritmo más útil que he encontrado. Fácil de entender. Lo he usado para muchas aplicaciones, desde dibujos lineales hasta un complejo spliner para motor de fundición en 3D y un complejo renderizador de polígonos, así como también para complejos usos de animación y escalado.
fuente
Planificación de ruta personalizable (Daniel Delling, Andrew V. Goldberg, Thomas Pajor y Renato F. Werneck) http://research.microsoft.com/apps/pubs/default.aspx?id=145688
poderes Bing Maps: http://www.bing.com/blogs/site_blogs/b/maps/archive/2012/01/05/bing-maps-new-routing-engine.aspx
fuente
Wikipedia tiene una colección decente de algoritmos / aplicaciones clasificadas más o menos en una lista . Microsoft proporciona los principales documentos citados pero sin ninguna explicación explícita del área de la informática ni la aplicación. También hay una lista cronológica de diferentes conferencias de CS _http: //jeffhuang.com/best_paper_awards.html_ compilada por el profesor Huang.
El agrupamiento espectral es un algoritmo de agrupamiento elegante, conocido como algoritmo de cortes normalizados introducido por Jianbo Shi y Jitendra Malik para la segmentación de imágenes. También se ha desarrollado bien en aplicaciones de agrupación de datos, siendo una buena intersección entre las dos comunidades.
fuente
Otros dos ejemplos favoritos personales firmemente arraigados en la informática pero que pueden pasar fácilmente por alto los teóricos abstraccionistas, que han experimentado avances enormes / transformadores y han tenido un impacto práctico / aplicado de mayor a mayor en la vida cotidiana en las últimas décadas. Ya toda una generación ha crecido sin conocer el mundo sin ellos. básicamente la categoría de modelado y simulación .
algoritmos de simulación física . principalmente usando las leyes de Newton pero usando otras leyes (como la dinámica de fluidos). Se utiliza en una amplia variedad de aplicaciones que van desde aplicaciones de ingeniería, videojuegos y, a veces, películas. esto también es responsable de mejorar significativamente la seguridad, la eficiencia o la confiabilidad de, por ejemplo, automóviles y aviones sometiendo diseños virtuales / de prueba a tensiones simuladas. un área importante de investigación en curso relacionada con bioinformática con implicaciones masivas en biología, por ejemplo, diseño de fármacos, prevención de enfermedades, etc.: predicción de estructura / plegamiento de proteínas . También tenga en cuenta que este año el Premio Nobel de Química fue otorgado por simulación química a Karplus, Levitt, Warshel. los algoritmos de simulación física están altamente involucrados en la seguridad / prueba de armas nucleares por ejemplo, en los laboratorios de Los Alamos.
Raytracing / algoritmos CGI . esto comenzó como un tema de investigación hace solo unas décadas [un amigo obtuvo su maestría en algoritmos de trazado de rayos CS] pero se volvió muy aplicado, por ejemplo, en los juegos y el negocio de hacer películas, alcanzando niveles extraordinarios de verosimilitud que es responsable de grandes cantidades de efectos especiales en peliculas. Estas industrias literalmente han invertido miles de millones de dólares y utilizan estos algoritmos, y grandes corporaciones enteras se basan en su aprovechamiento, por ejemplo, Pixar . se utiliza principalmente en películas de ciencia ficción, por ejemplo, la técnica ahora está tan extendida que se usa de manera rutinaria incluso en películas "típicas". por ejemplo recientemente The Great Gatsby dependía en gran medida de los efectos CGI para dibujar ambientes convincentes o estilizados, retocar la película / personajes, etc.
fuente
Rosetta Code enumera los algoritmos aplicados por Tarea de programación (692) y por Lenguaje de programación (518) con Semantic MediaWiki.
fuente
quizás todos los algoritmos principales / preferidos de interés para esta audiencia se hayan mencionado en este punto. sin embargo, algunos más merecen mención por su integridad. Y aquí es relevante algún análisis de lo que se considera un algoritmo significativo.
En los campos de CS e IT parece haber un fenómeno notado hace mucho tiempo en la IA llamado "mover los postes" . Este es un fenómeno psicológico en el que el campo avanza relativamente rápido, pero las personas se adaptan mentalmente rápidamente a "la nueva normalidad" y toman avances reales o incluso innovadores como mundanos o poco notables en retrospectiva, después de logrados, es decir, minimizados o minimizados. Esto se capta altamente en esta pregunta en la forma en que los algoritmos pasan de la I + D al "despliegue". citando al autor de la pregunta en comentarios posteriores:
pero esto es problemático y básicamente es una redefinición centrada en TCS de la palabra "algoritmo". presumiblemente los algoritmos interesantes están avanzados. ¿eso significa que si un problema se reduce a un algoritmo avanzado, ya no es "interesante"? y "avanzado" es claramente un objetivo en movimiento. así que hay una manera de definir "algoritmos" de forma restringida o amplia . parece que la definición de TCS cambia en el contexto, pero tenga en cuenta que incluso en TCS, hay una tendencia hacia la definición amplia, por ejemplo, en la llamada "lente algorítmica" .
¡a veces los algoritmos más ubicuos también son los más pasados por alto! Internet y WWW es un gran entorno / casi ecología para algoritmos. todavía relativamente joven, con solo alrededor de 2 décadas (inventado ~ 1991), ha crecido de manera masiva y exponencial en un corto período de tiempo. El crecimiento del sitio WWW probablemente incluso ha superado la famosa ley exponencial de Moores.
Internet / WWW son compatibles con muchos algoritmos sofisticados. Internet tiene algoritmos de enrutamiento complejos integrados en los enrutadores (de nuevo alimentando a corporaciones multimillonarias como Cisco). alguna teoría avanzada es aplicable allí, por ejemplo, en algoritmos de enrutamiento . Estos algoritmos fueron objeto de investigación emergente, avanzada / de vanguardia hace décadas, sin embargo, ahora tan bien afinado y bien entendido que es algo invisible.
No debemos olvidar tan pronto que hace décadas, los principales investigadores ni siquiera estaban seguros de si el mundo de Internet funcionaba o si era posible (visto en la investigación inicial de cambio de paquetes, un nuevo patrón de diseño radical en el momento que se alejaba del cambio de circuito anterior), y Incluso hace unos años, existía el temor de que no se escalara en algún momento y comenzara a fallar debido a picos abrumadores en el volumen.
También utiliza detección / corrección de errores sofisticados . Internet probablemente sea el sistema más grande y tolerante a fallas jamás construido por humanos, aún en crecimiento.
A continuación, hay un caso sólido para hacer que los algoritmos que alimentan la WWW sean avanzados. Los servidores HTTP y web están altamente optimizados y también utilizan protocolos avanzados de seguridad / cifrado (HTTPS). La lógica de representación de una página web se ha vuelto extremadamente avanzada en HTML5 y CSS3 , junto con el lenguaje de programación Javascript .
el CSS relativamente nuevo tiene varios principios similares a la programación OOP , como la reutilización y la herencia. Hablando de composición tipográfica, TeX es un importante sistema de composición científica internamente complejo (no muy diferente a un lenguaje de programación) inventado por Knuth que ahora se puede representar en páginas web (y se utiliza en posiblemente cientos de miles de artículos científicos o más).
Otra área relativamente nueva de algoritmos que se construye en Internet, aún emergente, los basados en la inteligencia colectiva . El software stackexchange en sí mismo es un ejemplo de un sofisticado sistema de inteligencia colectiva. Las redes sociales también exhiben las características clave de la inteligencia colectiva y se agregan continuamente características para aumentar esa inteligencia (por ejemplo, los "Me gusta" de Facebook tienen solo unos pocos años). El campo de los sistemas de calificación se basa en algoritmos de filtrado colaborativos y sigue evolucionando en función de nuevas investigaciones y aplicaciones.
en resumen, todos los éxitos revolucionarios que transforman la experiencia humana diaria en realidad van mucho más allá de los "objetivos de campo". Como dice el título de la pregunta, todos los algoritmos centrales implementados . ahora tan ubicuo e invisible como para ser algo así como la expresión de TI, "parte de la fontanería".
fuente
Un algoritmo increíblemente exitoso (hardware) es el reinicio de encendido.
Sin un sistema por el cual una computadora está en un estado conocido cuando se aplica energía, nada más sucede correctamente .
El reinicio de encendido es la razón por la cual todo funciona que tenga una CPU, ya sea que se considere integrado o no.
La próxima vez que esté en el abrevadero para programadores y científicos de la computación, levante su vaso de refresco de cereza para reiniciar el encendido.
fuente