Was sind die wichtigsten Algorithmen



  • Citizen42 schrieb:

    Ich habe mal mit einem Bekannten geredet, der als Webentwickler arbeitet und der hat in 10 Jahren noch nie irgendeine Datenstruktur oder einen Algorithmus selbst implementiert.

    Das ist bei Webentwicklern auch sehr sehr wahrscheinlich. Kommt vielleicht noch drauf an, wer sich als Webentwickler bezeichnet, aber ich denke, jemand der Backends in J2EE schreibt wird sich nicht unbedingt als Webentwickler bezeichnen. Aber so ein richtiger "Webentwickler" ist so ziemlich das anspruchsloseste, was ein Informatiker machen kann.



  • ich würde mich dem, was Gregor geschrieben hat anschließen.
    Als ergänzende Richtlinie noch:
    zuerst einfach, später schwerer bzw. "komplexer" (oder chaotischer...).
    Und: Spaß hat Vorrang, also Algorithmen, die im Herzen brennen 😉
    Aber: Wenn ein so furchtbar interessierender Algorithmus einen überfordert, nicht entmutigen lassen, sondern -> wenn es geht, zerlegen, einfachere Muster finden.
    Schritt für Schritt.

    So hausbacken das auch klingt. Ich kann mich noch recht gut daran erinnern, welche Art von innerer Feierlichkeit-Stimmung bei mir aufkam, als ich beim Ausfüllen einer Quadrierliste ganz intuitiv auf z.b. 16 * 16 = 160 + 60 +36 kam und dann viel schneller quadrieren konnte (23 * 23 = (230+30) * 2 + 3*3 usw.). D.h.: Auch bei einfachen Sachen kann man tolle Methoden entdecken, wenn man sich nur öfter (also i.d.R. mit Lust) damit beschäftigt.
    Wenn man versucht, sich Sachen in die Birne zu prügeln, nur weil sie z.B. Insider-Group-Relevant oder im populären Sinne wichtig erscheinen, findet man interessante Zusammenhänge vielleicht weniger wahrscheinlich.

    Für bestimmte Probleme gibt es im Internet Testprogramme zum Algorithmenvergleich, die dann konkret weiterhelfen
    Generelle Materialabhängigkeit kann man mit Sortieralgorithmen gut lernen.
    Viele spannende Geschichten gibt es in der Medienwelt mit Bild-und Tonbearbeitung, Verschlüsselung usw.
    Recht nützlich und wichtig fände ich ein gutes Verständnis von Zufallszahlengeneratoren, Möglichkeiten und Grenzen (siehe hierzu auch Zitate in Zeitschriften).
    Hilfreich für Grafikprogrammierung ist ein gutes Verständnis der linearen Algebra.

    Relativ wichtig wären auch aktuelle Entwicklungen oder Modeströmungen, sowas wie "Schwarmintelligenz", KI und Roboter(programmier)technik(en) (und->Tauschbörsen).
    Bei der Parallelisierung gibt es manchmal große Vorteile, manchmal gar keine.
    Das Licht selbst zum Beispiel braucht sich nicht zu parallelisieren, hat, wenn man so will, "alle Zeit der Welt" 😉



  • Citizen42 schrieb:

    Ich habe mal mit einem Bekannten geredet, der als Webentwickler arbeitet und der hat in 10 Jahren noch nie irgendeine Datenstruktur oder einen Algorithmus selbst implementiert.

    Ich hatte mal einen Kollegen, bei dem war es ähnlich. Wir haben zusammen ein Projekt bearbeitet, bei dem es im Wesentlichen nur darum ging, Daten von A nach B zu schaufeln (wie so oft). Aber es stellte sich heraus, dass man die Abhängigkeiten in einen bestimmten Teilaspekt als Graphenproblem auffassen konnte, und mit dem richtigen Algorithmus war meine Lösung auf einmal Größenordnungen schneller als seine ad-hoc-Lösung. Ich weiß die Details nicht mehr, es war was ganz einfaches, Tiefensuche oder Topologische Sortierung oder sowas. Halt blöd, wenn man davon noch nie was gehört hat.


Anmelden zum Antworten