El código de este artículo se puede encontrar en este carpeta GitHub.
ohUno de mis profesores favoritos a lo largo de mis estudios me dijo esto:
«El hecho de que su algoritmo sea ineficiente no significa que el problema sea duro«
Esto significa que si quieres resolver cualquier problema (fácil o difícil), siempre habrá un enfoque que sea lo suficientemente ingenuo como para ser extremadamente ineficiente. Por ejemplo, digamos que tienes que ir a trabajar a un nuevo lugar de trabajo. En lugar de utilizar Google Maps, comienzas desde el callejón de tu casa y pruebas todas las combinaciones posibles de calles (norte, sur, oeste y este). Para cuando llegue a trabajar, es posible que su empresa se esté declarando en quiebra o que lo despidan.
Intentemos ser un poco más formales. Digamos que en cualquier entorno empresarial o de ingeniería, hay que encontrar la mínimo o máximo de una función. Por ejemplo, su empresa tiene que maximizar los ingresos de las ventas de un departamento determinado. A esta función la llamamos F. Los “hilos” que mueves, es decir, los decisiones que puedes tomar para maximizar los ingresos es un vector incógnita. Obviamente no puedes…