Veamos el futuro dentro de 30 años. Seamos optimistas y asumamos que las áreas relacionadas con el aprendizaje automático continúan desarrollándose tan rápido como lo que hemos visto en los últimos 10 años. Eso sería genial, pero ¿cuál sería el papel de los algoritmos tradicionales en un futuro así?
Aquí, mediante "algoritmos tradicionales", me refiero al proceso habitual que seguimos en TCS: formalizar un problema computacional bien definido , diseñar algoritmos para resolver el problema y probar garantías formales de rendimiento .
Ahora, ¿cuáles son las áreas de aplicación en las que debemos usar el diseño y análisis de algoritmos tradicionales también en el futuro, y es muy poco probable que cualquier avance del aprendizaje automático haga que los algoritmos tradicionales sean irrelevantes?
Al principio, esto puede parecer una pregunta tonta: ¡Por supuesto que tendremos que poder ordenar, buscar, indexar, etc. también en el futuro! Por supuesto, tendremos que ser capaces de hacer transformadas de Fourier de manera eficiente, multiplicar matrices grandes, encontrar caminos más cortos, resolver problemas de optimización lineal.
Pero, una vez más, una vez que comienzas a profundizar en las aplicaciones en las que tradicionalmente utilizamos los algoritmos que diseñamos, no está del todo claro que el diseño y análisis de algoritmos tradicionales sea la respuesta correcta a tales problemas: en aplicaciones relacionadas con la búsqueda , generalmente estamos interesados en encontrar algo que coincida estrechamente con un ser humano en un sentido vago mal definido (por ejemplo, similitud semántica), no algo que sea óptimo en algún sentido matemático (por ejemplo, distancia mínima de edición). En aplicaciones relacionadas con la planificación de rutas, generalmente estamos interesados en encontrar rutas que sean buenas en base a ejemplos (por ejemplo, otras personas lo prefieren), no rutas que sean óptimas en algún sentido matemático (por ejemplo, la distancia más corta o el precio más barato). Y una vez que tenga algún componente humano vago y mal definido en la imagen, podría ser el caso de que es mejor tratar de enseñarle a la computadora a producir buenas respuestas basadas en ejemplos, en lugar de intentar que aparezca un investigador de TCS con un problema computacional formal que podemos abordar mediante el diseño y análisis de algoritmos tradicionales.
Entonces, ¿cuáles son las áreas de aplicación (preferiblemente aplicaciones industriales reales y directas) en las que está absolutamente claro que lo que hemos estado haciendo en algoritmos en el pasado también será la forma correcta (y la única forma posible) de avanzar en el ¿futuro?
Los algoritmos que se usan como subrutinas en las técnicas de aprendizaje automático parecen ser un candidato obvio a prueba de futuro, pero esto depende en gran medida de la técnica particular de aprendizaje automático que usemos, y como hemos visto en los últimos diez años, esto podría cambiar rápidamente .