¿Qué algoritmos se usan con más frecuencia?
Escriba un solo algoritmo por respuesta, intente mantener su respuesta corta (una o dos líneas).
ds.algorithms
big-list
Kaveh
fuente
fuente
Respuestas:
¿La Transformada rápida de Fourier es el problema algorítmico resuelto la mayoría de las veces al día por sistemas informáticos reales? Tiene que estar cerca. Entonces nominaría el algoritmo FFT de Cooley-Tukey .
fuente
Multiplicación.
Quizás uno de los algoritmos más antiguos, no totalmente triviales, y un problema que se resuelve con más frecuencia que FFT.
fuente
Algoritmos de ruta más corta de Dijkstra y Bellman-Ford . Hay al menos 35,000 sistemas autónomos (AS) activos en Internet a partir de 2010. Cada AS ejecuta un protocolo de enrutamiento de estado de enlace (Dijkstra) o un protocolo de enrutamiento de vector de distancia (Bellman-Ford). Los enrutadores dentro de un AS generalmente actualizan sus tablas periódicamente cada pocos minutos, digamos 10.
Por lo tanto, el número de ejecuciones de Dijkstra & Bellman-Ford por día asciende a al menos 5 millones. Y eso es solo de los enrutadores.
No hemos contado los cálculos de rutas más cortas de Google Maps y los me gusta, que deberían representar fácilmente 10 veces más. Medio billón de ejecuciones al día no es descabellado.
fuente
Ordenación rápida
fuente
Búsqueda binaria
fuente
Creo que el algoritmo más utilizado es Parity Check (o tal vez CRC o algún tipo de código de corrección de errores), porque aparecen en cada acceso RAM.
fuente
Algoritmo simple : ¿no sigue siendo competitivo con los mejores métodos de puntos interiores? Si es así, tiene que usarse mucho.
fuente
En términos más generales, debe mirar a los ganadores del premio Kanellakis para obtener ideas que tengan peso teórico y práctico.
fuente
Coincidencia de expresiones regulares por conversión a autómatas finitos: creo que grep funciona en este sentido.
fuente
Profundidad primera búsqueda (DFS)
fuente
Es difícil pensar en algoritmos más utilizados que en las implementaciones modernas de TCP : es decir , evitar la congestión , retransmitir rápidamente . Aunque eso depende de cómo se determina qué cumple con los criterios para un algoritmo ...
fuente
Eliminación Gaussiana Esto todavía se usa en la práctica, ¿verdad? Si no, reemplácelo con lo que se use con más frecuencia para resolver sistemas lineales ...
fuente
SHA-1 (y funciones hash en general). Probablemente supere a la mayoría de los otros algoritmos en términos del número de ejecuciones.
fuente
Los algoritmos relacionados con el árbol B + se utilizan para las cosas de la base de datos
fuente
Algoritmos de programación. Son utilizados por cada dispositivo de usuario y servidor en todo el mundo. Se están utilizando una serie de variaciones, encontré muchas referencias para la "cola de comentarios multinivel"
fuente
Esta respuesta interpreta "con mayor frecuencia" en términos de ciclos de CPU reales.
Cuando estaba aprendiendo informática en los años 70, recuerdo haber leído que la gran mayoría de los ciclos de la computadora (léase: mainframe) estaban dedicados a la clasificación. Las aplicaciones comerciales exigen una amplia clasificación para análisis e informes. No creo que eso haya cambiado mucho, pero, por supuesto, el aumento de otras aplicaciones (correo electrónico, procesamiento de textos, etc.) debe haber alterado la combinación. Esos tipos suelen ser estables (no Quicksort) debido a la necesidad de ordenar sucesiones de campos para crear subsorts.
Estrictamente hablando, sin embargo, el algoritmo que se usa con más frecuencia es, sin lugar a dudas, lo que sea ejecutado por el proceso de espera del sistema de Windows cuando no sucede nada más ;-).
fuente
Spray Matrix Vector Multiply
... es el caballo de batalla computacional detrás de la solución de casi todos los sistemas lineales. Como resultado, se ejecuta cada vez
La mayoría de los FLOP en cualquier supercomputadora o clúster se gastan dentro de un vecino mate escaso.
fuente
El método de Newton Se usa para calcular raíces cuadradas, para la división de computación. Se puede usar para hacer programación lineal. En general, es el caballo de batalla de la optimización (convexa). Se puede usar para resolver ecuaciones diferenciales en Física minimizando la acción / energía.
fuente
Hashing y árboles rojo-negros.
Ya están implementados en STL (hash_map, map), y cada programador sabe que dicho contenedor es increíblemente conveniente siempre que desee almacenar información indexada por un tipo de datos arbitrario.
fuente
Algoritmos de corrección de errores, como Reed-Solomon.
http://en.wikipedia.org/wiki/Error-correcting_code#List_of_error-correcting_codes http://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction
fuente
Programación Dinámica .
Creo que DP se usa "con más frecuencia" que otros algoritmos citados en la encuesta hasta ahora. Infiero "más a menudo" en el sentido de con qué frecuencia un programador implementó un concepto de algoritmo no trivial en la vida real, en lugar de cuántas veces se invoca una implementación particular de un algoritmo.
DP es versátil y tiene muchas caras. A veces lo usé de manera inconsciente y luego me di cuenta de que estaba haciendo DP.
Por supuesto, hay cosas que son aún más comunes que el Programa dinámico, pero en su mayoría son estructuras de datos (matriz, lista vinculada, hash).
fuente
String Matching, utilizado todo el tiempo en software de aplicación y en el nivel de base de datos.
En el caso exacto, hay varios algoritmos bastante involucrados (KMP, Boyer-Moore) con algunos que alcanzan el tiempo de ejecución esperado sublineal. También son interesantes para estudiar desde un punto de vista de CS.
La coincidencia aproximada de cadenas, es decir, las alineaciones, es probablemente aún más interesante. ¿Conoces las características de "autocorrección"? Además, las búsquedas en datos de cadenas ruidosas (por ejemplo, ADN) se realizan mediante alineaciones.
fuente