Ich habe diese Seite mit großem Interesse gelesen, aber ich finde, dass viel davon über meinen Kopf geht. Dies hat mich dazu gebracht, viel mehr über Algorithmen und CS im Allgemeinen zu lernen. Soweit ich aus meiner Forschung ersehen kann, gibt es zwei Möglichkeiten, dies zu tun.
Ich kann durch ein schönes dickes schweres Buch und arbeite mich langsam aber sicher durch.
Ich kann "lernen durch Handeln" und durch ein schönes Buch, aber anstatt es von vorne bis hinten zu lesen, gehe zu Teilen, die mich interessieren, und arbeite an der Implementierung und Anwendung von Algorithmen, die ich mag.
?
Meine Frage ist, welche der oben genannten Methoden haben Sie verwendet und würden Sie den gleichen Ansatz jemand anderem empfehlen?
algorithms
education
Daniel Gratzer
quelle
quelle
Antworten:
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 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.
quelle
Unterrichten Sie eine Algorithmusklasse.
Oder vielleicht sogar noch besser:
schreibe ein Lehrbuch für Algorithmen.
quelle
Versuchen Sie, Probleme basierend auf einem Algorithmus zu lösen, sobald Sie einen gelesen haben. Um Algorithmen besser zu verstehen und zu implementieren, müssen Sie außerdem die Datenstrukturen besser verstehen. Es gibt ein sehr schönes Buch mit Datenstrukturen, das von Sahni geschrieben wurde. Sie können das verwenden und für Algorithmen können Sie Probleme des Programmierherausforderungsbuchs lösen. Fragen sind dort ziemlich nett.
quelle
Wenn Sie an der Universität noch nichts über Algorithmen gelernt haben, empfehle ich Ihnen, an einem der Online-Kurse teilzunehmen. Sie können sich auch für einen der Kurse auf coursera.org anmelden oder den von der Stanford University geposteten Videos folgen.
quelle