Determinismus in Informatik?

4 Antworten

Ja, if-else ist im Normalfall deterministisch.

Der folgende Abschnitt erklärt das recht gut:

Ein Algorithmus mit einer if-else-Anweisung kann durchaus deterministisch sein. Determinismus in der Informatik bedeutet, dass bei gleichen Eingabedaten der Algorithmus stets dieselbe Ausgabe liefert und die gleichen Schritte durchläuft. Eine if-else-Anweisung verändert diesen Sachverhalt nicht.
Die if-else-Anweisung dient lediglich dazu, Entscheidungen zu treffen, basierend auf den gegebenen Eingabedaten oder Zwischenergebnissen. Wenn die Eingabedaten gleich sind, wird auch der Entscheidungsweg (ob der if- oder der else-Zweig durchlaufen wird) bei jeder Ausführung des Algorithmus gleich sein. In diesem Sinne bleibt der Algorithmus deterministisch.
Ein Algorithmus wird nicht-deterministisch, wenn er Elemente enthält, die unvorhersehbare oder zufällige Ergebnisse produzieren (wie z.B. Zufallszahlen) oder wenn er auf externe Zustände reagiert, die sich zwischen den Ausführungen ändern können (z.B. Eingaben von Nutzern während des Algorithmus). Solche Algorithmen können unterschiedliche Ausgaben oder Verhaltensweisen bei gleichen Eingabedaten aufweisen.

Zitat - ChatGPT

LG Moon^^


RandomEi 
Fragesteller
 01.11.2023, 21:11

Die Antwort hat mir sehr geholfen, danke :)

0

Grundsätzlich ja. Determinismus bedeutet ja nur dass der Weg für einen bestimmten Eingang immer gleich und eindeutig ist.

Wenn also für den selben Eingang immer der selbe Zweig in der if Abfrage gewählt wird ist der Algorithmus deterministisch.

Anders ist es wenn du zB eine Zufallszahl in diesem Algorithmus hast. Da der Wert dieser Zahl nicht deterministisch ist, ist es auch der Algorithmus nicht mehr.

Es gibt auch die Möglichkeit, dass nach dem if- oder else-Zweig nichts passiert (Leerbefehl) oder es bei der Entscheidungsprüfung zu eine Ausnahme (Exception) kommt und keiner der Zweige ausgewählt wird.

Ich würde sagen if-else ist ebenfalls deterministisch, da ja immer nur eine der beiden Sachen eintreten kann. Sind die Abzweigungen deterministisch, so wird die eine Schleife das nicht ändern.

Anders wäre das aber wohl bei einer while Schleife, so meine Auffassung.... Angaben ohne Gewähr XD