Wenn random(n) einen Wert in [0;n-1] liefert, bildet das an c übergebene Argument eine streng monoton fallende Folge. Somit terminiert die Funktion auch. (ich gehe mal davon aus, dass für x==0 eine konstante zurückgegeben werden soll)
neuling96
über fehlt "nicht"
die beiden bsp sind nicht
Determinismus
Determiniertheit
wenn ich habe
public static int c(int i){
code....
...
int x=random(i);
if( x>0){
return c(x);
}
das muss nicht terminieren`?
eulerscheZahl
Zitat:
allerdings verstehe ich 100%
Den Eindruck habe ich nicht.
Die Beispiele sind beide weder deterministisch, noch determiniert.
Hier ein Beispiel, das deterministisch und determiniert ist:
code:
1:
2:
3:
public int func(int a) {
return 2 * a;
}
determiniert (immer das selbe Ergebnis), aber nicht deterministisch (verschiedene Wege, um zum Ergebnis zu gelangen):
code:
1:
2:
3:
4:
5:
public int func(int a) {
int r = random(a);
if (r == 0) return 2 * a; //der eine Weg
else return a + a; //und der andere, aber selbes Ergebnis
}
neuling96
ich habs gelesen, allerdings verstehe ich 100%
hier 2 bsp
public static int c(int i){
code....
...
int x=random(i);
return x;
also beides
Determinismus
Determiniertheit
2ter fall
public static boolean c(int i){
code....
...
boolean a=true;
int x=random(i);
if(x>0){
a=false;
Wenn sich der Rückgabewert unterscheidet, sind beide nicht erfüllt. Der Unterschied wird auch im 2. oben verlinkten Artikel erklärt.
neuling96
determiniert abhängig vom rückgabewert.
und
wie es determinierst?
determinierst :
Ein Algorithmus heißt deterministisch, wenn die Wirkung und die
Reihenfolge der Einzelschritte eindeutig festgelegt ist, andernfalls
nicht-deterministisch
wegen
int i= random(c);
ist es nicht-deterministisch?
eulerscheZahl
Zitat:
Für die gleiche Eingabe folgt auch immer die gleiche Ausgabe