stringtranslate.com

Técnica algorítmica

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]

Técnicas generales

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]

Fuerza bruta

La fuerza bruta es una técnica simple y exhaustiva que evalúa todos los resultados posibles para encontrar una solución. [4]

Divide y vencerás

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]

Dinámica

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]

Evolutivo

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]

Recorrido de gráficos

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]

Avaro

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]

Heurístico

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]

Aprendiendo

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]

Optimización matemática

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]

Modelado

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]

Recursión

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]

Ventana corrediza

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.

Véase también

Notas

  1. ^ "técnica | Definición de técnica en inglés según Oxford Dictionaries". Oxford Dictionaries | Inglés . Archivado desde el original el 28 de septiembre de 2016 . Consultado el 23 de marzo de 2019 .
  2. ^ Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2001). Introducción a los algoritmos. Prensa del MIT. pag. 9.ISBN 9780262032933.
  3. ^ Skiena, Steven S. (1998). Manual de diseño de algoritmos: texto. Springer Science & Business Media. ISBN 9780387948607.
  4. ^ "¿Qué es la fuerza bruta? Definición de Webopedia". www.webopedia.com . 30 de marzo de 1998. Consultado el 23 de marzo de 2019 .
  5. ^ Bentley, Jon Louis; Shamos, Michael Ian (1976). "Divide y vencerás en el espacio multidimensional". Actas del octavo simposio anual de la ACM sobre teoría de la computación - STOC '76 . STOC '76. Nueva York, NY, EE. UU.: ACM. págs. 220–230. doi :10.1145/800113.803652. S2CID  6400801.
  6. ^ Bellman, Richard (1 de julio de 1966). "Programación dinámica". Science . 153 (3731): 34–37. Bibcode :1966Sci...153...34B. doi :10.1126/science.153.3731.34. ISSN  0036-8075. PMID  17730601. S2CID  220084443.
  7. ^ Coello Coello, Carlos A. (1999-08-01). "Un estudio exhaustivo de las técnicas de optimización multiobjetivo basadas en la evolución". Conocimiento y sistemas de información . 1 (3): 269–308. doi :10.1007/BF03325101. ISSN  0219-3116. S2CID  195337963.
  8. ^ Kumar, Nitin; Wayne, Kevin (1 de febrero de 2014). Algoritmos. Addison-Wesley Professional. ISBN 9780133799101.
  9. ^ "algoritmo codicioso". xlinux.nist.gov . Consultado el 23 de marzo de 2019 .
  10. ^ "heurística". xlinux.nist.gov . Consultado el 23 de marzo de 2019 .
  11. ^ Witten, Ian H.; Frank, Eibe; Hall, Mark A.; Pal, Christopher J. (1 de octubre de 2016). Minería de datos: herramientas y técnicas prácticas de aprendizaje automático. Morgan Kaufmann. ISBN 9780128043578.
  12. ^ Marler, RT; Arora, JS (1 de abril de 2004). "Estudio de métodos de optimización multiobjetivo para ingeniería". Optimización estructural y multidisciplinaria . 26 (6): 369–395. doi :10.1007/s00158-003-0368-6. ISSN  1615-1488. S2CID  14841091.
  13. ^ Skiena, Steven S. (1998). Manual de diseño de algoritmos: texto. Springer Science & Business Media. ISBN 9780387948607.
  14. ^ "recursión". xlinux.nist.gov . Consultado el 23 de marzo de 2019 .
  15. ^ "Programación - Recursión". www.cs.utah.edu . Consultado el 23 de marzo de 2019 .

Enlaces externos