Cómo aprender mejor sobre los algoritmos en profundidad

8

He estado leyendo este sitio con mucho interés, pero me parece que muchas cosas me pasan por la cabeza. Esto me ha hecho desear aprender mucho más sobre algoritmos y CS en general. Por lo que puedo deducir de mi investigación, hay 2 formas principales de hacerlo.

  1. Puedo por un buen libro grueso y pesado y abrirme paso lentamente pero con seguridad.

  2. Puedo "aprender haciendo" y con un buen libro, pero en lugar de leerlo de principio a fin, pasar a las partes que me interesan y trabajar en la implementación y aplicación de algoritmos que me gustan.

  3. ?

Mi pregunta es, ¿cuál de los anteriores usó y recomendaría el mismo enfoque a otra persona?

Daniel Gratzer
fuente
1
Puede encontrar útil mi respuesta en teoría .
Dai

Respuestas:

15

Aprendí sobre algoritmos en un curso universitario hace años. Pero si vas a hacer algoritmos usando un libro, entonces necesitas uno bueno. Dos libros se destacan para mí como la forma de entrar en algoritmos:

  • El manual de diseño de algoritmos de Steven S. Skiena
  • Introducción a los algoritmos de T Cormen, C Leiserson, R Rivest y C Stein

El primero es quizás más un manual práctico, mientras que el último es más parecido a la Biblia, pero con pruebas.

La estrategia que podría seguir consistiría en leer, hacer los ejercicios teóricos y luego implementar todo lo que pueda, enfocándose en algoritmos / problemas que encuentre interesantes o desafiantes o ambos. Por lo tanto, intente cubrir todos los aspectos de los algoritmos, no solo implementarlos. Esto incluirá estudiar su complejidad de tiempo y espacio y probar su corrección. El estudio de algoritmos es más que solo implementar algoritmos.

Una vez que haya adquirido suficiente experiencia, comience a especializarse. Si te interesa la Geometría Computacional o los algoritmos sin bloqueo, por ejemplo, entonces comienza a explorar libros y trabajos de investigación en esta área.

La especialización es buena, pero también es bueno probar técnicas de otras áreas, por lo que leer ampliamente sobre algoritmos (e implementar dichos algoritmos) es una buena manera de mantener un amplio conjunto de habilidades.

EDITAR: Después de pasar por los algoritmos introductorios, puede consultar libros como Algoritmos aleatorios de Motwani y Raghavan o Algoritmos de aproximación de Vazirani . Estos libros son una encuesta (y hasta cierto punto, un buen ejercicio de aprendizaje en técnicas matemáticas) en técnicas de diseño de algoritmos más avanzadas. También amplían su conocimiento de muchos otros campos en CS como Gráficos y Redes, Diseño de Estructura de Datos y Optimización.

Dave Clarke
fuente
¡Comencé a leer una copia del Algorithm Design Manual en línea y hasta ahora me encanta! ¡Gracias!
Daniel Gratzer
3
Reformularía una frase ligeramente: el estudio de algoritmos solo incidentalmente se trata de implementar algoritmos.
JeffE
13

Enseñar una clase de algoritmos.

O tal vez incluso mejor:

escribir un libro de texto de algoritmos.

JeffE
fuente
3
+1. Inicialmente, consideré esto como una broma, pero lo reconsideré y me di cuenta de que nada le permite comprender en profundidad algo como cuando se ve obligado a ayudar a otra persona a aprender los mismos conceptos. Esto, por supuesto, incluye, para un profesor, dos clases de enseñanza, preparación de notas de conferencias, notas y, por supuesto, escribir libros de texto ;-) Mis dos centavos: preparar ejercicios también ayuda bastante. Para un estudiante, estoy de acuerdo con la estrategia propuesta por @Dave Clarke.
Massimo Cafaro
No, @vzn, esta respuesta es completamente seria.
JeffE
ah bien tenía miedo de eso, entonces una respuesta apropiada / adaptada para cualquier persona que no sea maestra o profesora (que es un subconjunto muy limitado de la población) podría ser "enseñar el algoritmo a su amigo" o "escribir una descripción de la algoritmo de memoria y que alguien intente leerlo y seguirlo "
vzn
55
No seas tan rígido. ¿Por qué hay que pagar para enseñar (o escribir) para enseñar (o escribir)? Enseña a tus colegas. Enseña a tus hijos. Voluntario en una escuela secundaria local o colegio comunitario. Haz videos de YouTube en tus días libres. Iniciar una noche de algoritmos Pechakucha.
JeffE
Touche caro para lo que si "libro de texto" es también ligeramente considerado como "escrito en un cuaderno de espiral, sin publicar"
VZN
2

Intenta resolver problemas basados ​​en un algoritmo tan pronto como lo leas. Además, para comprender los algoritmos e implementarlos mejor, necesita tener una mejor comprensión de las estructuras de datos. Hay un muy buen libro de estructuras de datos escrito por Sahni. Puede usar eso y para algoritmos puede resolver problemas de programación de desafíos. Las preguntas son bastante buenas allí.

Lina Clark
fuente
1

Si no ha aprendido sobre algoritmos en la universidad, le recomiendo que tome una de las clases en línea, puede considerar inscribirse en uno de los cursos en coursera.org o seguir los videos publicados por la Universidad de Stanford.

marca
fuente
Udacity también ofrece un curso en udacity.com/overview/Course/cs215 .
jonsca