Schrift
[thread]1584[/thread]

Komplexität von Algorithmen: Komplexität der Form O(N) (Seite 2)

Leser: 1


<< |< 1 2 3 >| >> 30 Einträge, 3 Seiten
esskar
 2004-07-28 17:59
#15625 #15625
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=Ishka,28.07.2004, 15:02]sondern eine Klasse (im Prinzip eine Menge)[/quote]
ja, eine Menge von Funktion, deswegen schreibt man ja auch
Die Funktion f ist Element von O(N).

@eb: Du kannst dir mal folgendes Script anschauen:

http://fred.bioinf.uni-sb.de:4711/prog2_s....ion.pdf
http://fred.bioinf.uni-sb.de:4711/prog2_ss04/lectures/o-notation.pdf

lass dich aber nicht abschrecken... schau dir am besten die Beispiele und Graphen an\n\n

<!--EDIT|esskar|1091023273-->
[E|B]
 2004-07-28 21:29
#15626 #15626
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
OK, danke. Kann mir jetzt noch jemand ein Beispiel für folgende Komplexitäten geben:

1) O(logN)
2) O(N!)
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
kabel
 2004-07-28 22:01
#15627 #15627
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
n! ist exponentielles wachstum => NP-vollstaendige probleme, ...
log n => suche in einem binaeren baum
-- stefan
esskar
 2004-07-28 22:08
#15628 #15628
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
jo. wobei log der Logarithmus zur basis 2 ist

annahme, du hast eine array mit N elementen die sortiert sind ... sagen wir N sei 8, und jedes element kommt nur einmal vor
jetzt sollst du die Position eines Elementen bestimmen

ARRAY = [1, 2, 3, 4, 5, 6, 7, 8]; Du sollst nun das Element 7 finden... also splittest du das ARRAY in zwei hälften;

ARRAY1 = [1, 2, 3, 4]; ARRAY2 = [5, 6, 7, 8]
jetzt schaust du, ob dein Element im ersten oder im zweiten array liegt... man weiß ja, dass das array sortiert war, also musst du einfach z.b. 4 mit 7 und 5 mit 7 vergleichen...
du siehst, dass 4 das letzte element im linken, und somit das größte ist, deine 7 aber größer als 4 ist, und somit nicht im linken array sondern nur noch im rechten array sein kann; also nimmst du dir das rechte array vor und teilst wieder und vergleichst...
so kommst du dann in (maximal) O(log N) teilungen zum ergebnis\n\n

<!--EDIT|esskar|1091038156-->
kabel
 2004-07-28 22:19
#15629 #15629
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
die basis ist wurscht ;-P log(2, x) = log (b, x) / log (b, 2)
1/log (b, 2) ist ne konstante, und somit mit landau funktionenmengen nicht mehr interessant :-)
-- stefan
esskar
 2004-07-28 22:31
#15630 #15630
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ist klar, anders aber schwerer zu zeigen
kabel
 2004-07-28 22:45
#15631 #15631
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
log 3 geht mit ner waage ganz gut.
log 4?
-- stefan
[E|B]
 2004-07-29 15:54
#15632 #15632
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
OK, so langsam wird das ganze etwas klarer. Ich habe noch ein paar Artikel gelesen, die ich über Google gefunden habe.
Nun noch ein paar weitere Fragen:

Was wird nun genau mit O() bezeichnet? N ist die Laufzeit. Und was ist dann O(N)? Würde es nicht reichen, wenn ich sage: Der Algorithmus hat die Komplexität von N? Man wüsste doch genau, was gemeint ist.
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
esskar
 2004-07-29 16:19
#15633 #15633
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
nein, N ist nicht die Laufzeit; N ist eine Menge

Ist gibt auch nicht nur O(N) vondern auch \Theta(N), o(N) (kleines o), \Omega(N), etcpp...

das Symbol vor (N) sagt, wie die Funktion wächst...

Wenn man sagt, dass ein Algorithmus in O(N) läuft, dann heißt das in Wirklichkeit:

Eine Funktion f, die den Algorithmus beschreibt, wächst nicht schneller als die Funktion g mit g(x) = x bzw. man kann schreiben

f ist Element von O(g) = f <= g

Wenn was in o(N) läuft, kann man sagen

f ist Element von o(g) = f < g; also f wächst langsamer als g

usw.
pq
 2004-07-29 17:24
#15634 #15634
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[E|B
,29.07.2004, 13:54]
Was wird nun genau mit O() bezeichnet? N ist die Laufzeit. Und was ist dann O(N)?

N ist nicht die laufzeit, sondern die menge/anzahl der elemente.
O(N) ist das laufzeitverhalten in abhängigkeit von N.
abe das habe ich weiter oben ja schon gesagt.

d.h. O(N^2) heisst: doppelte anzahl von eingabe-elementen = vierfache laufzeit
dreifache anzahl von eingabe-elementen: neunfache laufzeit
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 3 >| >> 30 Einträge, 3 Seiten



View all threads created 2004-07-28 15:51.