Algorithmen

Algorithmen - brauchen wir sowas?

Wenn Sie Software entwicklen: Ja! Denn "Ein Algorithmus ist eine formale Handlungsvorschrift zur Lösung eines Problems oder einer bestimmten Art von Problemen in endlich vielen Schritten" (Wikipedia). Somit ist jedes Stück Software die Umsetzung eines Algorithmus mit Hilfe einer Programmiersprache.

Natürlich sind viele Algorithmen relativ einfach, z.B. Datenbankzugriffe, Verarbeitung von Benutzereingaben, Aufbereitung von Daten zur Ausgabe. Andere Aufgaben stellen jedoch ausgesprochen "harte Nüsse" dar, deren programmiertechnische Lösung viel Nachdenken und viel Hintergrundwissen aus dem Forschungsbereich "Algorithmik" benötigt.

Algorithmen - haben wir! Aber...

Oft lassen sich Aufgaben einfach lösen. Diese offensichtlichen Lösungen benötigen jedoch viel Zeit und/oder viel Speicher und stellen somit ein Performanzproblem dar.

Hierzu ein einfaches Beispiel:
Die Kursschwankungen einer Aktie wurden über einen bestimmten Zeitraum täglich gespeichert. Nun soll ermittelt werden, zu welchem Zeitpunkt die Aktie den meisten Gewinn erbracht hätte; es soll im Nachhinein bestimmt werden, wann der optimale Zeitpunkt zum Kauf und zum Verkauf der Aktie gewesen wäre. Dieser Zeitraum ist dadurch gekennzeichnet, dass die Summe der Kursschwankungen in diesem Intervall größer ist als in jedem anderen Zeitraum. Eine mathematische Modellierung dieser Aufgabenstellung ist: Gegeben ein Vektor A mit n Zahlen, bestimme die Indizes a und b mit 1 ≤ abn, so dass für alle Indizes c und d mit 1 ≤ cdn gilt:

Eine direkte Umsetzung dieser Gleichung liefert einen einfachen Algorithmus, dessen Zeitbedarf in der Größenordnung n3 liegt. Durch Anwenden von Hintergrundwissen aus der Algorithmik läßt sich ein intellektuell aufwendigeres Verfahren angeben, dessen Zeitbedarf jedoch nur in der Größenordnung n liegt. Somit bietet dieses Verfahren einen erheblichen Zeitgewinn.