Lo mejor de una clase introductoria en algoritmos, complejidad o similares es que la mayor parte es combinatoria. Parafraseando a Timothy Gowers, es elemental . Eso no quiere decir que sea fácil, pero la mayoría de los principios que usará son, en cierto sentido, básicos y bastante comprensibles para un niño de 10 años. Por lo tanto, es necesario conocer operaciones aritméticas básicas y contar. Voila
Como otro ejemplo, Sanjeev Arora, en su tesis que presenta el teorema de PCP extremadamente profundo, declaró que el requisito mínimo para leer la tesis sería la simple declaración:
“Un polinomio univariado no nulo de grado d tiene como máximo d raíces en un campo”.
- ¿Hay alguna forma científica de barrer un piso?
- ¿Por qué la notación O grande no se parece más a O (c) y O (cn) en lugar de a O (1) y O (n), esto último no tiene sentido?
- ¿Cómo puedo extender el algoritmo KMP a 2 dimensiones?
- ¿Qué algoritmo es usado por la función Java () de la búsqueda de subcadenas?
- Recientemente me enamoré de las estructuras de datos y algoritmos. ¿Qué idioma (s) y qué rama (s) de matemáticas le servirían mejor y qué tipo de trabajos de entrada debería buscar una vez que lo lleve a un nivel decente, unos 4-6 meses después?
Por supuesto, no menciona que él es un genio, como lo son la mayoría de las personas que trabajaron en el tema.
También ayuda si tiene algo de experiencia con las estructuras de datos, aunque si se trata de una clase introductoria, la mayoría de las estructuras de datos que necesita se introducirán en el acto, junto con el algoritmo que se está enseñando.
Sin embargo, lo único que no es del todo elemental es la teoría de la probabilidad. Apréndelo, conócelo, conviértelo en tu religión. Las palabras más poderosas en el análisis de algoritmos, según yo, son ‘linealidad de expectativa’. Sigue ese mantra y estarás preparado en el camino hacia la grandeza … o un gran conocimiento, en cualquier caso.