Trabajo muy duro para aprender algoritmos, pero aún no puedo entenderlo, ¿qué debo hacer?

Lo que necesitas, amigo mío, es práctica.

La codificación es una dura amante, puedes aprender toda la teoría, pero sin práctica no sabes nada. Necesitas flexionar el músculo de tu mente para saber qué solución es la adecuada para cada problema.

Una anécdota:

Cuando estaba en la universidad, aprendí, entre muchos otros, dos idiomas: C ++ y Prolog. El profesor de C ++ hizo que su clase fuera muy práctica, así que escribimos mucho. El profesor de Prolog hizo que su clase fuera muy teórica, por lo que no escribimos mucho, pero nos fijamos mucho en sus ejemplos.

Cuando intenté crear mi propio código, noté que C ++ me vendría casi naturalmente, pero Prolog no, incluso si fuera realmente bueno en entender los ejemplos de la maestra. Me faltaba la practica

Le dije a mi maestro de Prolog que su clase necesitaba un elemento práctico, e incluso le sugerí que le preguntara al maestro de C ++ sobre su método. Un amigo tomó esa misma clase de Prolog algunos meses después y me dijo que ahora escribían mucho. Después, él podría fácilmente escribir código en Prolog.

La codificación es como tocar un instrumento musical. Se requieren cientos de horas de práctica para desarrollar la memoria muscular que tanto se necesita.

Mira, no es que haya algo mal contigo. La cuestión es que los conceptos / temas de los que habla como BFS o DP, requieren tiempo para entender dónde y cuándo aplicar.

Permítame darle mi ejemplo, no soy bueno en codificación competitiva pero a menudo participo en algunos sitios. Ahora, hablando de un concurso de 2 horas donde probablemente hay 5-6 preguntas, hay muchas posibilidades de que de ellas 1-2 sean de teoría gráfica (DFS en su mayoría) y la otra de DP. Nunca puedo pasar la segunda o tercera pregunta, ya que estas preguntas requieren un conocimiento de la teoría de grafos y la DP.

Así que me gustaría recomendarle que aprenda estos conceptos de Codemonks (Hackerearth) o de Codeforces (blogs). Si no puede obtener estos conceptos directamente de la teoría, eche un vistazo a algunos videos en youtube (el canal que prefiero es Tushar Roy).

Por fin, tenga en cuenta que estos temas se vuelven prácticos (relevantes) una vez que haya completado los conceptos y la PRÁCTICA , pero tomará y tomará tiempo.

Es probable que te centres demasiado en la teoría, no lo suficiente en la práctica.

El desarrollo de software se aprende haciendo. Elige un objetivo de proyecto, algo no trivial como escribir un juego nuevo, y simplemente hazlo.

Cuando golpea un obstáculo, su motivación para terminar su proyecto lo obliga a investigar y aprender cómo sortear el obstáculo.

Exprésate para superar suficientes obstáculos, y tu confianza y habilidad aumentarán. Aprenderás algo mucho más valioso que solo aprender unos pocos algoritmos: aprenderás a resolver problemas de software.

Dominarás rápidamente los algoritmos, el desarrollo de software, los nuevos lenguajes divertidos y cualquier otro tipo de obstáculo que encuentres para lograr el resultado que deseas.

Eres un novato en el snowboard que intenta salir de pista en su primera semana.

Comience con las pendientes del conejito: necesita encontrar un corpus de problemas de algoritmos que sean mucho más simples. Consíguete un libro sobre informática básica y resuelve esos problemas primero. El clásico, que estaba en uso cuando estaba en comp sci, es CLR: Introducción a los algoritmos, 3ª edición: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: 9780262033848: Amazon.com: Libros.

Sin embargo, es un poco pesado y pesado en la parte de ciencia / matemáticas de las cosas. Estoy seguro de que puedes buscar cosas que sean un poco más concretas.

Todo lo dicho, felicitaciones a usted por saltar en este barco!

Creo que lo que podrías estar perdiendo es la paciencia. Los conceptos pueden volverse simples una vez que los entiendas, pero todo el proceso requiere paciencia . El conocimiento y la experiencia se reúnen a través del esfuerzo, tanto como sea necesario, y varias veces de persona a persona.

Date tiempo para entender y comprométete a superar esto, y eventualmente se convertirán en conceptos de segunda naturaleza para ti. Eso es un esfuerzo .

Creo que si solo intentas implementar algunos de los algoritmos tú mismo, se vuelve más fácil de entender. También puedes intentar escribir tu propio pseudo código cuando crees que lo has entendido, porque a menudo resulta que no lo has hecho. Además, hojee el análisis de complejidad y no lo tome demasiado en serio, ya que hay muchas aproximaciones, o puede hacerlo a su manera, para no perder el panorama general.

Al principio, también fue difícil para mí.

Así que simplemente escribí los malditos programas, o los copié de algún lugar, los ejecuté, puse sentencias de depuración, imprimiendo sentencias, etc., en los programas. Eventualmente todo hizo clic para mí.

Lo único es que me apasiona la programación, no aprender a ganar un cheque.