Determinismus (Algorithmus)
Ein deterministischer Algorithmus ist ein Algorithmus, bei dem nur definierte und reproduzierbare Zustände auftreten. Für die gleiche Eingabe folgt auch immer die gleiche Ausgabe und zusätzlich wird die gleiche Folge an Zuständen durchlaufen. Zu jedem Zeitpunkt ist der nachfolgende Abarbeitungsschritt des Algorithmus eindeutig festgelegt.[1] Das bedeutet auch, dass alle Zwischenergebnisse innerhalb des Algorithmus immer gleich sind.[1]
Umgangssprachlich könnte man sagen: „Auf eine Anweisung im Algorithmus folgt unter den gleichen Voraussetzungen immer die gleiche Anweisung.“ Bei dieser Formulierung ist jedoch zu beachten, dass unter „gleichen Voraussetzungen“ exakt gleiche Zwischenergebnisse und Daten in jedem diskreten Verarbeitungsschritt gemeint ist.
Der Begriff Determinismus ist vom Begriff Determiniertheit zu unterscheiden: Ein deterministischer Algorithmus ist immer determiniert, d. h., er liefert bei gleicher Eingabe immer die gleiche Ausgabe.[2] Die Umkehrung aber gilt nicht: So gibt es Algorithmen, die nicht-deterministisch, aber trotzdem determiniert sind (d. h. das gleiche Ergebnis liefern).[2] Zum Beispiel teilt der Sortieralgorithmus Quicksort eine vorgegebene Liste immer in Teillisten ein, welche in ihrer Größe zufällig gewählt werden können, das Ergebnis ist jedoch stets das Gleiche. Somit ist Quicksort nichtdeterministisch, da seine Zwischenergebnisse sich unterscheiden können, jedoch determiniert, da das Endergebnis immer identisch ist.[1]
Im Umkehrschluss können bei einem nichtdeterministischen, randomisierten Algorithmus nicht reproduzierbare und undefinierte Zustände auftreten. Zum Beispiel hat ein Algorithmus, der eine (theoretische) Zufallszahl liefert, ein nichtdeterministisches Verhalten.
Nichtdeterministische Turingmaschinen spielen in der Theoretischen Informatik eine große Rolle: Sie ermöglichen es einem Algorithmus quasi zu „raten“. Damit werden viele Probleme mit sehr viel weniger Aufwand lösbar. Solche Turingmaschinen definieren in der Komplexitätstheorie eine eigene Komplexitätsklasse.
Weitere Eigenschaften eines Algorithmus sind
- Endlichkeit (statisch: endliche Beschreibung, dynamisch: endlich viele Ressourcen bei der Ausführung)
- Komplexität (Aufwand an Rechenzeit und Speicherplatz, hoch oder niedrig)
- Terminiertheit (Ergebnis nach endlich vielen Schritten. Ausprägung: terminierend/nicht terminierend)
- Determiniertheit (Bei gleicher Eingabe gleiches Ergebnis, Ausprägung: determiniert, nicht determiniert)
Determinismus als Eigenschaft der Welt als Ganzes behandelt der philosophische Determinismus[3]. Die Frage, ob die physikalischen Abläufe in der Welt deterministisch sind, hat weitreichende Konsequenzen unter anderem für das Verständnis von freiem Willen[4] und den Gottesbegriff[3].
Siehe auch
- Randomisierter Algorithmus (Stochastischer Algorithmus)
- Kausalität
Einzelnachweise
- Determinismus eines Algorithmus. (PDF) In: Informatik Duden. Bibliographisches Institut, Berlin, 2001, abgerufen am 31. Januar 2018.
- Bettina Selig, Vera Kern und Tilman Walther: Eigenschaften von Algorithmen. Tilman Walther, März 2004, abgerufen am 31. Januar 2018.
- Peter Schulte, Ansgar Beckermann: Determinismus. In: Philosophie verständlich. Universität Bielefeld - Abteilung Philosophie, 5. März 2005, abgerufen am 31. Januar 2018.
- Ansgar Beckermann: Haben wir einen freien Willen? In: Philosophie verständlich. Universität Bielefeld - Abteilung Philosophie, 3. Oktober 2005, abgerufen am 31. Januar 2018.
Literatur
- John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman: Einführung in die Automatentheorie, formale Sprachen und Komplexitätstheorie. 2., überarbeitete Auflage. Pearson Studium, München 2002, ISBN 3-8273-7020-5.