Laden...

Wie in das Thema Algorithmen einarbeiten?

Erstellt von BlackArtC# vor 7 Jahren Letzter Beitrag vor 7 Jahren 2.411 Views
B
BlackArtC# Themenstarter:in
29 Beiträge seit 2016
vor 7 Jahren
Wie in das Thema Algorithmen einarbeiten?

Hallo,

da ich jetzt seit paar Wochen als Anwendungsentwickler (Azubi) tätig bin, habe ich dementsprechend wieder angefangen zu programmieren. Dabei bin ich auch bei dem Thema Algorithmen hängen geblieben (und da kann man ja sehr sehr viel mit machen).

Habe schon auf ProjectEuler ein paar Aufgaben gelöst und auch hier aus dem Forum die ein oder andere Aufgabe "bearbeitet"(So Sachen wie Primzahl Generator, Fakultäten Generator, Dezimal in römische Ziffernfolge, alle Wörter von 1 - 999 auf englisch in Klarschrift ect). Nun komme ich aber an einen Punkt wo ich nicht mehr weiter komme. Ich würde gerne so Sachen wie "Conways Game of Life" oder den "Pythagoras Baum" - bzw. diverse Sortieralgorithmen programmieren, jedoch weiß ich nicht wie man sich da am besten einarbeitet. Was ich evtl. noch mit Brute Force lösen konnte, erfordert jetzt wohl mehr "Mathematik" bzw. Kenntnisse in Rekursiven Methoden ODER generell Wissen das ich einfach nicht habe.

Deswegen ist meine Frage: Wie arbeitet man sich am besten in diese Geschichte ein(und wie würdet Ihr eure ersten Überlegungen auf einem Blatt wiederspiegeln, Struktogramm ect?). Mir fällt es jetzt z.B nicht schwer zu verstehen wie ein Pythagoras Baum entsteht oder bis zu einem gewissen Level komme ich auch noch mit dem Mathe zurecht, jedoch gibt es dann einen Punkt wo ich kein Land mehr sehe. Natürlich fehlt es mir auch allgemein an Erfahrung in der Programmierung - beschäftige mich aber seit neustem gerne in meiner Freizeit mit solchen Themen.

Würde mich über Antworten freuen,

Grüße

16.807 Beiträge seit 2008
vor 7 Jahren

Nen Algorithmus ist ja nichts anderes als eine Lösung eines vorhandenen Problems.
Das kann prinzipiell auch einfach eine Schleife mit einem Filter sein; ein Algorithmus selbst sagt ja dessen Komplexität nicht aus.
Normalerweise hat man ein Problem und sucht einen Algorithmus zur Lösung - nicht umgekehrt 😃

Ich bin kein Fan von Büchern, aber für solch eher allgemeine, theoretische Themen eignen sich Bücher wirklich gut.
Und ja, man braucht relativ schnell mathematische Fähigkeiten 😃

Mein Prof damals, Helmut Balzert, hat nen Grundlagenbuch geschrieben Lehrbuch Grundlagen der Informatik: Konzepte und Notationen in UML 2, Java 5, C# und C++, Algorithmik und Software-Technik, Anwendungen (Sav Informatik), worin die Grundlagen zu Algorithmen ganz gut geschrieben sind.

Kapitel 13: Algorithmen und ihre Verifikation
Kapitel 14: Testen von Programmen
Kapitel 15: Überprüfung v. Dokumenten
Kapitel 16: Aufwand von Algorithmen
Kapitel 17: Listen und Bäume
Kapitel 18: Suchen und Sortieren

Aber halt wirklich Grundlagen.

B
BlackArtC# Themenstarter:in
29 Beiträge seit 2016
vor 7 Jahren

Vielen Dank für die Antwort (Hab ne Englische PDF gefunden, das Buch ist leider ein wenig zu teuer für mich 😕).

Villt war meine Frage etwas unglücklich gestellt, ich versuche es nochmal:

  • Wenn ich ein vorhandenes Problem habe, wie du schon sagtest, z.B denn Pythagoras Baum wie gehe ich jetzt am besten vor, einen Algorithmus zu diesem Problem zu entwickeln. Muss man dafür einfach so Fit in Mathe sein das man sich die ganzen Formeln zurechtlegt und dann einfach im Code selbst verarbeitet oder kann man da auch als "normalo" Matheversteher sich alles Stück für Stück erarbeiten ohne gleich nen anderen Code als Referenz ran zuziehen?

Gruß

849 Beiträge seit 2006
vor 7 Jahren

Hallo BlackArtC#

Also ich als bekennender Mathe Hasser kann dir sagen das Du für dieses Problem nicht viel Mathe kenntnisse brauchst. Ich habe noch nie ein Buch über das entwickeln von Algorithmen gelesen. Trotzdem habe ich direkt erkannt (beim lesen des Wiki eintrags zum Baum) wie ich das Problem angehen würde.

Nimm dir immer erst das kleinste Problem vor. In diesem Fall das Rechteck was Du schon kennst. Und dann überleg Dir was Du brauchst um die nächsten 2 Rechtecke zu zeichnen. Diese merkst Du Dir dann in einer Liste. Danach iterierst Du über die Liste und hängst die nächsten Rechtecke dran.

Irgendwann sind die Rechtecke so klein, das es sich nicht mehr lohnt zu Zeichnen.. Das ist dann der Ausstieg.

Je mehr man sich genau an solche Probleme traut und sie mal durchspielt, desdo mehr Übung bekommt man, desdo weniger muss man darüber nachdenken.

T
708 Beiträge seit 2008
vor 7 Jahren

Falls Du noch mehr Algorithmen suchen solltest:
Algorithmus der Woche

Dort werden auch alle Probleme erläutert, Strategien entwickelt und Lösungsvorschläge gegeben.
Es lohnt schon das lesen, ohne jeden Algorithmus nach zu programmieren.

B
BlackArtC# Themenstarter:in
29 Beiträge seit 2016
vor 7 Jahren

Erstmal danke für die Antworten!

@unconnected

Wie lange hast du für dieses Problem gebraucht bzw. wie hast du dir da deine Strategie zurecht gelegt? Ich meine wie der Baum entsteht ist eigentlich sehr simpel, aber wie ich dann die Vierecke/Dreiecke für jeden Ast bekomme ist wieder ne andere Nummer.

@trib

Danke für den Link. Hab mir mal paar Einträge durchgelesen - sind echt gut und verständlich geschrieben, da kann man bestimmt mal die ein oder andere Sache programmieren (vor allem das verschlüsselungs Zeug)