Sí, hay muchos de ellos. Solo enumeraré algunos que vale la pena aprender solo para comprender la técnica. La pedagogía no se trata de conocer el algoritmo en sí, sino de cómo logra sus resultados. Esto determinará la forma en que escribe el código y cómo piensa acerca de los problemas de descomposición. Entonces, el objetivo no es memorizar, el objetivo es pensar más ampliamente sobre la descomposición del problema y las soluciones.
- Ordenar fusión : enseña la clasificación eficiente y comparativa a través de la recursividad.
- Clasificación de ráfaga: clasificación sin comparación que es altamente eficiente. Te enseña que puedes usar creativamente la manipulación eficiente de datos para producir los efectos secundarios deseados. En este caso, construye un Trie para ordenar.
- Árbol B de equilibrio automático : le enseña el rendimiento y la construcción de la estructura de datos para una búsqueda, inserción y eliminación de alto rendimiento. Recomendar implementación AVL
- LCA de Tarjan : enseña la manipulación de árboles y las funciones de unión. Se puede implementar en tiempo lineal.
- Diffie-Hellman : enseña la clave pública básica y es la introducción fundamental y fundamental a las comunicaciones seguras. Alice y Bob cambiarán tu forma de pensar sobre la comunicación y los secretos.
- El camino más corto de Dijkstra : aquí es donde comienzas a ver algoritmos en la vida real. Las redes de carreteras, el envío, la conmutación de paquetes, la IA / costo uniforme y muchos más se pueden entender mejor al comprender este algoritmo y sus variantes.
- Algoritmo bancario: enseña una forma elegante de pensar acerca de los diferentes actores que compiten por los recursos y cómo pensar en compartir entre ellos.
- Tamiz cuadrático : enseña el rendimiento y la teoría de números. Una gran demostración de todas las herramientas que tienes a tu disposición para jugar con números.
Estos te ayudarán a comenzar. Algunos podrían objetar los ejemplos específicos y recomendar un algoritmo diferente en la misma familia. Eso también es bueno. Para aprender más, me enfocaría en, en orden, algoritmos de álgebra lineal y sistemas distribuidos (cualquiera de los trabajos de Leslie Lamport: Paxos, exclusión mutua). Luego, me sumergiría en algunos de los algoritmos para resolver problemas generales como el matrimonio estable, los filósofos, la promesa, etc.
Además, obtenga y lea The Art of Computer Programming de Knuth, así como A Disciple of Programming de Dijkstra. Ambos son densos y pesados en matemática, y trabajan para leer, pero son fundamentales y vale la pena.
- ¿Qué es un árbol de búsqueda binario en una estructura de datos?
- Cómo encontrar la longitud máxima de la submatriz en una matriz determinada
- ¿Qué criterios se utilizan para contar un buen algoritmo?
- ¿Hay alguna estructura de datos que no se pueda representar dentro de una computadora?
- ¿Puedes mejorar para resolver problemas algorítmicos que son completamente nuevos para ti?