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