J'ai lu ce site avec beaucoup d'intérêt, mais j'en trouve beaucoup qui me dépasse. Cela m'a donné envie d'en apprendre beaucoup plus sur les algorithmes et le CS en général. Pour autant que je puisse en juger par mes recherches, il existe deux façons principales de procéder.
Je peux par un joli gros livre épais et progresser lentement mais sûrement.
Je peux "apprendre en faisant" et par un beau livre, mais au lieu de le lire de bout en bout, je passe aux parties qui m'intéressent et je travaille à la mise en œuvre et à l'application d'algorithmes que j'aime.
?
Ma question est la suivante: laquelle avez-vous utilisée et recommanderiez-vous la même approche à quelqu'un d'autre?
algorithms
education
Daniel Gratzer
la source
la source
Réponses:
J'ai appris les algorithmes dans un cours universitaire il y a des années. Mais si vous voulez faire des algorithmes en utilisant un livre, alors vous en avez besoin d'un bon. Deux livres se distinguent pour moi comme le moyen d'entrer dans les algorithmes:
Le premier est peut-être plus un manuel pratique, tandis que le second ressemble plus à la Bible, mais avec des preuves.
La stratégie que vous pourriez suivre consisterait à lire, à faire les exercices théoriques, puis à mettre en œuvre autant que vous le pouvez, en vous concentrant sur les algorithmes / problèmes que vous trouvez intéressants ou difficiles, ou les deux. Essayez donc de couvrir tous les aspects des algorithmes, pas seulement de les implémenter. Cela comprendra l'étude de leur complexité temporelle et spatiale et la preuve de leur exactitude. L'étude des algorithmes va au-delà de la simple mise en œuvre d'algorithmes.
Après avoir acquis suffisamment d'expérience, commencez à vous spécialiser. Si vous vous intéressez à la géométrie informatique ou aux algorithmes non bloquants, par exemple, alors commencez à explorer des livres et des articles de recherche dans ce domaine.
La spécialisation est bonne, mais il est également bon d'échantillonner des techniques d'autres domaines, donc une lecture générale des algorithmes (et la mise en œuvre de ces algorithmes) est un bon moyen de maintenir un large éventail de compétences.
EDIT: Après avoir parcouru les algorithmes d'introduction, vous pouvez consulter des livres comme Randomized Algorithms de Motwani & Raghavan ou Approximation Algorithms de Vazirani . Ces livres sont une enquête (et dans une certaine mesure, un bon exercice d'apprentissage des techniques mathématiques) sur les techniques de conception d'algorithmes plus avancées. Ils élargissent également votre compréhension de nombreux autres domaines dans CS, tels que les graphiques et les réseaux, la conception et l'optimisation de la structure des données.
la source
Enseignez une classe d'algorithmes.
Ou peut-être encore mieux:
écrire un manuel d'algorithmes.
la source
Essayez de résoudre des problèmes basés sur un algorithme dès que vous en lisez un. De plus, pour mieux comprendre les algorithmes et les implémenter, vous devez avoir une meilleure compréhension des structures de données. Il y a un très beau livre de structures de données écrit par Sahni. Vous pouvez l'utiliser et pour les algorithmes, vous pouvez résoudre les problèmes de programmation des défis. Les questions sont plutôt sympa là-bas.
la source
Si vous n'avez pas appris les algorithmes à l'université, je vous recommande de suivre l'un des cours en ligne, vous pouvez envisager de vous inscrire à l'un des cours sur coursera.org ou de suivre des vidéos publiées par l'Université de Stanford.
la source