¿Cuáles son algunas de las aplicaciones prácticas de los algoritmos de aproximación?

Normalmente diseñamos algoritmos de aproximación para problemas NP-hard o NP-complete. ¿Por qué? Calcular la solución óptima puede llevar demasiado tiempo. Entonces, la idea es diseñar un algoritmo que sea eficiente y que también produzca una solución dentro de un límite demostrablemente bueno (llamado factor de aproximación / relación de aproximación ).

Esto es bastante diferente de la heurística, donde es posible que no tenga ninguna garantía sobre la calidad de la solución. Por lo tanto, esto proporciona una vía o enfoque para manejar problemas difíciles de resolver cuando desea la respuesta rápidamente. Si le importa mucho la calidad de la solución, esto es algo invaluable.

Dependiendo del problema, un algoritmo de aproximación debería ser suficiente en la práctica si es muy eficiente (especialmente si garantiza respuestas muy cercanas a las óptimas).

Los problemas que caen bajo NP se resuelven usando soluciones aproximadas. Por ejemplo, los algoritmos evolutivos no garantizan óptimos globales. Y la mayoría de las veces, ni siquiera nos importa.

La forma más simple de aproximación es tratar de encontrar un elemento en una matriz cuya frecuencia se sepa que es mayor al 50%.

Elija aleatoriamente un elemento una vez: posibilidades de éxito = 50%
Elige aleatoriamente un elemento dos veces: posibilidades de éxito = 75%
Elige un elemento al azar 10 veces: posibilidades de éxito> 99%

¿Qué sucede si ejecutó esta función en miles de matrices y no le importaron algunos resultados incorrectos? En lugar de una solución O (M * N) donde M es el tamaño de una matriz, tiene una solución O (N).