Seite 1 von 1

O Notation Algorithmus

Verfasst: 27. Oktober 2010 11:58
von gast23
Hi,

wenn ich z.B. ein Algorithmus habe der zwei geschachtelte foreach Schleifen nutzt für N Element ist die O Notation:

Bild

Wenn ein Algorithmus 1. eine Foreach über N Element und danach als neue Anweisung dann 2. eine geschachtelte foreach Schleife besitzt

=> ist dann die Notation O(n + n²)?

Verfasst: 27. Oktober 2010 15:13
von androphinx
also keine Ahnung warum man das unbedingt so auseinander nehmen muss, aber wahrscheinlich wirst du das wohl gerade in der uni / schule haben. ich hab ehrlich gesagt nicht so wirklich viel ahnung von O-Notationen aber zumindest stimmt es rein rechnerisch...

Mfg androphinx

Verfasst: 27. Oktober 2010 15:47
von gast23
Ist für meine Arbeit und ich hab vergessen wie das alles genau war ;-D

Verfasst: 27. Oktober 2010 19:05
von androphinx

Verfasst: 27. Oktober 2010 21:29
von solarix
ich meinte mich zu erinnern, dass man nur die dominanten Ausdrücke angibt (wenn n gegen unendlich geht..).

Ach ja.. in androphinx' Link stehts ja..:
http://www.linux-related.de/index.html?/coding/o-notation.htm hat geschrieben: Salopp ausgedrückt: "strebt die Anzahl der Eingabewerte n gegen unendlich, so wird der n2-Term dominant und alle anderen Terme sind zu vernachlässigen".
In deinem Fall wird IMHO "O(n + n²)" also zu "O(n²)"....

hth..

Verfasst: 28. Oktober 2010 12:33
von gast23
Hm aber warum?

Wenn n=1millarde ist, dann fällt doch die eine foreach schleife mit sicherheit spürbar ins gewicht.

Verfasst: 28. Oktober 2010 12:46
von franzf
Naja...

Code: Alles auswählen

10^9 + 10^9*10^9 ~ 10^9 * 10^9
oder?
Selbst mit n=100 gilt schon

Code: Alles auswählen

100 + 100*100 = 10100 ~ 10000
Eine Abweichung von gerade mal 1%...
Kann evtl. kritisch sein bei manchen Anwendungen - aber im Allgemeinen eher nicht.

Verfasst: 28. Oktober 2010 13:42
von gast23
Gibt es evtl. noch eine andere Art die Laufzeit eines A. zu kommunizieren ohne Code?

Verfasst: 22. Dezember 2010 21:31
von Panke
Die O-Notation ist eben gerade nicht dafür da, die Laufzeit eines
Algorithmus exakt anzugeben. Sie teilt eher die Alogrithmen in
Klassen ein, in denen alle Algorithmen ungefähr gleich gut sind -- im jeweils schlechtesten Fall.

Man kann natürlich auch den durchschnittlichen oder den besten Fall betrachten. Im Grunde ist es immer interessant, die tatsächlich auftretenen Eingaben zu betrachten und konkret zu messen.