Informática: ¿Cuál es el futuro de la investigación en algoritmos?

Como investigador de TCS, estoy totalmente en desacuerdo con su afirmación de que todos los “algoritmos realmente importantes y prácticos” se descubrieron en los años 60-90. Debe tener en cuenta que el advenimiento de gran parte de la teoría que utiliza CS se produjo a fines de los años 50 y principios de los 60, por lo que coincide con el inicio de su intervalo (si no cuento el trabajo fundamental de los lógicos). No es de extrañar, la optimización combinatoria alrededor de ese mismo tiempo, que (es mi campo de investigación, así que me disculpo si esto parece sesgado) es muy aplicable para practicar una gran parte del tiempo y aparece por todas partes.

Primero, hay algo con lo que estoy de acuerdo aquí, ” algoritmos prácticos “. Estoy muy seguro de que si le preguntas a la gente en una década cuáles son los “algoritmos prácticos”, estoy seguro de que responderán entre los años 60 y 2000; normalmente hay un lapso de tiempo antes de que la teoría se use y se haga de la manera correcta. Los practicantes (a menos que sean informáticos) no son los que deben saltar a estos grupos para utilizarlos de inmediato y hacerlo correctamente. Además, algunas áreas de investigación no están relacionadas, por lo que a veces con el tiempo se “encuentran” en una idea similar. También vale la pena señalar que en las primeras partes de ese intervalo, era más “obvio” cuando algo tenía un gran impacto, pero el dominio de los problemas es tan grande en estos días en comparación con eso que literalmente podría producirse una gran ondulación en uno área de investigación y ni siquiera se oiría en otra ahora.

No, la investigación actual no se trata solo de “pequeñas mejoras en la Complejidad Big-O”, el simple hecho de que lo haya dicho de esta manera muestra que sabe poco o nada sobre la investigación en Algoritmos. Incluso entonces, no solo quieres obtener un resultado Big-Oh, sino un resultado Big-Theta (que normalmente es lo que los investigadores se esfuerzan). La investigación se basa en los hombros de los anteriores y rara vez es desde cero. Permíteme darte algunos pequeños ejemplos de cosas que las personas en algoritmos pueden intentar mejorar:

  • ¿Podemos idear algoritmos para nuevas arquitecturas? Estos incluyen cosas como nuevos algoritmos paralelos, algoritmos de ADN, etc.
  • ¿Podemos idear mejores algoritmos de aproximación? Es decir, ¿podemos acercar la relación de aproximación al óptimo? ¿Es fundamentalmente imposible hacerlo (si ese es el caso, pruébelo) bajo el supuesto P! = NP. ¿Podemos obtener algoritmos de aproximación más eficientes (esto en sí mismo también es importante, muchos de estos algoritmos dependiendo del dominio pueden tener
  • ¿Podemos mejorar la complejidad espacial de un algoritmo? Esto se vuelve increíblemente importante en aplicaciones donde los conjuntos de datos son enormes, como en Bioinformática, donde incluso un algoritmo con tiempo de ejecución cuadrático puede ser costoso en la práctica.
  • ¿Existe un algoritmo manejable de parámetros fijos para un problema dado?

Estos son algunos ejemplos entre muchos otros ejemplos. Los practicantes, por definición, están interesados ​​en problemas en el presente o aquellos (irónicamente) que comenzaron 10-20 años antes del presente cuando dicha tecnología es relevante , no en 20-30 años, normalmente en el futuro, donde muchos investigadores de Algoritmos tienden a estar sentados. aunque hay muchos como yo interesados ​​en los grandes problemas modernos. También vale la pena señalar que definitivamente existe una brecha en el conocimiento entre los profesionales y los matemáticos / informáticos que diseñan estos algoritmos. Incluso argumentaría que hay una brecha entre incluso sus científicos informáticos típicos en estos días en comparación con un científico informático teórico que trabaja en Algoritmos, ya que el listón ha estado cayendo en el contexto de un investigador de CS. Si un profesional quiere utilizarlos, necesita aprender más para usarlos (recuerde, los informáticos están haciendo investigación científica la mayor parte del tiempo).

Las suposiciones que está haciendo no son ciertas.

Si echa un vistazo a los documentos aceptados STOC’15 (STOC es una conferencia de teoría estándar) o los documentos aceptados SODA’16, encontrará muchos resultados interesantes e importantes que no tienen nada que ver con la mejora de los tiempos de ejecución.

Si bien es cierto que muchos de los algoritmos que se enseñan en los cursos de pregrado se descubrieron en los años 50-70, no es cierto que se hayan descubierto casi todos los algoritmos importantes y prácticos . Tampoco es cierto que la mayor parte de la investigación actual se trate de pequeñas mejoras en la complejidad de Big-O (usando sus propias palabras aquí). ¡La investigación de algoritmos es mucho más amplia que eso!

Incluso si estas afirmaciones fueran ciertas, todavía valdría la pena hacer estas “pequeñas mejoras”.

Puede sorprenderle saber que no sabemos cómo probar límites inferiores incondicionales, incluso para muchos de los problemas de algoritmos de pregrado estándar. Por ejemplo, nadie sabe si hay un algoritmo [matemático] O (m) [/ matemático] para el problema general del árbol de expansión mínimo. Incluso para problemas simples como las rutas más cortas, el flujo máximo y la coincidencia bipartita, no sabemos si los “mejores” algoritmos actuales son los mejores posibles. Por lo tanto, hay mucho trabajo por hacer.

“Casi todos los algoritmos realmente importantes y prácticos se descubrieron en los años 60-90”. – Todos los algos realmente importantes para los problemas que tuvieron los años 60-90. Estamos en una década diferente ahora, con nuevos problemas más interesantes y de mayor escala.

Los algos en el aprendizaje automático están en pleno apogeo, y ninguno coincide con la mente humana aún en algunas tareas de reconocimiento (mientras que otras lo hacen mejor). Piensa en redes neuronales ++.

Algos para resolver aproximadamente problemas NP-hard. Algos para hacer aproximadamente estadísticas útiles para un in-stream. Algos para problemas gráficos a gran escala, optimizaciones, simulaciones.

More Interesting

¿Qué es el ordenamiento binario?

¿Debería concentrarme en dominar algoritmos y estructuras de datos o desarrollar una buena aplicación? ¿Qué es más necesario a largo plazo?

El emparejamiento PvP "perfectamente justo" daría como resultado una tasa de ganancia esperada del 50% para todos. Eso puede sentirse muy bajo (sesgo de confirmación, rayas malas). Además de PvP asincrónico, ¿hay alguna manera de aumentar el WR percibido de todos mientras se mantiene justo el MM?

¿Cuáles son algunos libros que debe leer un experto en algoritmos?

¿Cuál es el orden cronológico de los algoritmos de reconocimiento facial?

¿Cuál es el peor caso de complejidad temporal de BFS (cuando se busca un elemento), sin almacenar los estados visitados?

Analizador de programación: ¿por qué devolvemos los datos restantes (no consumidos) mientras escribimos un analizador?

Dado N monedas para dos jugadores que juegan un juego. Cada jugador puede elegir 1 o 2 monedas en un turno. El jugador que recoge las últimas monedas gana. Si juegan de manera óptima, ¿qué jugador ganará el juego?

¿Cómo puedes visualizar algoritmos?

¿Cómo podemos demostrar que el reconocimiento de objetos basado en la visión es un problema np completo?

Como senior que busca postularse a empresas como Google, Palantir, etc., ¿cómo puedo mejorar mis estructuras de datos avanzadas, algoritmos y cursos de bioinformática y tener más confianza en mí mismo al ingresar a un aula y no pensar automáticamente que soy estúpido? ?

¿Cuáles son los algoritmos necesarios para resolver div2 500 y div2 1000 fácilmente en topcoder?

¿Qué es una búsqueda ternaria?

¿Cuáles son los problemas de programación que resolvió que le hicieron decir "¡Guau! ¡Lógica asombrosa"?

Tengo un examen de matemáticas discreto y esto está en él. ¿Cuál es la fórmula recursiva de an = an-1 + 2?