Acabo de comprar “CLRS”. ¿Cuál es la mejor manera de obtener el conocimiento que ofrece este libro?

CLRS no es solo un libro. Es una biblia para algoritmos y estructuras de datos.
En una oración, necesitas leerlo religiosamente.

El autor ya ha escrito una nota para los estudiantes, profesores y profesionales si eres como yo, que lee el prefacio de un libro.

Si buscas una guía paso a paso. Luego siga leyendo. Estoy escribiendo esto con respecto a la Tercera Edición de CLRS y de acuerdo con mi experiencia.

  • Capítulo 1: Puede elegir ignorar el capítulo 1 o hojearlo.
  • Capítulo 2: Sólo lectura 2.1 y 2.2.
  • Capítulo 3: Si eres principiante, puede que no te guste este capítulo. Entonces, solo lee 3.1. Revisar a través de 3.2
  • Capítulo 4: Para el primer temporizador, está bien leer sólo 4.1, 4.3, 4.4 y 4.5 y dejar el resto.
  • Capítulo 5: Puedes saltarte esto como un primer temporizador.
  • Capítulo 6: Todo es muy importante, lea todas las secciones.
  • Capítulo 7: Puede omitir la sección 7.3, pero asegúrese de leer las otras secciones detenidamente
  • Capítulo 8 y 9: Puedes dejar estos capítulos al principio.
  • Capítulo 10: Todas las secciones de este capítulo son obligatorias y deben leerse.
  • Capítulo 11: Puedes saltarte la sección de Hashing perfecto (11.5)
  • Capítulo 12 y 13: Por favor, no omita nada en estos capítulos.
  • Capítulo 14: Salta esto si eres el primer contador de tiempo.
  • Capítulo 15: Le encantará este capítulo. La sección de LCS puede parecer complicada, pero si es posible, intente leer esto dos veces.
  • Capítulo 16: Solo lectura 16.2, 16.2 y 16.3
  • Capítulo 17: Salta esto por primera vez.
  • Capítulo 18, 19, 20 y 21: Omita todos estos capítulos.
  • Capítulo 22: Puede optar por omitir la sección 22.5 (Componentes fuertemente conectados)
  • Capítulo 23: Todo en este capítulo es importante y debe leerse la primera vez.
  • Capítulo 24 y 25: Estos deben ser leídos
  • Capítulo 26: Puedes saltarte esto, no es muy importante para empezar.
  • Capítulo 27 en salas: no para empezar, una vez que tenga una buena mano sobre los capítulos hasta aquí, siempre puede elegir qué leer de los capítulos restantes según su interés.

Nota: Es importante practicar los ejercicios también. Por favor no te los pierdas.

¿Por qué quieres leer este libro? Si su única razón es “obtener el conocimiento”, es probable que no tenga éxito. Eso es demasiado abstracto. Elige algo más tangible. Por ejemplo:

  • Si se está preparando para una entrevista técnica o una programación competitiva, busque una fuente de preguntas y use el libro como referencia cuando se atasque.
  • Elija un proyecto para trabajar e implemente los algoritmos / estructuras de datos en lugar de utilizar los que proporcionan las bibliotecas de idiomas. Cuando necesites algo, busca cómo implementarlo.
  • Si está tratando de compensar algunos antecedentes faltantes, busque una clase como Diseño y Análisis de Algoritmos y use el libro como recurso.

Tener un objetivo le dará algo para adjuntar su nuevo conocimiento y hará que sea más probable que lo recuerde.

También puede echar un vistazo a esta pregunta: ¿Cómo planeo y completo la lectura de “Introducción a los algoritmos” e implemento un número decente de algoritmos dentro de un período de un mes?

Comience con un libro de texto más intuitivo (como Algorithms: Sanjoy Dasgupta, Christos Papadimitriou, Umesh Vazirani) y también aprenda un lenguaje de programación de procedimientos / OO de uso común que no se desarrolló específicamente para la programación web (C ++, Java o C #).

Elige tu escuela favorita. Estudia los capítulos cubiertos en su clase de algoritmos.

En Stanford, esos capítulos son

9/23
Introducción, complejidad algorítmica y análisis asintótico.
CLRS 2

9/25
Notación asintótica, emparejamiento estable
CLRS 3. KT 1.1 para un ajuste estable

9/30
Dividir y conquistar y los algoritmos recursivos, resolviendo las recurrencias simples. Iterando las recurrencias.
CLRS 4.1-4.3

10/2
Método maestro. Aleatorización
CLRS 4.4-4.5; 5.1-5.3

10/7
Más ejemplos de aleatorización. El par de puntos más cercano del algoritmo.
CLRS 7; KT 5.4 para el par de puntos más cercano.

10/9
Estadísticas de Mediana y Orden.
CLRS 9.

10/14
Muchísimo
CLRS 6

10/21
Clasificación de los límites inferiores. Contando ordenar. Comience el hashing.
CLRS 8

10/23
Análisis de hash con encadenamiento. Análisis de direccionamiento abierto.
CLRS 11.1-11.4

10/28
Filtro de floración. Árboles binarios de búsqueda
CLRS 12.1-12.4

10/30
Árboles rojos / negros. Extendiendo Arboles Negros Rojos.
CLRS 13, 14

11/4
Saltar listas. Iniciar algoritmos codiciosos. Programación de la actividad. Programación de tareas. Codificacion Huffman
CLRS 16.1-16.3

11/6
Iniciar algoritmos gráficos. DFS / BFS. Descubrir los ciclos. Pedidos parciales. Ordenamiento topológico.
CLRS 22

11/13
Árbol de expansión de costo mínimo. El algoritmo de Prim.
CLRS 23

11/18
El algoritmo de Kruskal. Estructura de datos de búsqueda de la unión.
CLRS 23

11/20
Iniciar la programación dinámica. La subsecuencia común más larga.
CLRS 15

12/2
Matriz de multiplicación de la cadena. Suma de subconjuntos. Mochila.

12/4
Una sola fuente de caminos más cortos. Bellman-Ford. Caminos más cortos de todas las parejas. Floyd-Warshall.
CLRS 24, 25

CS 161 (Otoño 2014): Diseño y Análisis de Algoritmos

En general, la mejor manera de sacar el máximo provecho de un libro es comenzar por leerlo. Este consejo se aplica a CLRS. También trata de resolver algunos de los ejercicios y problemas. El prefacio le brinda una URL para un sitio de MIT Press que tiene soluciones para algunos de los ejercicios y problemas, para que pueda verificar algunas de sus respuestas.

A diferencia de lo que la mayoría de los estudiantes y profesores le dirían, el lenguaje de CLRS es excelente y fácil de entender. Puede leer una sección. Ahora, leer significa estudiar primero la explicación del algoritmo e intentar comprender cómo funciona el algoritmo en el ejemplo dado. Luego, elija otro ejemplo de otro libro o de la red y aplique el algo que acaba de estudiar después de estar convencido de que lo ha entendido. Verifique su respuesta. Continúe de esta manera. Después de terminar de leer una sección, intente todos los problemas planteados. al final de la sección. Finalmente, para hacer que los algos sean firmes en tu mente, implementalos en tu idioma favorito.

Dependiendo de su programación, algoritmos y experiencia matemática, diría que la mejor manera es tratar de escribir programas que transmitan los conceptos que ilustra el libro. Siempre hay conceptos importantes como “Algoritmos codiciosos”, “Programación dinámica”, “Árboles”, etc. y subcategorías como “Algoritmo de Dijkstra”, “Árboles de búsqueda binaria” o “Árboles de expansión mínimos”. Yo diría que es más importante entender tantas de las categorías principales como sea posible, pero para muchas (especialmente para mí) esto solo es posible haciendo algunas de las subcategorías.

No creo que sea razonable tratar de aprender todos los algoritmos del libro, pero haz lo suficiente para entender qué es un algoritmo codicioso, por qué a las personas les gustan, por qué a las personas les gustan.

En general, cuando se trata de “obtener conocimiento” de este tipo de libros, diría que las cosas más importantes son las definiciones y los teoremas. No puede comenzar a entender cómo trabajar con un gráfico si tiene la definición incorrecta de un gráfico. Y no entenderá por qué el Método Simplex se mueve de un punto extremo a otro hasta que comprende que la solución óptima de un problema de programación lineal siempre estará en un punto extremo (también si no sabe qué es un problema de programación lineal, punto extremo, o solución óptima).

Pero más que eso, creo que es importante entender cómo funciona su mente y encontrar la mejor manera (ejercicios, ejemplos, programación, conversaciones, preguntas en http://quora.com , etc.) para transportar esa información de un libro grueso a tu cerebro.

Practique más y más problemas, especialmente los presentes en el ejercicio. Puede usar un libro de matemáticas discreto junto con el libro de algoritmos de clr.try para codificar el algoritmo a medida que aprende, porque a veces esto sucede con la mayoría de nosotros que creemos que entendemos pero en realidad no lo hagas

More Interesting

Sé que mi país no tiene futuro. Estudio ciencias computacionales. ¿Qué tengo que hacer?

Cómo encontrar la fuerza de voluntad para estudiar.

Cómo concentrarme en mis estudios número 12

Me distraigo estos días. No quiero estudiar, pero tengo que estudiar, ya que la educación es la única solución a todos los problemas. ¿Qué debo hacer?

Cómo obtener buenas calificaciones y jugar juegos todos los días.

Soy un undécimo PCM indio. Tengo calificaciones promedio en décimo y espero 70-80% en undécimo. Quiero estudiar CS (Estados Unidos y Canadá). ¿Cómo consigo una buena universidad?

¿Debo estudiar ingeniería informática si no me va bien en matemáticas?

¿Cómo puede el estudio en el extranjero afectar positivamente la personalidad de alguien?

Me gustaría estudiar la psiquiatría. ¿Donde debería empezar?

Perdí el enfoque de mis estudios, ¿cómo lo recupero?

Estoy en 3er semestre de Ingeniería Química. ¿Desde cuándo debo empezar a estudiar para GRE?

Cómo desarrollar mis habilidades de estudio.

¿Cuáles son algunos hacks de enfoque / concentración que funcionan?

Soy una clase de comercio de estudiantes de clase 12. Tengo mi medio año acercándose. Solía ​​ser uno de los mejores estudiantes hasta la clase 10, pero ahora no me interesan los estudios y no deseo estudiar. ¿Cuáles son algunas sugerencias si estudio seriamente en matrículas porque allí de repente me interesa el tema?

Planeo estudiar para la ACCA pero trabajo en un lugar de trabajo no profesional que todavía está relacionado con las finanzas y la contabilidad. ¿Seguiré siendo elegible para estudiar y trabajar al mismo tiempo o tengo que cambiarme a una firma de auditoría?