Hallo!
Ich habe hier eine Aufgabe und weiss nicht so ganz, ob ich das richtig vertanden habe:
Gegeben folgende Java Methode m(n):
Geben sie einfache und gute O-Schranken für die Laufzeit von m(n) unter folgenden Annahmen:
Die Laufzeit von f(n) ist O(n!) und der Wert von f(n) ist 2^n.
Also ich habe mir bisher folgendes gedacht:
In der Summe müsste das doch O(n*2^n) sein, was mich hier etwas irritiert ist die Laufzeit von f(n) = O(n!) muss ich das berücksichtigen bei der Zuweisung:
Ich hoffe jemand hat da etwas Ahnung von und könnte mir kurz erläutern, ob ich das so richtig gemacht habe bzw. wenn nicht, wo meine Fehler liegen. Danke schonmal!
Ich habe hier eine Aufgabe und weiss nicht so ganz, ob ich das richtig vertanden habe:
Gegeben folgende Java Methode m(n):
Java:
sum = 0;
bound = f(n);
for (int i = 0; i < bound; i++) {
for (int j = n; j >= 0; j--) {
sum += (i + 2 * j);
}
}
Geben sie einfache und gute O-Schranken für die Laufzeit von m(n) unter folgenden Annahmen:
Die Laufzeit von f(n) ist O(n!) und der Wert von f(n) ist 2^n.
Also ich habe mir bisher folgendes gedacht:
Java:
sum = 0; // O(1) --> Zuweisung
bound = f(n); // O(1) -->Zuweisung
for (int i = 0; i < bound; i++) { // O(2^n) --> Wert von f(n)
for (int j = n; j >= 0; j--) { // O(n) --> n Durchläufe
sum += (i + 2 * j); // O(1)
}
}
In der Summe müsste das doch O(n*2^n) sein, was mich hier etwas irritiert ist die Laufzeit von f(n) = O(n!) muss ich das berücksichtigen bei der Zuweisung:
Java:
bound = f(n);
Ich hoffe jemand hat da etwas Ahnung von und könnte mir kurz erläutern, ob ich das so richtig gemacht habe bzw. wenn nicht, wo meine Fehler liegen. Danke schonmal!