Guten Morgen,
gibt es einen Trick wie man auf Anhieb erkennen kann ob ein imperativer Algorithmus (Pseudocode) Deterministisch, Determiniert oder terminierend ist? Wenn mir das jemand netterweise auch anhand der Beispiele mal kurz erläutern könnte bzw. ein Feedback zu meinen "Versuchen" abgeben könnte
Input und Output (Ergebnis) unterscheiden sich , also "Nicht-Determiniert"
Wir haben einen Output (Ergebnis), also "terminierend"
Die Methode liefert am Ende entweder m-1 oder m+1 , also "Determiniert"
Wir haben keinen Output (Ergebnis), also "nicht terminierend"
Input und Output (Ergebnis) unterscheiden sich , also "Nicht-Determiniert"
Wir haben einen Output (Ergebnis), also "terminierend"
Input und Output (Ergebnis) identisch, also "Determiniert"
Wir haben einen Output (Ergebnis), also "terminierend"
Gibt es noch weitere Merkmale wie man was sofort erkennt?
gibt es einen Trick wie man auf Anhieb erkennen kann ob ein imperativer Algorithmus (Pseudocode) Deterministisch, Determiniert oder terminierend ist? Wenn mir das jemand netterweise auch anhand der Beispiele mal kurz erläutern könnte bzw. ein Feedback zu meinen "Versuchen" abgeben könnte
Java:
FAC: var X,Y: int;
input X;
Y:=1;
while X>1 do
Y:=Y ·X;
X:=X-1 od
output Y.
Wir haben einen Output (Ergebnis), also "terminierend"
Java:
algorithm BinarySearch (F, k) ! p
Eingabe: Folge F der Länge n, Schlüsse k
u := 1, o := n;
while u <= o do
m := (u + o)/2;
if F[m] = k then
return m
else
if k < F[m] then
o := m − 1
else
u := m + 1
fi;
fi;
od;
return NO_KEY
Wir haben keinen Output (Ergebnis), also "nicht terminierend"
Java:
FIB: var X, A, B, C: int;
input X;
A:=1; B:=1;
while X>0 do
C:=A+B; A:=B; B:=C; X:=X-1
od
output A.
Wir haben einen Output (Ergebnis), also "terminierend"
Java:
GGT1 :var X,Y: int;
input X,Y;
while X ≠ Y do
while X>Y do X:=X-Y od;
while X<Y do Y:=Y-X od
od;
output X
Wir haben einen Output (Ergebnis), also "terminierend"
Gibt es noch weitere Merkmale wie man was sofort erkennt?