Hallo zusammen,
ich soll bei den folgenden zwei Aufgaben den Zeitaufwand, in der O-Notation bestimmen.
Aufgabe 1: Bestimme den Zeitaufwand zur Berechnung des größten gemeinsamen Teilers zweier Zahlen a und b für den schlimmsten und besten Fall. Dabei sei die Eingabekomplexität n := max{a, b}.
Aufgabe 2: Bestimme den Zeitaufwand (in Abhängigkeit von n) des folgenden Programms:
Ich habe diesbezüglich natürlich schon hier recherchiert, was mich auch ein ganzes Stück weiter gebracht hat, jedoch blick ich bei dem Thema leider noch immer nicht so richtig durch (verstehe z.B. nicht so wirklich was mit 'Eingabekomplexität' gemeint sein soll).
Jedenfalls sind hier meine Herangehensweisen an die beiden Aufgaben (vermutlich vollkommen falsch):
zu Aufgabe 1:
zu Aufgabe 2:
Es würde mich freuen, wenn sich jemand mal meine Lösungsansätze ansehen könnte und mir ggf. erklären könnte, was ich da falsch verstehe, bzw. wie man richtig an die obigen Aufgaben herangeht.
Vielen Dank schonmal!
ich soll bei den folgenden zwei Aufgaben den Zeitaufwand, in der O-Notation bestimmen.
Aufgabe 1: Bestimme den Zeitaufwand zur Berechnung des größten gemeinsamen Teilers zweier Zahlen a und b für den schlimmsten und besten Fall. Dabei sei die Eingabekomplexität n := max{a, b}.
Java:
public int ggT(int a, int b) {
while(a != b) {
if (a > b) {
a = a - b;
} else {
b = b - a;
}
}
}
Aufgabe 2: Bestimme den Zeitaufwand (in Abhängigkeit von n) des folgenden Programms:
Java:
int x = 3;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j += 3) {
}
x = x * 3;
}
Ich habe diesbezüglich natürlich schon hier recherchiert, was mich auch ein ganzes Stück weiter gebracht hat, jedoch blick ich bei dem Thema leider noch immer nicht so richtig durch (verstehe z.B. nicht so wirklich was mit 'Eingabekomplexität' gemeint sein soll).
Jedenfalls sind hier meine Herangehensweisen an die beiden Aufgaben (vermutlich vollkommen falsch):
zu Aufgabe 1:
Code:
Bester Fall:
O(1) * O(1) + O(1)
= O(1 * 1 + 1)
= O(1)
Schlechtester Fall:
O(n) * O(1) + O(1)
= O(n * 1 + 1)
= O(n)
zu Aufgabe 2:
Code:
O(n) + O(n) * O(n) * O(1)
= O(n * n * 1 + 1)
= O(n^2 + 1)
= O(n^2)
Es würde mich freuen, wenn sich jemand mal meine Lösungsansätze ansehen könnte und mir ggf. erklären könnte, was ich da falsch verstehe, bzw. wie man richtig an die obigen Aufgaben herangeht.
Vielen Dank schonmal!
Zuletzt bearbeitet: