¿Cómo debo estudiar yo mismo “Introducción a los algoritmos”?

Cuando me encontré por primera vez con “Introducción a los algoritmos” a los 15, la mera idea de leer una ” Introducción ” de 1202 páginas, me pareció muy agotadora. En ese momento todo lo que me importaba era saber cómo codificar. Así que utilicé el libro para ver los fragmentos de código y mantuve la distancia de la parte teórica. Usar el libro como material de lectura para el curso Algoritmos y estructuras de datos” en la universidad, y leerlo capítulo por capítulo me hizo cambiar de opinión acerca de cuán “agotador” era realmente el libro. Más que complicado, el libro tiene una de las explicaciones más claras con respecto a las partes teóricas y al material de codificación.

Dicho esto, si está realmente dedicado a aprender el diseño y análisis y profundizar su conocimiento de las estructuras de datos, no sugeriría cambiar a un libro más fácil, ya que considero que cada información sobre cada tema del libro es muy importante y simplificada. A la versión le faltaría información esencial.

Ahora, en cómo debes estudiarlo, o cómo lo estudiaría si fueras tú:

Tome un curso en línea sobre estructuras de algoritmos y datos, como:

MIT 6.006 Introducción a los algoritmos, otoño de 2011 e intenta ir al mismo tiempo a través de las conferencias y las partes respectivas del libro.

  • Lea cada tema, haga los ejercicios respectivos sin optar directamente a Internet por ayuda (si entiende el tema, los ejercicios no son exactamente difíciles).
  • Opte por el Internet para obtener ayuda una vez que esté atrapado por un tiempo relativamente largo . Cuanto más tiempo dedique a cada tema, ya sea tratando de resolver los problemas o simplemente reflexionando sobre por qué una fórmula de resumen es la forma en que se encuentra, más tiempo permanecerá ese tema en su memoria a largo plazo.
  • Intente codificar los algoritmos clásicos, sin mirar las notas, después de aprender sobre el tema. Lo más probable es que olvide cómo se implementa en detalle algún procedimiento de hash, un par de días después, a menos que pase por la carga de implementarlo, probarlo y depurarlo.
  • Por lo general, cada tema le dará sugerencias sobre desarrollos recientes o alternativos de un algoritmo, excepto la versión clásica. Es posible que estas versiones no estén en el libro, pero una vez que haya terminado con el tema respectivo, puede tomarse su tiempo y buscar en línea otras versiones del algoritmo, la mejora de complejidad, etc.

Como nota final, 4 meses, dependiendo de cuánto tiempo esté dispuesto a dedicar a los algoritmos de aprendizaje y las estructuras de datos, puede o no ser suficiente para leer el libro. Por lo tanto, si está revisando el libro por la mera alegría de aprender los algoritmos, puede tomarse su tiempo, pero si tiene algunas entrevistas de pasantías en el otoño, también puede leer libros como “Cracking the coding entrevista” paralelamente al Introducción a los algoritmos uno.

Personalmente, para obtener una pasantía en Google, realmente no necesitaba leer tales libros y tanto la “Introducción a los algoritmos” (aunque todavía era el momento en que solo había revisado los fragmentos de código) y las capacidades de implementación de codificación se lograron. Mírame las entrevistas, pero dependiendo de tus metas a corto / largo plazo, es posible que desees hacerlo de diferentes maneras.

Genial, despejaste el primer paso, supongo que tienes una gran necesidad de aprender. Ahora, el siguiente paso es comenzar a trabajar hacia tu meta !!!!

Primero debes familiarizarte con conceptos básicos como punteros en C, estructuras, etc. Para este Yashwant kanetkar es un buen libro. Luego, enfóquese en todas las estructuras de datos que comienzan desde la lista enlazada, todos sus tipos. Luego siga adelante con las colas y sus tipos, montones, tipos: min, max, fibonacci, etc. Y no solo los lea. Debe probarlos ellos mismos, inicialmente será difícil, pero no se preocupe, el resultado final lo llevará aún más lejos. “ El experto en todo fue alguna vez un principiante ”.

Después de hacer esto, debe pasar a los algoritmos básicos de clasificación como burbuja, inserción, rápida, combinación, etc.

Ahora continúe con algunos algoritmos complejos como árboles, gráficos, etc. Sus algoritmos de recorrido.

Ahora la idea es seguir practicando. Para sus entrevistas de colocación esto sería suficiente. Si quieres ir a alguna programación hardcore competitiva, tendrás que poner más esfuerzos. Para ello, siga resolviendo problemas en Spoj, HackerRank, TopCoder y otros sitios.

Hay un buen curso sobre esto disponible gratis en Coursera:

Algoritmos, Parte I – Universidad de Princeton | Coursera

La parte 2 también está ahí para este curso.

Además, uno de los sitios que amo para estructuras de datos y algoritmos es geeks for geeks:

GeeksforGeeks | Un portal informático para geeks.

¡¡¡¡Todo lo mejor!!!!

Todos los consejos dados como respuestas son excelentes. Sin embargo, si es posible, debería comenzar sus estudios de este campo estudiando el libro Sams Teach Yourself Estructuras de datos y algoritmos en 24 horas: Robert Lafore: 9780672316333: Amazon.com: Libros o estructuras de datos y algoritmos en Java (2ª edición) : Robert Lafore: 9780672324536: Amazon.com: Libros. El primer libro está escrito para estudiantes con antecedentes en C ++ y el segundo es para estudiantes que conocen Java. He leído el primer libro y lo recomiendo de todo corazón. Es un libro bien escrito y realmente amigable para los estudiantes. Es tan fácil de entender que puede terminar todo el libro (junto con la revisión) en un mes. La confianza que te da este libro no tiene paralelo. Después de que se sienta cómodo con este libro, sumérjase en CLRS. Comenzará a tener sentido completo.

Sin embargo, si ya tiene una base sólida en DS, sugeriría que se acerque a este libro en función del tema que desea aprender y que resuelva muchos problemas relacionados con ese tema. Este libro es muy pesado en matemáticas e incluso los autores no esperan que un estudiante estudie todo el libro en una sola lectura. Primero, solo entienda cómo funciona DS / algo e impleméntelo utilizando programas. Luego, comprenda sus complejidades de tiempo / espacio e intente optimizar su código en consecuencia. Después de eso, ve a por todas las cosas de matemáticas y resuelve los problemas que se dan al final. Deberías hacerlo bien. Para los problemas puede consultar Estadísticas de TopCoder – Archivo de problemas. Esta URL contiene todos los problemas solicitados en los SRM de TopCoder ordenados por el tema en el que se basan.

Respondí esta pregunta en la respuesta de Thomas Cormen a ¿Cómo debería uno leer Introducción a los algoritmos (CLRS) para aprovechar al máximo? Pero todo lo que hice fue apoyar otras dos respuestas.

Supongo que una buena manera de obtener ganancias del libro es leer primero y aplicar algoritmos de manera conjunta utilizando su lenguaje de programación preferido (Java, C o C ++ sería mejor).

Aunque no he leído CLRS en su totalidad, lo que he hecho es separar los temas en función de los paradigmas de diseño de algoritmos y las estructuras de datos que necesitaría para resolver problemas. En mi opinión personal, un estudio exhaustivo probablemente podría seguir una vez que se haya familiarizado con las estructuras de datos básicas. Por ejemplo, después de cubrir los conceptos básicos de los árboles binarios y sus operaciones relacionadas (búsqueda, inserción y eliminación), puede profundizar en implementaciones de árboles más complejas, como los árboles de equilibrio automático (AVL o árboles rojos y negros).

Básicamente, concéntrese en una estructura de datos simple, léala, implemente las operaciones relacionadas y pase a estructuras de datos más complejas basadas en una estructura de datos simple, como una técnica de aprendizaje de profundización iterativa.

En lo que respecta a la lectura de la prueba de la corrección, recomendaría que se lea para los algoritmos clásicos, como los de clasificación y búsqueda. Aparte de la corrección de la prueba, es necesario tener una idea de los diferentes tipos de casos de entrada que un algoritmo puede tomar y eliminar los casos de borde que harían que el algoritmo fallara. CLRS ilustra muy bien la traza de un algoritmo y, por lo tanto, en lugar de saltar al algoritmo en sí, le haría mucho bien si intentara implementar un algoritmo a partir de su traza. Una cosa aún más importante es calcular la complejidad de tiempo y espacio de un algoritmo, lo que le daría una mejor idea de cómo eliminar operaciones redundantes, almacenar en caché los resultados para una mejor optimización, etc.

Cada vez que se acerque, intente enumerar los requisitos previos necesarios para comprender los algoritmos. Por ejemplo, para dividir y conquistar, sería esencial leer sobre la recursión y cómo se apilan las llamadas de función para hacerlo.

Y al igual que Kamila Hasanbega ha declarado, es integral para garantizar que su curva de aprendizaje sea lo más empinada posible, maximizando así el aprendizaje. CLRS proporciona una forma bastante holística de ver un algoritmo en lugar de simplemente implementarlo y nos ayuda a obtener mucho más que una esencia de lo que hace un algoritmo.

Una buena serie de conferencias que complementaría muy bien el libro sería la de Stanford por Tim Rougharden (también tiene una parte 2 junto con conjuntos de problemas bastante útiles):

Algoritmos: Diseño y análisis, Parte 1 – Universidad de Stanford | Coursera

Gracias por A2A.
Suponiendo que está hablando de Introducción a los algoritmos – CLRS.
Personalmente nunca terminé el libro. Yo sugeriría empezar a leerlo. Es un gran libro y me ayudó mucho en la construcción de mis fundamentos básicos de algoritmos.
Intente resolver el conjunto de ejercicios y el conjunto de problemas después de terminar de leer el capítulo.

Puedes quedarte atascado mientras resuelves problemas detrás. No te rindas Obtenga ayuda de sus amigos, colegas o de las preguntas más recientes sobre ‘algoritmos’

Si eres bueno en pruebas matemáticas, sin duda te ayudará a entender el libro más rápido y con mayor profundidad. Aunque si no eres bueno con eso, entonces el libro en sí te ayuda con su Apéndice: Antecedentes matemáticos (proporcionado detrás del libro).
Intenta comprender el bucle invariante en los algoritmos.

Como dice que tiene 3 años de experiencia con C ++, es fácil de traducir y probar sus pseudocódigos. Sigue resolviendo y probando tu solución con C ++.
Puede ser bueno con stl en C ++ y eso puede tentarlo a omitir un capítulo como Red-Black Trees (probablemente porque ya está implementado como std :: map en C ++). Pero te sugiero que implementes estructuras de datos como Red-Black Tree. Puede que no lo implementes nunca en tu carrera. Pero al implementar, entiendes cómo funcionan las rotaciones internas de izquierda-derecha. Esto le ayuda a mejorar su capacidad de ataque o encontrar intenciones ante problemas.
Practicar y luego buscar sus propios errores o sus esquinas de mejora es la única manera de estudiar de manera eficiente.
Puedes leer
La respuesta de Thomas Cormen a ¿Cómo debería uno leer Introducción a los algoritmos (CLRS) para aprovechar al máximo?

Lees con atención, repasas las secciones que no entiendes perfectamente y haces todos los ejercicios.

(Este consejo es válido sin importar el tema que estés tratando de aprender o de qué libro de texto lo estás aprendiendo).

A2A

Todo está en nuestra mente. Esto es lo que hago con una alta tasa de éxito del 80% para temas desconocidos.

Aquí está el plan:

1. El objetivo principal es desarrollar interés, en el estudio de algoritmos, es decir, para empezar hay que tener interés, y esto debe mantenerse, este plan debe garantizar que

2. Salte a una página no leída donde comprenda, que aún no ha leído, un diagrama o fragmento de código, que usted conoce. Empezar desde ahi

3. Aprender ese tema en la mayor medida posible.

4. Tome notas de su comprensión. Si no consigues algunas partes, toma nota de ellas también.

5. Si tuvo éxito completo, le gustó lo que aprendió, expanda justo antes y justo después de partes del libro. Sobre todo seguirás progresando.

6. Si no tuvo éxito en su totalidad, pero le gustó lo que aprendió, luego de las notas que hizo, vaya a los lugares donde no obtenga esas partes y aprenda a regresar rápidamente según sea necesario. Compruebe si el punto 5 ahora es válido para continuar.

7. Si no tuvo éxito en su totalidad y no le gustó lo que aprendió, entonces para asegurarse de que el Punto 1 se mantenga, comience desde el Punto 2

Con los pasos anteriores, algún día leerás el libro completo. Si hay una motivación para leer el libro, como hay un examen y tienes que estar arriba, este aprendizaje será más rápido que de otra manera.

La mejor de las suertes.

Usted debe leer los libros de preparación de temas adyacentes. Como matemática discreta, programación introductoria y redacción de pruebas. Esto apoyará una comprensión más profunda de los algoritmos. Mientras estudias, debes tener cuidado de inculcar y aplicar. Entonces necesitas comprensión de lectura superior y resolución de problemas. Probablemente no podrá dominar todos los temas, por lo que debe elegir los principales. Un verano no es suficiente.

Antes de la lectura:

  • Asegúrate de que eres bueno con:
  • Bucles anidados.
  • Recursion
  • Seguimiento posterior (opcional)

Mientras leo:

  • Comience a leer cada capítulo, lea atentamente los ejemplos y luego intente resolverlos usted mismo en primer lugar, si no pudo ver el pseudocódigo y la explicación.
  • Escriba el código real utilizando el lenguaje de programación que desee para el pseudocódigo que acaba de estudiar, depúrelo, estudie con precisión, entiéndalo, explíquelo a alguien (tal vez a su hermano, amigo o incluso a usted mismo) y guarde ese código, puede que necesite eso mas tarde.
  • Resuelva los ejemplos del libro, piénselo, intente escribir un código con métodos recursivos e iterativos de programación dinámica.

Despues de leer:

Tienes que saber que, ahora que tienes la semilla de los algoritmos, que no crecerán por sí mismos, para crecer, comenzar a resolver algunos problemas más difíciles en los algoritmos, esto es genial y está ordenado de más fácil a más difícil, resuelve tanto como usted puede: Problemset – Codeforces

Recuerdo que cuando vine por primera vez a Estados Unidos, un primo, un ingeniero de Google me dijo que leyera este libro. En ese momento, ni siquiera podía leer todas las palabras del libro. Después de estudiar en la universidad por un año, volví a abrir este libro y comencé a aprender más cosas. Te recomiendo que lo aprendas viendo videos en Youtube, incluso esos son videos de hace mucho tiempo, pero aún así ayudan mucho. Primero debe conocer las estructuras de datos básicas porque creo que lo que hace este libro es permitirle comprender mejor los algoritmos.

asi que,

  1. Intenta abrir el libro, no tengas miedo y no te rindas.
  2. Usa Google inmediatamente siempre que no lo hagas con el algoritmo.
  3. No es necesario hacer todos los ejercicios la primera vez, eso costará mucho tiempo. Y no creo que solo mires este libro por una vez en tu vida. Esto no es como otros libros como el calculoso.
  4. Si no lo terminaste, está bien, no te enfades, al menos ni siquiera mi primo lo terminó.

¡Buena suerte!

Recomiendo encarecidamente implementar los algoritmos en un lenguaje como Ruby o Python. Alguien sugirió Java, pero para un principiante, creo que la propia Java se interpondría en el aprendizaje de algoritmos. Sobre todo porque solo tienes un período de 4 meses. A menos que, por supuesto, ya conozcas bien Java.

Si es posible, también encontraría una aplicación para escribir que involucre uno o más de los algoritmos. Como escribir un juego, por ejemplo. ¡Puede hacer algo que de otra manera sería “seco” muy divertido!

Además, no me limitaría al libro “Introducción a los algoritmos”, sino que exploraría más allá y más allá. Muchos de los algoritmos más simples, como la clasificación, por ejemplo, ya están implementados en gran medida en las bibliotecas estándar que puede conectar y usar. ¡Encuentra algo que no esté tan hecho, e implementa ese algoritmo usando los que ya están disponibles!

Practica durante tu estudio.

Recomiendo HackerRank.

Cuando estudias un algoritmo o estructura de datos, como el árbol de búsqueda binario. Puede encontrar un problema relacionado en el dominio de estructura de datos Resolver problemas de código de estructuras de datos. Y puede implementarlo usted mismo y probar su código en HackerRank.

Ve al sitio web de la universidad que te guste y mira su programa de estudios para el curso. Domina cada tema y habrás terminado. 4 meses es suficiente para completar ‘Introducción a los algoritmos’. No recomendaría el curso en línea por MIT porque los videos son demasiado largos, sin embargo, si te aburres y quieres divertirte en una clase, únete.

Soy de la Universidad SRM, puede consultar nuestro programa de estudios para Ciencias de la Computación e Ingeniería: http://www.srmuniv.ac.in/sites/d
Tenemos un curso sobre estructuras de datos y diseño de algoritmos. También puede consultar los libros mencionados en cada curso.

Es difícil de superar ver videos de conferencias desde aquí: Introducción a los algoritmos

Tal vez sea necesario para usted Manual del instructor Introducción a los algoritmos 2ª edición Thomas H. Cormen, Clara Lee, Erica Lin – Banco de pruebas – Manual de soluciones – Descarga instantánea

O puede consultar más en la tienda – Banco de pruebas – Manual de soluciones – Descarga instantánea

Es demasiado grande para pasar en 4 meses. Escoge los temas que te parezcan interesantes y repásalos. O simplemente correr a través de los conceptos básicos.

Tuve la misma idea hace unos años, cuando todavía estaba en la escuela secundaria, estaba obsesionada por el hecho de aprender todo lo relacionado con la sociedad civil. De todos modos, incluso saltándome el sueño cada dos noches y tomando una cantidad decente de medicamentos a base de anfetaminas todos los días, ni siquiera podía leer la mitad del libro.

Introducción a los algoritmos es un nombre muy engañoso. No lo sugeriría por sí mismo como un primer libro; Es más útil como referencia. Coursera tiene la excelente introducción a la clase de algoritmos en línea. Para el árbol muerto, sugiero los algoritmos de Sedgewick. Entra en los detalles reales de la implementación, que es invaluable.

¿Con qué propósito quieres aprender algoritmos?
tome algunos cursos útiles y económicos de udemy, como estructuras de datos y algoritmos, e intente implementarlos según sus requisitos.

Si bien debería comenzar a aprender esto … también creo que el mejor será descargar un libro para el análisis de diseño de Algo y luego ver algunos videos … el que encuentre mejor y fácil de aprender, comenzando a aprender de ese conjunto de videos en particular y para cada tema. cree un algo y aplíquelo en el programa y verifique si es correcto o no que no comience desde el principio … también a veces enmarque algo solo en su mente y trate de hacer el programa … haga algo lo más posible …