it-swarm.dev

Wie lerne ich Algorithmen und Datenstrukturen?

Dies ist eine Fortsetzung von meine vorherige Frage wo ich gefragt habe, ist es notwendig, Algorithmen und Datenstrukturen zu lernen. Ich fühle ja es ist.

Jetzt arbeite ich in einer Umgebung, in der ich nie die Möglichkeit bekommen werde, es durch Experimentieren oder praktisch oder in irgendeiner Aufgabe zu lernen. Was ist der richtige Ansatz wie die richtigen Bücher, die richtigen Probleme, die richtigen Ressourcen, die ich durchlaufen kann, um sechs Monate oder ein oder zwei Jahre Zeit zum Erlernen von Algorithmen und Datenstrukturen zu haben? Und meinen Geist so formen, dass er Probleme mit Datenstrukturen und Algorithmen in Verbindung bringen kann.

38
sushil bharwani

Lesen.

Nein, wirklich, lesen Sie.

Lesen Sie alles über Algorithmus und Design, was Sie finden können. Es gibt phänomenale Bücher da draußen. Die Sedgewick-Algorithmusbücher sind gut. Das Algorithm Design Manual von Skiena ist ebenfalls gut. Zusammen folgen mir diese Bücher in jedem Bücherregal bei jedem Job, zu dem ich gehe, zusammen mit The Mythical Man-Month.

Dann fragen Sie.

Sprechen Sie mit Menschen, die Sie respektieren. Fragen Sie sie, welche Entscheidungspunkte sie hatten und warum sie die Entscheidungen getroffen haben, die sie getroffen haben. Die Guten werden Ihnen immer sagen können: "Ich habe mich für X entschieden, weil es auf diese Weise besser als A, B ist. Ich hätte mit C gehen können, aber ich fand, dass dies aus diesem Grund eine bessere Wahl war.".

Als nächstes tun.

Sachen bauen. Baue Dinge, die du niemals benutzen wirst. Bauen Sie Dinge, die Sie nie brauchen werden. Schreiben Sie ein Programm, das ein Sudoku-Rätsel löst. Jetzt mach es nochmal. Und wieder. Baue es auf 5 völlig verschiedene Arten. Erstellen Sie ein Programm, das Sudoku-Rätsel generiert, und geben Sie es an die Löser weiter. Finden Sie heraus, welcher Löser am schnellsten ist. Und dann...

Finde heraus warum.

Das "Was" ist fast nie wichtig. Ich meine, ja, es ist wichtig, das vorliegende Projekt abzuschließen, aber wenn Sie am Ende das "Was" kennen, ohne das "Warum" zu kennen, können Sie es genauso gut gar nicht erst tun. Sie haben einen Stichpunkt in Ihrem Lebenslauf. Holen Sie sich einen Keks und gratulieren Sie sich. Das "Warum" ist so viel wichtiger als das "Was".

Und für die Aufzeichnung war Sudoku ein Beispiel. Ich habe viel Freizeit damit verbracht, diese Übung mit einer Menge logischer Rätsel auf Kongregate durchzuarbeiten, und dabei viel gelernt.

http://www.Amazon.com/Bundle-Algorithms-Parts-1-5-Fundamentals/dp/020172684X/http://www.Amazon.com/Algorithm-Design -Manual-Steven-Skiena/dp/1848000693 /http://www.Amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/

40
Hounshell

Algorithmen

Als ich zwölf Jahre alt war, nahm ich Zauberunterricht in einer Gruppe. Der Name des Magiers war Joe Carota. Er hat einmal einen Trick gemacht und ich platzte heraus: "Wie hast du das gemacht?" Er sagte an diesem Tag etwas, das mir seitdem in Erinnerung geblieben ist.

Joes Antwort: "Michael, wenn du wirklich wissen willst, wie dieser Trick gemacht wird, musst du herausfinden, wie du es selbst machen würdest."

Natürlich wollte ich das nicht hören, aber ich konzentrierte mich darauf, Probleme zu lösen. Dies war aus meiner Sicht eine Problemlösung. Wenn mein erster Versuch, das Problem zu lösen, siebzehn Schritte dauerte und wirklich klobig war, war die gute Nachricht, dass ich das Problem gelöst habe.

Wenn ich mir dann die von mir entwickelte Lösung anschaue und nach Möglichkeiten suche, diese Lösung zu verfeinern, lerne ich, wie ich das Endergebnis optimieren kann. Später in meinem Leben als Computerprogrammierer fand ich heraus, dass dieser Prozess als "schrittweise Verfeinerung" bezeichnet wurde. Ich denke, heute nennen sie es Refactoring.

Es hat damals funktioniert, es funktioniert heute noch.

hier leitet der folgende Link Sie zu einer der erfolgreichsten DS und Algorithms-Klassen von MIT, denen ich je gefolgt bin) weiter.

http://academicearth.org/courses/introduction-to-algorithms

Ich hoffe, Sie werden diese Videoserie genießen. Viel Glück !!!

9
Tharindu Rusira

Sehen Sie nach, ob Sie an einem Online-Kurs teilnehmen oder sich unterrichten lassen können. Gelingt dies nicht, dies tauchte in einer schnellen Google-Suche auf. Ich habe im vergangenen Frühjahr gerade eine Klasse besucht (zum ersten Mal bin ich von EE zu Software gewechselt) und es war nicht allzu schwer zu lernen wenn Sie Zeiger gut verstehen.

2
Stephen Furlani

Wenn Sie keinen Kurs dazu belegen können, würde ich das Algorithm Design Manual empfehlen. Es gibt eine kostenlose PDF hier , aber es lohnt sich, das eigentliche Buch zu bekommen, wenn Sie professionell programmieren möchten.

2
Jason Baker

Beginnen Sie mit der Lösung klassischer Probleme, zum Beispiel Sphäre online , die Site sieht vielleicht nicht so schick aus, aber Junge, dies sind klassische Programmierprobleme, die viele der heute verwendeten wichtigen Datenstrukturen und Algorithmen erfordern.

Lösungen können in einer Vielzahl von Programmiersprachen von C/C++ bis JavaScript, LISP, Smalltalk, Assembler und weiteren 40 Sprachen eingereicht werden. Sie können sich also ganz darauf konzentrieren, das Problem mit der Programmiersprache zu lösen, mit der Sie sich wohl fühlen.

1
Ernelli

CLRS

Dies ist bei weitem meine Lieblingsressource. Ich habe es in meinem Bachelor-Kurs für Informatik-Algorithmen verwendet und 4 Jahre später das Buch gekauft, um es selbst zu lesen und mich auf meinen M.S. Comp Sci Kurse. Es ist keineswegs einfach zu lesen, aber wenn Sie daran arbeiten, einige der vorgestellten Mathe/Beweise zu verstehen und dann den Pseudocode in Ihren Lieblingssprachen zu implementieren, ist es den etwas hohen Preis wert. Das von anderen erwähnte Algorithm Design Manual ist auch eine großartige Ressource zum Erkennen von Lernproblemen, aber ich fand, dass CLRS für reine Details besser ist.

1
Kurtis

Versuchen Sie, sich für einen Bachelor-Kurs in Datenstrukturen und Algorithmen einzuschreiben. Es ist immer gut, diese Konzepte zusammen mit anderen zu lernen.

1
Martijn Verburg

Sie können immer so etwas versuchen: http://codekata.pragprog.com/

Ich habe immer besser gelernt, indem ich es mir ausgedacht habe, anstatt es zu lesen. Sie sollten jedoch Dokumentation/Lesematerial zur Verfügung haben, um nach Antworten zu suchen.

0
RobotHumans

Kaufen Sie dieses Buch , leihen Sie dieses oder stehlen Sie dieses! Rest folgt :)

Einführung in Algorithmen von Rivest und Cormen. Es wird sehr schwierig sein, zunächst zu folgen, wenn Sie die Erklärung des Mergesort in der Einführung überwunden haben. Alles entfaltet sich schön zu dir.

Außerdem werden Sie besser, wenn Sie die im Buch angegebenen Probleme lösen. Ich wollte mich auch nach meinem Schulabschluss nie wirklich von dem Buch trennen. Es ist so gut.

0
Venki