Cómo comenzar con algoritmos en CS

Antecedentes: comencé a aprender algoritmos en mi primer año en 2013 después de tener C ++ como uno de mis cursos en la escuela.

Comenzar es un solo paso fácil que es cierto hasta la eternidad. Resuelva problemas más difíciles de lo que puede resolver cómodamente ahora utilizando editoriales y el código de otras personas como referencia.

Esto era lo que hacer. Ahora como hacerlo. Intenta resolver problemas sencillos en Codechef para empezar. Luego aumenta gradualmente el nivel de dificultad. Cuando pueda resolver problemas medios o se sienta cómodo con la programación, comience a hacer Codeforces y Topcoder.

Para concursos, participa y trata de resolver tantos problemas como puedas. Después del concurso, resuelva un problema adicional que no pudo resolver en el concurso. Definitivamente debería implicar codificación y aceptación, sin excusas.

Para preguntas de práctica, haz tu mejor esfuerzo para resolver el problema. Si se acepta, consulte los editoriales y el código del programador principal. Puede ser quien escriba un buen código y usted pueda entenderlo. Si es un problema difícil de codificar, consulte el código de muchas personas. Si no se acepta, depure hasta que ya no pueda, preferiblemente de 6 a 12 horas en un solo código. Luego, que se refieren a editoriales, lo codifican y lo aceptan, y finalmente se refieren a editoriales y el código de otras personas.

Estas plataformas son suficientes. Si desea más participación o premios, puede optar por hackerrank y hackereath. Aún más, para la práctica de icpc y preguntas más lógicas, icpc archive. Y si necesita resolver los problemas mejores o más difíciles sobre un tema, Spoj. Luego está la CSAcademy también. Hay más, a2oj, poj, uva, etc., que tienen beneficios únicos y los conocerá una vez que los necesite, y definitivamente no se recomiendan para comenzar.

No he probado el entrenamiento de USACO yo mismo porque lo supe muy tarde. Te sugiero que pruebes eso también al menos una vez.

En etapas avanzadas, puede sentir la necesidad de no codificar algunas cosas. Para ser honesto, eso es pereza en la mayoría de los casos. Una buena regla general es codificar cada tipo de problema al menos una vez por su cuenta. Y esa etapa está lejos en este momento, por lo que no debe decidir sino codificar.

No dude en sugerir modificaciones para que esta respuesta sea útil para un gran número de personas en esta comunidad.

Permítanme aclarar una cosa antes de entrar en la respuesta, por Algoritmos me refiero a los algoritmos reales que funcionan en las estructuras de datos para brindarle resultados y no a los utilizados en los Concursos de programación en línea. Distinguiré ambos al final.

Para aprender algoritmos, primero debe aprender sobre las estructuras de datos, lo que hacen y para qué se utilizan. Los algoritmos son solo pasos a realizar en estas estructuras de datos.

Ejemplo: considere el algoritmo para encontrar la distancia más corta entre dos puntos en un mapa (por ejemplo, Google Maps). Estas son las cosas que debes saber,

  1. Estructura de datos del gráfico
  2. Algún algoritmo para la distancia más corta entre dos puntos como Dijkstra.

Ahora, sin la estructura de datos, sería difícil descubrir cómo funciona este algoritmo. Esto aplica para muchos algoritmos.

Le sugiero que comience a aprender dichos algoritmos de buenos libros o comience a tomar cursos en línea como Stanford o Coursera. Stanford usa Java (si no recuerdo mal), por lo que es posible que deba dedicar un poco de tiempo a aprender Java (proporcionan el material y los recursos), pero a la larga valdrá la pena.

El mejor libro que le sugiero que aprenda si va a ser bueno en algoritmos es el libro llamado ” Introducción a los algoritmos ” por Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest y Clifford Stein. Esta es una biblia cuando se trata de algoritmos. También tiene algunas partes de las estructuras de datos discutidas y también una cantidad de conceptos de programación.

Ahora, llegando a los Algoritmos de los que habla la gente en los concursos de Programación, esto es básicamente usar los algoritmos que aprendió anteriormente (para trabajar en estructuras de datos) y aplicarlos al problema dado. Esto requiere mucha práctica y no se puede hacer de la noche a la mañana. Para esto, le recomiendo que comience a resolver problemas en sitios como Hackerrank, HackerEarth, etc.

Por favor, consulte los siguientes sitios.

Www. HackerEarth: desafíos de programación y trabajos de desarrollador

Www. Hackerrank.com

http://Codelite.com

Verifique debajo de los libros.

Introducción a algorithem por MIT press

Consulta los cursos gratuitos de Coursera | Cursos en línea de las mejores universidades. Únete gratis y edX y udemey.com