Laut einer Studie der Bertelsmannstiftung von Anfang 2018 weiß der größte Teil der Bevölkerung nicht was ein Algorithmus ist oder was er macht. Dabei sind Algorithmen einer der wichtigsten Bausteine von Software ganz allgemein. 45% der Befragten fällt zu dem Begriff Algorithmus spontan nichts ein. 46% sind unentschlossen ob Algorithmen mehr Chance oder Risiko bedeuten. 73% fordern ein Verbot von Entscheidungen die Software alleine trifft.
Diese Beobachtung ist schockierend, denn wie bereits erwähnt sind Algorithmen essentielle Bestandteile von Softwareprodukten. Die Tatsache, dass rund die Hälfte der 1221 Befragten weder Pro noch Contra Algorithmen sind lässt meiner Meinung nach auf einer große Unwissenheit in diesem Gebiet schließen. Mit diesem Artikel möchte ich gerne ein Grundverständnis für Algorithmen schaffen. Es ist nämlich keinesfalls leicht zu sagen das Algorithmen per se Gut oder Böse sind. Aber lesen Sie selber.
Algorithmus als Kochrezept
Ein Algorithmus ist eine eindeutige Handlungsvorschrift zur Lösung eines Problems.
(Quelle: Wikipedia)
Die zwei wichtigsten Schlagworte aus diesem Zitat sind Handlungsvorschrift und Problem. Ein Problem kann alles sein:
- Wie kann ich Person X die beste Werbung bei einer Google suche zeigen.
- Wie lautet die Quersumme einer Zahl.
- Wie kann bringe ich eine Reihe von Zahlen oder Daten in eine gewünschte Reihenfolge oder auch
- Wie kann ich einen Kuchen backen.
Die ersten 3 Problemen werden die meisten sofort mit Informatik, Computer oder Mathematik in Verbindung bringen. Und richtig: Informatiker und Mathematiker beschäftigen sich sehr oft und gerne mit Algorithmen. Sie versuchen etwa eine Problem schneller zu lösen in die effizientere Algorithmen erarbeiten oder solche die weniger Speicherplatz brauchen. Aber auch das vierte Problem kann man mit einem Algorithmus beschreiben. Sehr gut sogar.
So oder so ähnlich könnte ein Algorithmus für einen Kuchen aussehen (zugegeben, im Detail müsste man ihn noch etwas verfeinern). Und nichts anderes macht eine Computer-Algorithmus. Wir als Programmierer geben den Computer sehr präzise Anweisungen wie er ein Problem zu lösen hat. Ein Algorithmus zur Bestimmung der Quersumme einer Zahl könnte so aussehen:
- Bestimme die Anzahl der Ziffern einer Zahl und merke diese Zahl in n
- q bekommt den Wert 0
- Addiere die n-te Ziffer und q.
- Merke das Ergebnis aus Schritt 3 in q
- Erniedrige die Zahl n um 1
- Ist n > 0? Falls ja, gehe zu Schritt 3. Sonst Ende
Beispiel
Ein einfaches Beispiel soll den vorangegangenen Algorithmus verdeutlichen. Problemstellung: Es soll die Quersumme der Zahl 1234 gefunden werden.
Schritt für Schritt BeispielLaufende Nr. |
Schritt | Anweisung | Wert von n |
Wert von q |
1 | 1 | speichere in die Anzahl der Ziffern | 4 | ? |
2 | 2 | speichere in q die Zahl 0 | 4 | 0 |
3 | 3 | 4. Ziffer + q = 4 + 0 = 4 | 4 | 0 |
4 | 4 | speichere in q das Ergebnis aus Schritt 3 | 4 | 4 |
5 | 5 | Erniedrige n um 1 | 3 | 4 |
6 | 6 | Ist n > 0? Ja! Gehe zu Schritt 3. | 3 | 4 |
7 | 3 | 3. Ziffer + q = 3 + 4 = 7 | 3 | 4 |
8 | 4 | speichere in q das Ergebnis aus Schritt 3 | 3 | 7 |
9 | 5 | Erniedrige n um 1 | 2 | 7 |
10 | 6 | Ist n > 0? Ja! Gehe zu Schritt 3. | 2 | 7 |
11 | 3 | 2. Ziffer + q = 2 + 7 = 9 | 2 | 7 |
12 | 4 | speichere in q das Ergebnis aus Schritt 3 | 2 | 9 |
13 | 5 | Erniedrige n um 1 | 1 | 9 |
14 | 6 | Ist n > 0? Ja! Gehe zu Schritt 3. | 1 | 9 |
15 | 3 | 1. Ziffer + q = 1 + 9 = 10 | 1 | 9 |
16 | 4 | speichere in q das Ergebnis aus Schritt 3 | 1 | 10 |
17 | 5 | Erniedrige n um 1 | 0 | 10 |
18 | 6 | Ist n > 0? Nein! Ende. Das Ergebnis steht in q | 0 | 10 |
Um zu prüfen ob unser Algorithmus richtig gerechnet hat können wir einfach die Gegenprobe machen und rechnen selber per Hand. 1 + 2 + 3 + 4 = 10. Also ist unser Algorithmus korrekt.
Natürlich ist dies nur ein sehr einfacher Algorithmus und man kann sich leicht vorstellen, dass aus grundsätzlich einfachen Anweisungen beliebig komplexe Algorithmen entstehen können. Damit kann man
Fazit
Was ist ein Algorithmus? Eine Algorithmus ist eine Reihe von Anweisung die ein konkretes Problem lösen sollen. Das Problem ist oft mathematischer Natur, das ist jedoch nicht zwingend der Fall. Unser Kuchen-Beispiel zeigt, dass man auch Algorithmen für nicht-mathematische Probleme entwickeln kann.
Algorithmen haben also keine böse Seele. Sie sind auch nicht gemacht um Arbeitsplätze zu vernichten. Zumindest nicht in erster Linie. Algorithmen lösen Probleme. Menschliche Probleme wobei Mathematiker und Informatiker viel Zeit aufwenden um gute (korrekte) und effiziente (Zeit- und Speichereffizient) zu entwerfen.
Wenn das nächste mal einer fragt: „Was bringen Sie mit Algorithmen in Verbindung?“, dann sagen Sie doch einfach: „Kuchenbacken“.