Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

Neo

Erfahrener Schreiberling

  • "Neo" is male
  • "Neo" started this thread

Posts: 322

Date of registration: Jul 24th 2005

Location: Hannover

Occupation: Informatik

1

Friday, February 9th 2007, 12:13pm

KVA Übung 1, Komplexitätsmaße

Hallo,

zur Übung 1, Aufgabe 1 h) habe ich eine Frage:

http://www.thi.uni-hannover.de/lehre/ss0…06-uebung-1.pdf

Was bedeutet es, wenn O(n) im Exponenten steht?

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

2

Friday, February 9th 2007, 12:17pm

RE: KVA Übung 1, Komplexitätsmaße

Quoted

Original von Neo
Was bedeutet es, wenn O(n) im Exponenten steht?
O(n) ist ja grob gesagt die Klasse aller Funktionen, die nach oben durch die Funktion f(n) = n "beschränkt" sind. 2^{O(n)} ist dann die Klasse aller Funktionen der Form 2^(g(n)), wobei g eine Funktion aus der Klasse O(n) ist.
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

This post has been edited 1 times, last edit by "Joachim" (Feb 9th 2007, 12:18pm)


Neo

Erfahrener Schreiberling

  • "Neo" is male
  • "Neo" started this thread

Posts: 322

Date of registration: Jul 24th 2005

Location: Hannover

Occupation: Informatik

3

Friday, February 9th 2007, 12:25pm

Das heißt, dass eine Funktion, deren Laufzeit durch 2^O(n) nach oben hin
beschränkt ist, exponentielle Laufzeit besitzt.

Somit trifft die Aussage aus Aufgabe 1h) nicht zu. Denn n^3 wächst kubisch
mit der Länge der Eingabe, Funktionen der Klasse O(n) dagegen linear.

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

4

Friday, February 9th 2007, 2:34pm

Quoted

Original von Neo
Das heißt, dass eine Funktion, deren Laufzeit durch 2^O(n) nach oben hin
beschränkt ist, exponentielle Laufzeit besitzt.
DIe Laufzeit ist nicht zwingend exponentiell, denn 2^{log2(n)} ist ja auch in der Klasse 2^{O(n)} enthalten.

Quoted

Somit trifft die Aussage aus Aufgabe 1h) nicht zu. Denn n^3 wächst kubisch
mit der Länge der Eingabe, Funktionen der Klasse O(n) dagegen linear.
Das reicht als Begründung nicht. 2^{n^3} wächst asymptotisch "echt stärker" als jede Funktion aus 2^{O(n)}; das läßt sich über die Definition der O-Notation beweisen.
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

Neo

Erfahrener Schreiberling

  • "Neo" is male
  • "Neo" started this thread

Posts: 322

Date of registration: Jul 24th 2005

Location: Hannover

Occupation: Informatik

5

Friday, February 9th 2007, 4:36pm

Nach der Definition von O gibt es Funktionen f und g,
so dass gelten muss:

f=O(g), falls f(n) <= c * g(n)

Gilt diese Definition Analog auch für

2^f = 2^O(g), falls 2^f(n) <= c* 2^g(n)

???

Falls ja, dann würde man nach erfolgreicher Umstellung folgende
Formel erhalten:

log2(c) = f(n) - g(n)

Links steht eine Konstante, und rechts steht im Prinzip wieder: n^3 - g(n).

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

6

Sunday, February 11th 2007, 2:32pm

Quoted

Original von Neo
Nach der Definition von O gibt es Funktionen f und g,
so dass gelten muss:

f=O(g), falls f(n) <= c * g(n)

Gilt diese Definition Analog auch für

2^f = 2^O(g), falls 2^f(n) <= c* 2^g(n)
Direkt läßt sich das vermutlich nicht übertragen.

O(n) ist eine Klasse von Funktionen. "f(n) = O(n)" ist eigentlich als "f(n) \in O(n)" zu lesen und bedeutet daher daß die Funktion f in der Klasse O(n) enthalten ist.

2^{O(n)} ist dann ebenfalls eine Klasse von Funktionen. Und zwar gilt 2^{O(n)} = {g | es gibt eine Funktion f aus der Klasse O(n), so daß g = 2^f gilt}.

Üblicherweise meint man mit 2^{...} sogar die Klasse O(2^{...}), da es bei Exponentialfunktionen sowieso nicht mehr auf Vorfaktoren und Summanden ankommt. (Ich gebe zu, daß der Aufgabenzettel bei dieser Aufgabe nicht besonders präzise ist. Bei der Erstellung der Aufgaben damals habe ich aber angenommen, daß die O-Notation ausführlich bereits in der Veranstaltung "Datenstrukturen und Algorithmen" behandelt wurde, also daß inbesondere Schreibweisen wie 2^{O(...)} bekannt sind.)

So, nun also zurück zur ursprünglichen Frage: Gilt 2^{n^3} = 2^{O(n)}? Dies ist (mit den obigen Erläuterungen) äquivalent zur Frage, ob die Funktion 2^{n^3} in der Klasse O(2^{O(n)}) enthalten ist. Dies ist nicht der Fall. Denn 2^{n^3} / 2^{k * n + c} ist gleich 2^{n^3 - k * n - c}, was für jedes Paar von Konstanten k und c gegen unendlich strebt.
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

This post has been edited 1 times, last edit by "Joachim" (Feb 11th 2007, 2:33pm)