Stor O-notasjon

Stor O-notasjon er en matematisk notasjon som gir en asymptotisk tilnærming til en funksjon g ( x ) {\displaystyle g(x)} , og skrives ofte O ( g ( x ) ) {\displaystyle O(g(x))} . Formålet er å kunne gi en enkel og grov beskrivelse av utviklingen til funksjonen g ( x ) {\displaystyle g(x)} når x øker. Mer presist blir symbolet O {\displaystyle O} brukt til å beskrive en asymptotisk øvre grense for en funksjon ved hjelp av en, som oftest, enklere funksjon. Det er også andre symboler o, Ω, ω, and Θ for å beskrive forskjellige andre asymptotiske grenser. Stor O-notasjon blir spesielt brukt i kompleksitetsteori, en del av informatikken som sier noe om ressursbruken til en algoritme.

Uttrykket   f ( x ) = O ( g ( x ) ) {\displaystyle \ f(x)=O(g(x))} , eventuelt   f O ( g ) {\displaystyle \ f\in O(g)} , betyr at   f ( x ) {\displaystyle \ f(x)} for store verdier av   x {\displaystyle \ x} alltid er mindre enn   c g ( x ) {\displaystyle \ cg(x)} , der c er en konstant. En annen måte å skrive det på, er

lim sup x | f ( x ) g ( x ) | < . {\displaystyle \limsup _{x\to \infty }\left|{\frac {f(x)}{g(x)}}\right|<\infty .}

Fordelen med en slik notasjon, er at det går an å forenkle kompleksitetsanalysen, uten å få alt for store feil. For eksempel er x 3 + 100 x 2 O ( x 3 ) {\displaystyle x^{3}+100x^{2}\in O(x^{3})} , da 100x2 er forsvinnende liten i forhold til x3 når x er stor.

Grensen er ikke streng; g kan godt vokse mye raskere enn f. Hvis de vokser like raskt, det vil si at f O ( g ) , g O ( f ) {\displaystyle f\in O(g),g\in O(f)} , sier vi at f Θ ( g ) {\displaystyle f\in \Theta (g)} .

Relaterte notasjoner

Notasjon Definisjon Matematisk definisjon Alternativ definisjon
f ( n ) O ( g ( n ) ) {\displaystyle f(n)\in O(g(n))} asymptotisk øvre grense lim sup n | f ( n ) g ( n ) | < {\displaystyle \limsup _{n\to \infty }\left|{\frac {f(n)}{g(n)}}\right|<\infty } x 0 , M > 0  slik at  | f ( x ) | M | g ( x ) |  for alle  x > x 0 . {\displaystyle \exists \;x_{0},\exists \;M>0{\mbox{ slik at }}|f(x)|\leq \;M|g(x)|{\mbox{ for alle }}x>x_{0}.}
f ( n ) Ω ( g ( n ) ) {\displaystyle f(n)\in \Omega (g(n))} asymptotisk nedre grense lim inf n | f ( n ) g ( n ) | > 0 {\displaystyle \liminf _{n\to \infty }\left|{\frac {f(n)}{g(n)}}\right|>0} x 0 , M > 0  slik at  | f ( x ) | M | g ( x ) |  for alle  x > x 0 . {\displaystyle \exists \;x_{0},\exists \;M>0{\mbox{ slik at }}|f(x)|\geq \;M|g(x)|{\mbox{ for alle }}x>x_{0}.}
f ( n ) Θ ( g ( n ) ) {\displaystyle f(n)\in \Theta (g(n))} asymptotisk tett grense 0 < lim inf n | f ( n ) g ( n ) | lim sup n | f ( n ) g ( n ) | < {\displaystyle 0<\liminf _{n\to \infty }\left|{\frac {f(n)}{g(n)}}\right|\leq \limsup _{n\to \infty }\left|{\frac {f(n)}{g(n)}}\right|<\infty } f ( n ) O ( g ( n ) )  og  f ( n ) Ω ( g ( n ) ) {\displaystyle f(n)\in O(g(n)){\mbox{ og }}f(n)\in \Omega (g(n))}
f ( n ) o ( g ( n ) ) {\displaystyle f(n)\in o(g(n))} asymptotisk neglisjerbar lim n | f ( n ) g ( n ) | = 0 {\displaystyle \lim _{n\to \infty }\left|{\frac {f(n)}{g(n)}}\right|=0} M > 0 x 0  slik at  | f ( x ) | < M | g ( x ) |  for alle  x > x 0 . {\displaystyle \forall M>0\;\exists \;x_{0}{\mbox{ slik at }}|f(x)|<\;M|g(x)|{\mbox{ for alle }}x>x_{0}.}
f ( n ) ω ( g ( n ) ) {\displaystyle f(n)\in \omega (g(n))} asymptotisk dominerende lim n | f ( n ) g ( n ) | = {\displaystyle \lim _{n\to \infty }\left|{\frac {f(n)}{g(n)}}\right|=\infty } M x 0  slik at  | f ( x ) | > M | g ( x ) |  for alle  x > x 0 . {\displaystyle \forall M\;\exists \;x_{0}{\mbox{ slik at }}|f(x)|>\;M|g(x)|{\mbox{ for alle }}x>x_{0}.}


Vanlige klasser av funksjoner

Her er en liste over klasser av funksjoner som en ofte støter på ved analyse av algoritmer. De beskriver tidsforbruket til algoritmer når n øker mot uendelig. Funksjonene er listet med økende kompleksitet. c er en vilkårlig konstant.

Notatsjon Navn Eksempel
O(1) konstant Avgjør om et tall er et partall eller oddetall.
O(log n) logaritmisk Finn et element i en sortert liste binærsøk.
O(n) lineær Finn et element i en usortert liste.
O(n log n) loglineær Sorter en liste med heapsort.
O(n2) kvadratisk Sorter en liste med insertion sort.
O(cn) eksponensiell Finn den eksakte løsningen til traveling salesman-problemet.
O(n!) kombinatorisk Prøv alle mulige permutasjoner.
Oppslagsverk/autoritetsdata
MathWorld · Encyclopædia Universalis