Wie kann ich meinen algorithmischen Ingenuitäten verbessern?
-
28-09-2020 - |
Frage
Während des Undergrads hatte ich das Gefühl, dass meine Ausbildung meistens bestand, bestehende Theorie auf reale Probleme aufzuwarten (dh Algorithmusdesign / Analyse).Ich habe Ableitungen von vielen Algorithmen und Beweise ihrer Komplexität gesehen, aber ich bin oft von der Frage, wie man kommt, um einen Algorithmus zu entdecken.Es scheint entmutigend zu sein, sich vorzustellen, einen neuen Algorithmus zu entwickeln, der den Einfallsreichtum an einem wirksamen Ansatz beteiligt ist.Ich frage mich, ob es Möglichkeiten gibt, diesen Einfallsreichtum zu trainieren.
Meine Frage ist, wie ich die erforderlichen Fähigkeiten kultivieren kann, um ursprüngliche Ansätze für quantitative Probleme zu entwickeln?Gibt es Ressourcen, die sich auf diese Fähigkeiten konzentrieren?
Lösung
Es scheint, dass die wettbewerbsfähige Programmierung Ihnen helfen könnte. Oder nur die "Programmierung" -Teile davon. Wenn Sie Ihre Problemlösungsfähigkeiten verbessern möchten (und daher Ihre Fähigkeit, mit originellen Ideen aufzukommen), scheint es, dass das Lösen von wettbewerbsfähigen Problemen der Weg ist, da sie durch Design diese Fähigkeit zielen.
Sie benötigen zwei Arten von Ressourcen: Problemarchive und Theoriematerialien.
Für Problemarchive kann ich Ihnen vorschlagen, dass Sie es ausprobieren können
- .
- timus.online (Probleme, die einige clevere Erkenntnisse / Beobachtungen erfordern, die nach ~ 270 Schwierigkeiten starten)
- codeforce.org (Problemset-Registerkarte, reicherrige Vielfalt von Problemen, aber die Gesamtqualität ist etwas niedriger als das auf dem Timus )
- OnlineJudge.org (in ähunt gibt es einen Tisch mit Problemen, die eine Vielzahl von Problemen abdecken; eine Ergänzung für die buchen Sie wettbewerbsfähige Programmierung 3)
- urionlinejudge.com.br (hat einige tolle Probleme)
auch, es gibt auch atcoder.co.jp , das wie CodeForces ist, aber in erster Linie mathematische Probleme anstrebt.
Der Schlüssel, um originelle Ideen zu finden, besteht darin, zu wissen, was die Menschen bereits aufgestellt haben. Wenn Sie diese Ideen verstehen und sie relativ leicht anwenden können, dann kann Sie eine klugere Idee durchführen, indem Sie diese älteren Ideen in einem kluger Weg und b) Sie können wesentlich effizienter nach grundsätzlich neuen Ideen suchen, weil Sie wissen, was nicht wissen Eine neue Idee und was ist nicht die neue Denkweise, um neue Ideen zu finden.
Wenn Sie mit dem vorherigen Absatz einverstanden sind, benötigen Sie Ressourcen, in denen Sie neue Konzepte und Ideen lernen können. Der Schlüssel damit ist, den Satz oder den Algorithmus nicht nur zu verstehen, sondern auch die Intuition und den Beweis (n) zu verstehen. Beweise geben expliziten Einblickegenheiten an, wie Sie kommen und wie Sie sicher sind, dass die Idee funktioniert. Die in den Beweisen verwendeten Tricks und Algorithmen (des Denkens) ist der Schlüssel, um sich mit Ihren eigenen Ideen zu finden.
Intuition dagegen ist ein impliziter Einblick, es ist etwas, das Probleme, ihre Beweise (oder eine Teilmenge von Beweise) und das Thema des Problems im Allgemeinen verbindet. Ich sage das, damit Sie nicht denken würden, dass die Intuition etwas Magisches ist oder dass, wenn Sie es nicht bekommen, wenn Sie einen Beweis lesen, dann würden Sie es überhaupt nicht bekommen. Um es zu erwerben, müssen Sie diese Schritte ausführen
- .
- Bevor Sie die Lösung sehen, versuchen Sie, mindestens 30 Minuten lang darüber nachzudenken (für mich hilft Doodling, mit intuitiven Lösungen aufzukommen)
- dann, wenn Sie das Gefühl haben, dass einige Ideen, die Sie denken, 100% dort arbeiten, aber Sie können sie nicht ganz in Ihrem Gehirn erreichen, geben Sie sie nicht auf und halten Sie sie an, bis Sie gehen schlafen. Wenn Sie nicht in der Lage sein, über das Problem zu schlafen, dann erhalten Sie sicher, dass Sie einen Einblick erhalten, wenn Sie aufwachen. ( https://psychology.steckexchange.com/a/13366 + meine Erfahrung).
- ohne Abhängigkeit davon, ob Sie das Problem oder nicht nach einem solchen Verfahren gelöst haben, wenn Sie den Proof (en) öffnen, können Sie sie viel effizienter aufnehmen und analysieren, da Sie lesen werden nicht, um die Ideen zu kennen, aber herauszufinden, warum Ihre Ideen nicht funktionieren, wie nahe waren Sie, wo Sie sich in Ihrem Denken einen Fehler gemacht haben, was Sie vermisst haben, warum Sie sich zu sehr konzentriert haben, war nicht so relevant , was musste Sie wissen, um es sowieso zu lösen usw. usw. (so ist es, wie sq3r < / a> Methode funktioniert auch, dass Sie den Text zuerst befragen, und nur dann können Sie es als Weg lesen, um die Fragen zu beantworten. Eine aktive Lesung statt passives Lesen).
- Wenn Sie in der Lage sind, eine kassierte Intuition außerhalb der Beweise, Glückwunsch zu extrahieren konnten! Vergessen Sie jetzt dieses Problem und kommen Sie nach zwei oder drei Tagen zurück und lösen Sie ein anderes ähnliches oder ein wenig härteres Problem auf demselben Thema. Auf diese Weise werden Sie diese Intuition in Ihrem Gehirn "impressum", also um relativ lange (siehe, Abstandsrepettition )
- Wenn Sie nicht dann nicht traurig sind. Sie haben mehr oder weniger verstanden, wie die Beweise funktionieren. Das bedeutet, dass das einzige, was übrig ist, dass sie sie irgendwie mit Intuition vereinen. Um dies zu tun, lösen Sie einfach Probleme auf demselben allgemeinen Thema (Saiten, Grafiken, Zahlentheorie usw.). Intuition ist nicht an ein konkretes Problem gebunden (wenn dies der Fall wäre, würde die Intuition nicht helfen können, andere Probleme zu lösen), wenn Sie Intuitionen hinter anderen Problemen verstehen, dann verstehen Sie natürlich die Intuition hinter dem ursprünglichen Problem !
okay, so. Damit können Sie die alten Ideen effizient erfassen, den Intuition und Ingenuit verstehen
y hinter ihnen. Dies sind plausible Ressourcen (obwohl ich glaube, Sie könnten sie bereits verwenden):- .
- Einführung in Algorithmen. Cormmen
- geekforeeks.com
- wikipedia.com (ernst, sie haben tolle Artikel zu einigen Algorithmen)
- visualgo.net (vor allem, wenn Sie ein visueller Lernender sind;)
Von meiner Erfahrung an diesem Punkt können Sie von Ihnen selbst und natürlich mit originellen Ideen kommen. Sie können die Verbindungen zwischen den Ideen eindeutig sehen, und sie werden einfach in Ihren Kopf eintauchen. Durch das Lösen von Problemen werden die neuronalen Wege in Ihrem Gehirn aufrechterhalten, und Sie werden nicht die theoretische Basis und Intuition vergessen, die Sie gebaut haben. Die Lösung von Problemen bauen auch neue neuronale Verbindungen auf und bringen Freude, wenn Sie neue Erkenntnisse entdecken.
Schluss, ich möchte sagen, dass, wenn Ihre Einsicht nichts zuvor gelernt haben, dann hat es Wert. Wenn Sie zwei Ideen zusammen kombinieren, auch wenn es einfach war, erhalten Sie eine neue Idee und es wird Wert haben. Jedes Mal, wenn Sie solche Ideen auftreten, schaffen Sie auf jeden Fall etwas Wertvolles. Wenn Ihr Ziel sein würde, etwas wertvoll zu machen, dann werden Sie jedes Mal erfolgreich sein. Wenn Ihr Ziel ein "ursprünglicher Einblick" auftreten würde, dann werden Sie schnell, um schwer demotiviert zu werden, da Sie egal, was Sie tun, höchstwahrscheinlich versagen (am Anfang sicher). Wenn Sie am Ende diesen Schritten folgen, oder etwas Ähnliches, können Sie nicht besser werden! Sicher, etwas in der Zukunft, wird jedes Zehntel Ihrer Ideen ein wahrhaft originales sein;)