En matemáticas y ciencias de la computación , una técnica algorítmica [1] es un enfoque general para implementar un proceso o cálculo . [2]
Existen varias técnicas algorítmicas ampliamente reconocidas que ofrecen un método o proceso comprobado para diseñar y construir algoritmos. Se pueden utilizar diferentes técnicas según el objetivo, que pueden incluir búsqueda , ordenación , optimización matemática , satisfacción de restricciones , categorización , análisis y predicción . [3]
La fuerza bruta es una técnica simple y exhaustiva que evalúa todos los resultados posibles para encontrar una solución. [4]
La técnica de dividir y vencer descompone problemas complejos de forma recursiva en subproblemas más pequeños. Luego se resuelve cada subproblema y estas soluciones parciales se recombinan para determinar la solución general. Esta técnica se utiliza a menudo para buscar y ordenar. [5]
La programación dinámica es una técnica sistemática en la que un problema complejo se descompone recursivamente en subproblemas más pequeños y superpuestos para su solución. La programación dinámica almacena los resultados de los subproblemas superpuestos de forma local mediante una técnica de optimización denominada memorización . [6]
Un enfoque evolutivo desarrolla soluciones candidatas y luego, de manera similar a la evolución biológica, realiza una serie de alteraciones aleatorias o combinaciones de estas soluciones y evalúa los nuevos resultados en relación con una función de aptitud. Los resultados más adecuados o prometedores se seleccionan para iteraciones adicionales, a fin de lograr una solución óptima general. [7]
El recorrido de grafos es una técnica para encontrar soluciones a problemas que se pueden representar como grafos . Este enfoque es amplio e incluye la búsqueda en profundidad , la búsqueda en amplitud , el recorrido de árboles y muchas variaciones específicas que pueden incluir optimizaciones locales y excluir espacios de búsqueda que se puedan determinar como no óptimos o no posibles. Estas técnicas se pueden utilizar para resolver una variedad de problemas, incluidos los problemas de ruta más corta y de satisfacción de restricciones. [8]
Un enfoque voraz comienza evaluando un resultado posible del conjunto de resultados posibles y luego busca localmente una mejora de ese resultado. Cuando se encuentra una mejora local, repetirá el proceso y buscará nuevamente localmente mejoras adicionales cerca de este óptimo local. Una técnica voraz generalmente es fácil de implementar y esta serie de decisiones se puede utilizar para encontrar óptimos locales dependiendo de dónde comenzó la búsqueda. Sin embargo, las técnicas voraces pueden no identificar el óptimo global en todo el conjunto de resultados posibles. [9]
Un enfoque heurístico emplea un método práctico para llegar a una solución inmediata que no tiene garantía de ser óptima. [10]
Las técnicas de aprendizaje emplean métodos estadísticos para realizar la categorización y el análisis sin programación explícita. En esta categoría se incluyen el aprendizaje supervisado , el aprendizaje no supervisado , el aprendizaje por refuerzo y las técnicas de aprendizaje profundo . [11]
La optimización matemática es una técnica que se puede utilizar para calcular un óptimo matemático minimizando o maximizando una función. [12]
El modelado es una técnica general para abstraer un problema del mundo real en un marco o paradigma que ayuda a encontrar la solución. [13]
La recursión es una técnica general para diseñar un algoritmo que se llama a sí mismo con una parte progresivamente más simple de la tarea hasta uno o más casos base con resultados definidos. [14] [15]
El deslizamiento de ventana se utiliza para reducir el uso de bucles anidados y reemplazarlo con un solo bucle, reduciendo así la complejidad del tiempo.