Problemlösung / Algorithmus Fähigkeit ist ein Händchen oder kann mit Übung entwickelt werden? [geschlossen]


70

Jedes Mal, wenn ich ein schwieriges Problem anfange und wenn ich die genaue Lösung nicht herausfinden kann oder nicht anfangen kann, gerate ich wie folgt in diese unendliche Diskussion mit mir selbst:

  • Diese Fähigkeiten zur Problemlösung / Mathematik / Algorithmen sind begabt (nicht, dass Sie durch Üben lernen können, durch Übung meistern Sie nur die Art von Problemen, die Sie bereits zuvor gelöst haben).

  • Nur diejenigen, die gute Schulen besucht haben, können dies tun, da sie es früh gelernt haben.

Was denken Sie, kann man durch harte Arbeit eine beeindruckende Problemlösung / Algorithmen erreichen, oder müssen Sie dieses zusätzliche Gen in sich haben?


SO ist nicht für Umfragefragen gedacht. Siehe die FAQ unter stackoverflow.com/faq
danben

Übung hilft, auch wenn Sie kein natürliches Talent haben;) Versuchen Sie, von anderen zu lernen.
Hamish Grubijan

12
Es ist eher eine echte Verwirrung als eine Umfrage. Wenn Sie fragen, kann ich die Frage entfernen, aber das beendet sie hier nicht. Ich bin sicher, dass viele Studenten wie ich die gleiche Verwirrung haben.
Ramadheer Singh

2
Gott! Ich wollte das gleiche Q @ Nasgul fav und +1
Sobiaholic

2
Daran denke ich auch oft. Als jemand, der zuerst zur Arbeit ging, bevor er zur Universität ging. Es überrascht mich immer wieder zu sehen, wie Kommilitonen, die keine Programmiererfahrung hatten, viel schneller lernen als ich und schwierige Programmierprobleme ohne viel Übung lösen können (trotz der anfänglichen Lücke). In der Zwischenzeit habe ich versucht, immer wieder härtere Probleme zu lösen, aber mein Talent, Probleme zu lösen, scheint sich trotz langer Versuche überhaupt nicht zu verbessern. Ich frage mich, ob ich an die Grenzen meiner Intelligenz und meines Arbeitsgedächtnisses
gestoßen bin

Antworten:


73

Ich habe einen großen Teil meines Lebens damit verbracht, mich zu fragen, ob Talent etwas ist, das Sie entwickelt haben oder mit dem Sie geboren wurden. Dann kam mir der Gedanke, dass die Antwort irrelevant war, zumindest wenn Sie die Dinge selbst erreichen wollen. Selbst wenn Sie Talent haben, hilft es Ihnen nur, wenn Sie so tun, als ob Talent nur aus der Praxis stammt, weil Sie so viel härter arbeiten werden.

In Bezug auf Algorithmen und andere wirklich schwierige Fähigkeiten braucht es Übung, um gut zu werden. Ob Sie auch etwas Talent haben müssen oder nicht, weiß ich nicht. Ich weiß jedoch, dass die Leute bei Wettbewerben wie TopCoder enorme Verbesserungen erzielt haben durch das Üben . Ich selbst habe viel daraus gelernt.

Wenn Sie ein systematisches Trainingsprogramm einrichten, sind Sie dem Rudel weit voraus, auch wenn es nicht perfekt ist. Ich habe inzwischen einige hundert Programme auf TopCoder geschrieben und es hat mein Denken tiefgreifend beeinflusst. Ich habe viele Dinge gelernt, die man nur lernen kann, wenn man sie falsch macht und dann meinen Fehler behebt. Ein Freund von mir hat mehrere tausend Programme auf TopCoder geschrieben und er ist viel besser als ich, obwohl seine Statistiken zu Beginn schlechter waren als meine. Das ist kein Zufall.

BEARBEITEN:

Ich bin gerade auf diese Antwort bei math.stackexchange gestoßen. Ich denke, es ist eine der besten Erklärungen, wie man Algorithmen lernt, die ich gelesen habe, obwohl er über Schach und Mathematik schreibt.


30

1) Versuchen Sie nicht, das Problem in seiner allgemeinsten Abstraktion zu lösen.
2) Wählen Sie den richtigen Zeitpunkt, zu dem Ihr Geist maximal arbeitet.

Ich bekam den ersten Punkt als Rat von einem Mathematiklehrer. Es klappt! Versuchen Sie, verschiedene Beispiele und Szenarien für das Problem zu erstellen. Dies hilft sehr bei der Identifizierung der Randfälle, die bei den meisten Problemen am schwersten zu verstehen sind.

Meine Lieblingszeit für die Lösung dieser Art von Problemen ist die Morgendämmerung (4-6 Uhr). Schlafen Sie in der Nacht zuvor gut und wachen Sie auf, um das Problem zu lösen. Die Stille ist dein Freund.

Ich glaube, dass einige Leute mehr Intelligenz haben als andere, aber das ist nicht der wichtigste Faktor. Es ist , wie Sie diese Intelligenz nutzen , das Problem zu lösen.


Ich glaube definitiv an jeden Charakter, den du gesagt hast, und diese beiden Ratschläge sind die besten, die ich je erhalten habe. Ich markiere die Antwort von @ Jørgen Fogh als endgültig, da dies meine Verwirrung beseitigt. Die perfekte Antwort wäre deine und seine Kombination. Ich denke, Sie haben in Ihrem letzten Satz dasselbe gesagt, aber die ausführliche Version hat mich irgendwie mehr überzeugt. Vielen Dank für Ihre Zeit und Hilfe :).
Ramadheer Singh

1
Ich wollte dir nur noch einmal sagen, dass deine Tipps mir immer noch helfen (jedes Mal, wenn ich viel zu tief bin, versuche ich mich an deine beiden Tipps zu erinnern) @AraK, vielen Dank!
Ramadheer Singh

18

Als ich zwölf Jahre alt war, nahm ich Zauberunterricht in einer Gruppe. Der Name des Magiers war Joe Carota. Er hat einmal einen Zaubertrick 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 weiter nach Möglichkeiten suche, diese Lösung zu verfeinern, lerne ich, wie man das Endergebnis rationalisiert. Später in meinem Leben als Computerprogrammierer fand ich heraus, dass dieser Prozess als "schrittweise Verfeinerung" bezeichnet wurde.

Es hat 1971 funktioniert und funktioniert auch heute noch.


9

Für mich ist es ein bisschen Talent, aber viel wichtiger ist Erfahrung und Übung. Wenn Sie viele Probleme kennen und die besten Lösungen dafür finden, können Sie leichter eine Lösung für ein neues Problem finden.

Beispiel aus meiner eigenen Vergangenheit: Es gab einen Programmierwettbewerb (gut für das Training, übrigens) und ich habe keine gute Lösung gefunden. Der Gewinner löste das Problem hauptsächlich mit einem KD-Baum. Um dies zu erreichen, müssen Sie zunächst wissen, was in diesem Fall ein KD-Baum ist und wo er nützlich ist. Heute ist mir das klar und wenn ich wieder auf ein ähnliches Problem stoßen würde, könnte ich es sehr schnell lösen.


1
Was Sie zu 100% gesagt haben, macht Sinn. Die vielen Probleme, die man lösen wird ... die vielen Vertraulichkeiten, die er / sie verdienen wird.
Arup Rakshit

3

Fleiß schlägt Talent, wenn Talent nicht hart arbeitet. Diese obige Aussage definiert, was das wahre Potenzial der Persistenz ist. Jede Fähigkeit in dieser Welt kann durch Übung entwickelt werden. Dieser Prozess ist analog zum Nageln eines Nagels in die Wand. Er erfordert nicht nur die richtige Größe, sondern auch die richtige Richtung.


1

Um die Frage zu beantworten, müssen wir zuerst die Zutaten für die Lösung eines Problems finden.

  1. Es gibt ein sogenanntes natürliches Talent. Dies ist das Talent, mit dem Sie geboren werden. Dies bestimmt Ihr Potenzial. Menschen, die mit mehr grauer Substanz geboren wurden, tendieren dazu, bessere Leistungen zu erbringen als Menschen, mit denen die Natur weniger großzügig war. Dies bedeutet, dass eine Person mit besserem Talent eine höhere Wahrscheinlichkeit hat, bessere Leistungen zu erbringen als eine Person, die nicht so talentiert ist, wenn sie dieselben Parameter hat (Bildung, Persönlichkeit, Widerstand gegen Stress, Willenskraft). Wenn jemand feststellt, dass er oder sie dazu neigt, viel Zeit zu verbrauchen, um neue Informationen aufzunehmen, bis er oder sie sie anwenden kann, dann ist die klügste Entscheidung für die Person, die Programmierung zu verlassen und ein Leben voller Frustration zu verhindern. Natürlich kann man als Anfänger nicht erwarten, das komplexeste Phänomen sofort verstehen zu können, aber wenn ein Anfänger zu langsam ist, um Anfängerkonzepte zu verstehen,

  2. Talent entwickelt. Man hat ein natürliches Talent, aber das allein reicht nicht aus, um Probleme zu lösen. Ich habe noch nie Neugeborene gesehen, die Code geschrieben haben. Man muss etwas Bildung bekommen. Je früher desto besser. Auch die Qualität der Schule ist von großer Bedeutung. Wir sollten niemals leugnen, dass eine Person, die nicht die Möglichkeit hatte, an einer guten Schule früh Programmieren zu lernen, im Wettlauf um den Erfolg ein Handicap hat. Wenn jedoch jemand gute Schulen frühzeitig verpasst, kann das Handicap mit harter Arbeit abgedeckt werden. Zum Beispiel hatte meine Frau eine Ausbildung in einem anderen Bereich, aber nach Abschluss der Universität fand sie keine richtigen Jobs. Also fing ich an, sie zu erziehen. Nach einem Monat lernte sie lernen und konnte fast alle Probleme lösen, die ihr gestellt wurden, aber sie war noch nicht effektiv. Allmählich begann sie, auf autodidaktische Weise zu lernen. Nach einem Jahr war sie bereits professionelle Programmiererin. Sie hat keine Zeitung von einer Schule, die sie codieren kann, aber sie macht einen fantastischen Job. So verpasste sie die frühe Ausbildung, konnte aber später das Handicap neutralisieren. Entwickeltes Talent kann als die Menge an Informationen beschrieben werden, die gelernt und bekannt sind, zusammen mit der richtigen Einstellung, dem wissenschaftlichen Ansatz für neue Arten von Herausforderungen.

  3. Übung: Übung ist gut, um das Niveau des entwickelten Talents zu erhöhen, sollte jedoch nicht die einzige Quelle für die Entwicklung von Talenten sein. Neben der Praxis müssen die theoretischen Horizonte regelmäßig erweitert werden.

  4. Arbeitsstrategie: Man kann extrem talentiert sein, viel Wissen haben. Wenn er oder sie keine richtige Arbeitsstrategie hat, hat er oder sie ein Handicap. Immer wenn eine neue Aufgabe gestellt wird, sollten die richtigen Fragen gestellt werden:

    • Was war die nächste Aufgabe zu dieser? Kann ich meine Lösung in gewissem Umfang wiederverwenden?
    • Was soll ich lernen, um dieses Problem lösen zu können?
    • Wie kann ich klaren und effizienten Code schreiben, um das Problem zu lösen?

Die Antwort lautet also: Es ist zwar gut, so früh wie möglich eine exzellente Ausbildung zu haben, aber nicht notwendig. Vergessen Sie nicht, dass das Leben die beste Schule ist und Sie die verpasste Gelegenheit später wieder gutmachen können, wenn Sie Talent, Willenskraft und Informationsquelle haben. Übung zeigt Ihnen nicht nur die richtigen Schritte zur Lösung eines Problems, sondern erweitert auch Ihren Horizont. Wenn man beispielsweise Zahlensysteme versteht, kann man später eine Vielzahl von Dingen verstehen, wie z. B. Farben in CSS, PSD oder Zahlenüberläufe. Wenn jemand lernt, wie man in Java codiert, wird er C # sehr schnell verstehen. Die Praxis vermittelt Ihnen also Wissen über die Lösung eines bestimmten Problemtyps, vermittelt aber auch neues theoretisches Wissen, das in verschiedenen Bereichen nützlich sein wird. Die Kernkompetenz, die man entwickeln muss, ist die Fähigkeit, schnell zu lernen.


0

Es gab viele Beispiele für Menschen mit außergewöhnlichem Talent und minimalem Erfolg. Sie sehen solche Beispiele in Sport, Politik, Wirtschaft und auch allgemein um Sie herum. Nach einer gewissen Grenze ist Talent eine bedeutungslose Tugend. Es ist meistens das harte Wort, das Sie mit größerem Erfolg belohnt. Wenn Sie Cricket folgen, hierist ein Link mit gutem Beispiel. Ich bin der Meinung, dass das gleiche Prinzip für Algorithmen und Problemlösungen gilt. Vor einem Jahr habe ich algorithmische Probleme aufgegriffen und mich völlig verloren gefühlt. Ein Jahr lang in das Lesen algorithmischer Bücher, das Lösen ihrer Übungen und das Üben weiterer Programmierprobleme investiert, bin ich zuversichtlich, dass ich jetzt die meisten Probleme lösen kann (ich habe noch einen langen Weg vor mir, um mich darin effizient zu machen). Aber der Punkt ist, dass kluge Arbeit ausreicht, um dieses Talent zur Problemlösung zu entwickeln.


0

Talent ist billig und ohne harte Arbeit nutzlos. Talent kann Sie nur bis zu einem gewissen Grad mitnehmen, aber mit harter Arbeit und Übung kann jeder große Höhen erreichen

- Josh Waitzkin, 8-facher nationaler Schachmeister, 13-facher nationaler und 2-facher Weltmeister.

Er selbst sagt dies in seiner Stimme Chessmaster Grandmaster Edition

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.