Los libros de texto de CLRS y algoritmos de su tipo enfocan su discusión casi exclusivamente en algoritmos donde se pueden probar fuertes garantías.
Hay muchos algoritmos que funcionan bien en la práctica, pero que se basan en heurísticas que no tienen garantías, o donde la garantía es débil o difícil de establecer.
Los métodos iterativos y de gradiente tienden a ser los últimos. Muchas veces, la única garantía que puede probar es que el método convergerá. Puede o no converger en algo agradable, donde “agradable” no siempre es tan fácil de definir (si estamos hablando de un problema de IA). E incluso si puede estar seguro de que convergerá en algo agradable, no sabe exactamente cuánto tiempo llevará. Incluso si puede decir algo sobre la tasa de convergencia, eso no se traduce exactamente en un tiempo de ejecución exacto. El tiempo de ejecución puede depender mucho de elegir una buena configuración de inicio, que depende de los datos. Conocer el peor tiempo de ejecución puede ser inútil si los algoritmos se ejecutan mucho más rápido en promedio. Pero calcular un tiempo de ejecución promedio de un caso puede ser extremadamente difícil. El análisis puede ser significativamente más complicado que el algoritmo en sí.
- ¿Cómo se ordenan las matrices para que los valores altos y bajos se distribuyan en diagonal?
- ¿Cuál es la diferencia entre binario, algoritmo y lenguaje de programación?
- ¿Cuál es la sobrecarga máxima en el algoritmo de relleno de bytes?
- ¿Cuáles son algunas formas diferentes de calcular la mediana de una matriz en Java?
- ¿Dónde puedo aprender los algoritmos de C ++ en línea?
Por esta razón, este tipo de métodos realmente no encajan bien en un libro como CLRS (además, hay muchos otros libros específicos del tema).