Cómo estudiar algoritmos.

Estoy luchando con lo mismo ahora mismo. Junto con la información de las otras respuestas, he invertido mucho en libros de algoritmos. Unos como los algoritmos desbloqueados , Introducción a los algoritmos , Algoritmos (libro del curso descrito por Haron Shihab , Estructuras de datos y algoritmos simplificados (si claro …), y más. He encontrado algunos de los cursos de Pluralsight útiles, así como tratar de hacer cosas como Codility y HackerRank, etc.

El principal problema que tengo con estos es la falta de formación matemática que tengo. El último curso de matemática que tomé fue en la universidad, y fue una clase de encuesta de idiotas para estudiantes de artes liberales. Entonces, cuando alguien comienza a tratar de explicar algo más allá de las habilidades de Alegebra 1 de mi escuela secundaria, puede ser difícil de seguir. Parece que la mayoría de los sitios de codificación de algoritmos asumen que tienes esas habilidades.

Entonces … si eres similar a mí. Mi plan es trabajar algoritmos conocidos ahora mismo a través de los diversos medios mencionados, pero también estoy planeando obtener un poco más de educación sobre las matemáticas detrás de ellos y tal vez una educación informática adecuada. No importará mover un botón de 10 píxeles, pero me hará sentir mejor con mis soluciones.

No estudias los algoritmos, los dominas para que puedas derivar los tuyos. El primer paso es reconocer los conceptos de programación de recursión, matrices y funciones que se diseñan en un lenguaje particular en el que se va a implementar un algoritmo.

Si desea aventurarse en el aire enrarecido de los cifrados (cifrado de curva elíptica, Diffie-Hillman, etc.), entonces comprenderá mejor los primeros principios de la criptografía, y no toda la criptografía es un algoritmo. A veces, un simple registro de procesador ‘shift-right’ funcionará.

Algunos idiomas simplemente no permiten la semiótica para lograr ciertos tipos de algoritmos. A veces, el cambio de bits con lenguaje ensamblador es más fácil que la implementación y ECE donde la velocidad es de suma importancia y no me preocupa el “hombre en el medio”: la comunicación cifrada entre los componentes de software no tiene que ser necesariamente de acuerdo con las especificaciones de IETF .

Para terminar, domine el lenguaje de programación en el que espera jugar con la construcción algorítmica. Una vez que haya dominado el idioma, podrá discernir qué algoritmos son más simples y fáciles dada la semántica del idioma. Una vez que haya reducido la totalidad de TODOS los algoritmos a solo aquellos que tienen sentido usarlos, entonces domínelos … una vez que los domine, será más fácil para usted discernir si los usará en un lenguaje de programación diferente.

¿Por qué no te acampas en Stackoverflow por un tiempo y te acostumbras a las técnicas de los expertos? … primero.

Esa es la opinión de un solo hombre: su kilometraje puede variar.

He estudiado en cursos en el Technion [1]. Sentarse en clase y hacer tareas y exámenes es una manera muy estresante y efectiva.

Algunos cursos, como los algoritmos de gráficos, leí el libro de Even [2] en lugar de asistir a clases, pero presenté todas las tareas. Seguí el curso, a pesar de haberlo abandonado un semestre antes.

Hoy leo Wikipedia para refrescar mi memoria. He encontrado y corregido algunos errores en el algoritmo Dijkstra [3] en Wikipedia, así que tome algoritmos en sitios web, con un grano de sal. Algoritmos complicados, como la resolución SAT, se pueden encontrar en documentos antiguos o en algunos libros, pero los documentos generalmente son una buena fuente.

A veces es bueno tomar un curso o libro en línea para cosas como el aprendizaje automático o los sistemas de recomendación, en lugar de aprender un algoritmo a la vez.

Notas al pie

[1] הטכניון – מכון טכנולוגי לישראל

[2] Algoritmos de grafos de Shimon Even

[3] Algoritmo de Dijkstra – Wikipedia

Luché con algoritmos complejos en la escuela pero usé las siguientes técnicas para mejorar las cosas. Puede ser que sean útiles para usted.

  • Los pseudo códigos son la mejor manera de entender un algoritmo. Así que vaya por lenguaje significa cuando los aprende (por ejemplo, no los aprenda con un lenguaje de programación)
  • Resuelve cada vez más problemas que requieren el uso de algoritmos. Así los aprendes mejor.
  • Intente usar mnemónicos para recordar algoritmos con los que tiene problemas. Sin embargo, esto puede no ayudarle realmente a entender el algoritmo, pero es bueno desde la perspectiva de los exámenes / entrevistas.

Gracias por la A2A.

La mejor manera de estudiar el algoritmo es buscar el artículo de investigación principal de ese algoritmo, leerlo detenidamente. Al igual que seleccionar un mejor trabajo de investigación de ese algoritmo y estudiarlo.

En el algoritmo la lógica es importante. Así que puedes desarrollar la lógica a través del trabajo de investigación.

Hay muchos libros buenos sobre algoritmos, recomiendo el curso “Algoritmos” de Robert sadgewick en coursera, que consta de dos partes. Eso dará un gran comienzo a los algoritmos, ya que tiene algunas tareas sorprendentes con un análisis y calificación exhaustivos.

Piense en los algoritmos como un rompecabezas. Hay pasos involucrados y secuenciación, a veces la sincronización.

Espero que esto ayude. Buena suerte.