Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- eigenschaften algorithmus (http://www.informatikerboard.de/board/thread.php?threadid=2132)


Geschrieben von neuling96 am 06.02.2015 um 16:59:

  eigenschaften algorithmus

wenn in einer Methode
zumbsp random vorkommt

public static int c(intc){

in i=random(c);
//rest code


...
...

dann ist die Metode nicht determinierst und auch nicht determiniert?



Geschrieben von eulerscheZahl am 07.02.2015 um 17:58:

 

Zitat:
Für die gleiche Eingabe folgt auch immer die gleiche Ausgabe
(wikipedia)

Wenn der Rückgabewert irgendwie von i abhängt, wird das nicht erfüllt.



Geschrieben von neuling96 am 07.02.2015 um 18:08:

 

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?



Geschrieben von eulerscheZahl am 07.02.2015 um 18:16:

 

Hier nochmal die Definitionen:
Determinismus
Determiniertheit

Wenn sich der Rückgabewert unterscheidet, sind beide nicht erfüllt. Der Unterschied wird auch im 2. oben verlinkten Artikel erklärt.



Geschrieben von neuling96 am 07.02.2015 um 18:23:

 

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;


return a;

also beides
Determinismus
Determiniertheit



Geschrieben von eulerscheZahl am 07.02.2015 um 18:29:

 

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
}



Geschrieben von neuling96 am 07.02.2015 um 18:32:

 

ü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`?



Geschrieben von eulerscheZahl am 07.02.2015 um 18:40:

 

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)



Geschrieben von neuling96 am 07.02.2015 um 19:35:

 

danke langsam wird es einleuchtender


Forensoftware: Burning Board, entwickelt von WoltLab GmbH