Es una mezcla de intuición (1), experiencia (2), notar patrones similares en problemas (3), conocer un conjunto diverso de algoritmos (4), conocer las clases de algoritmos (5), conocer la historia (6) de algoritmos (por qué necesitaban ser descubiertos es la misma razón por la que los necesita), y conocer bien sus idiomas de elección (7) para que sepa qué utilidades le brindan.
Te daré un ejemplo de cómo es esto. En mi tercer año en la universidad, a los estudiantes del segundo año se les asignó una tarea para implementar la codificación y decodificación Huffman. Les dije a dos de ellos: puedo hacer todo tu proyecto (menos la reseña) en treinta minutos. Ellos también lo intentaron.
Lo que hizo que Huffman Encoding fuera un descubrimiento único fue que Huffman se dio cuenta de que era más fácil construir el árbol de codificación de abajo hacia arriba que de arriba hacia abajo al tomar los subárboles menos utilizados en cada paso (6), su profesor había fallado en cada paso de arriba hacia abajo construcciones Para implementarlo de manera eficiente y rápida, necesitaba una estructura de datos de la que pueda recuperar el elemento más pequeño (no elementos) de (3). ¡Un montón mínimo hace eso (3)! En Java, su implementación de montón se llama PriorityQueue (7). Con esos puntos, lo más avanzado que necesitaba hacer era implementar un árbol simple, un comparador para la Cola y algo de escritura / lectura de archivos (2).
- ¿Soy un mal programador si no puedo entender Towers of Hanoi?
- ¿Las IA modernas sufren los mismos problemas que los algoritmos, o tienen un conjunto diferente de problemas?
- ¿Por qué deberíamos conocer más de un algoritmo de clasificación en Python (burbuja, inserción, selección) si todos están haciendo el mismo trabajo?
- ¿Cuál es el algoritmo más eficiente para calcular el modo de una matriz de enteros?
- ¿Cuáles son las consideraciones más importantes para convertir un algoritmo en codificación?
Tuve tiempo de sobra. En Graph Theory (un curso de matemáticas), (5) y (4) es útil si no conoce una solución, no puede pensar en una, por lo que solo tiene que repetir si “¿Funciona?”