Ich habe vor Jahren in einem Universitätskurs etwas über Algorithmen gelernt. Aber wenn Sie Algorithmen mit einem Buch machen wollen, dann brauchen Sie einen guten. Zwei Bücher sind für mich der Weg, um in Algorithmen einzusteigen:
- Das Algorithm Design Manual von Steven S. Skiena
- Einführung in Algorithmen von T. Cormen, C. Leiserson, R. Rivest und C. Stein
Das erste ist vielleicht eher ein praktisches Handbuch, während das letztere eher der Bibel ähnelt, aber mit Beweisen.
Die Strategie, die Sie verfolgen könnten, besteht darin, zu lesen, die theoretischen Übungen zu machen und dann so viel wie möglich zu implementieren, wobei Sie sich auf Algorithmen / Probleme konzentrieren, die Sie interessant oder herausfordernd finden oder beides. Versuchen Sie daher, alle Aspekte von Algorithmen abzudecken und nicht nur zu implementieren. Dies beinhaltet die Untersuchung ihrer zeitlichen und räumlichen Komplexität und den Nachweis ihrer Richtigkeit. Das Studium von Algorithmen ist mehr als nur die Implementierung von Algorithmen.
Wenn Sie genug Erfahrung gesammelt haben, spezialisieren Sie sich. Wenn Sie sich beispielsweise für Computational Geometry oder nicht blockierende Algorithmen interessieren, sollten Sie sich mit Büchern und Forschungsarbeiten in diesem Bereich befassen.
Spezialisierung ist gut, aber es ist auch gut, Techniken aus anderen Bereichen zu testen. Daher ist es eine gute Möglichkeit, ein breites Spektrum an Algorithmen zu lesen (und solche Algorithmen zu implementieren), um ein breites Spektrum an Fähigkeiten aufrechtzuerhalten.
BEARBEITEN: Nachdem Sie die einführenden Algorithmen durchgearbeitet haben, können Sie Bücher wie Randomisierte Algorithmen von Motwani & Raghavan oder Approximationsalgorithmen von Vazirani konsultieren . Diese Bücher sind eine Übersicht (und in gewissem Maße eine gute Lernübung in mathematischen Techniken) in fortgeschritteneren Algorithmus-Entwurfstechniken. Sie erweitern auch Ihren Einblick in viele andere Bereiche in CS wie Diagramme und Netzwerke, Datenstrukturdesign und Optimierung.