In de wiskunde en informatica is de Big O-notatie een manier om de groeisnelheid van verschillende functies te vergelijken. Het wordt vaak gebruikt om de efficiëntie van verschillende algoritmen te vergelijken, wat gebeurt door te berekenen hoeveel geheugen er nodig is, en hoeveel tijd het kost om het te voltooien.

De Big O-notatie wordt vaak gebruikt om aan te geven hoe complex een probleem is, ook wel de complexiteitsklasse van het probleem genoemd. De wiskundige Paul Bachmann (1837-1920) was de eerste die deze notatie gebruikte, in de tweede editie van zijn boek "Analytische Zahlentheorie", in 1896. Edmund Landau (1877-1938) maakte de notatie populair. Daarom verwijzen mensen die het hebben over Landau-symbolen naar deze notatie.

De Big O-notatie is genoemd naar de term "orde van de functie", die verwijst naar de groei van functies. De Big O-notatie wordt gebruikt om de bovengrens (de hoogst mogelijke hoeveelheid) van de groeisnelheid van de functie te vinden, wat betekent dat de langste tijd wordt berekend die nodig is om de invoer om te zetten in de uitvoer. Dit betekent dat een algoritme kan worden gegroepeerd aan de hand van hoe lang het kan duren in een worst-case scenario, waarbij telkens de langste weg wordt genomen.

Meer bepaald, gegeven twee positieve functies f ( x ) {displaystyle f(x)}f(x) en g ( x ) {displaystyle g(x)}{\displaystyle g(x)} , zeggen we dat f {displaystyle f}f in de grote O van g {displaystyle g}g ligt (geschreven f O ( g ) {displaystyle f in O(g)}{\displaystyle f\in O(g)} ) als voor groot genoeg x {displaystyle x}x , f ( x ) ≤ k g ( x ) {displaystyle f(x)\leq k\cdot g(x)}{\displaystyle f(x)\leq k\cdot g(x)} voor een constante k {displaystyle k}k .

Big O is een uitdrukking die een worst-case scenario run-time vindt, die laat zien hoe efficiënt een algoritme is zonder dat het programma op een computer moet worden uitgevoerd. Dit is ook nuttig omdat verschillende computers verschillende hardware kunnen hebben, en daarom verschillende hoeveelheden tijd nodig hebben om het programma te voltooien. Aangezien Big O altijd uitgaat van het slechtste geval, kan het een consistente snelheidsmeting weergeven: ongeacht de hardware, zal O ( 1 ) {displaystyle O(1)}{\displaystyle O(1)} altijd sneller klaar zijn dan O ( n ! ) {displaystyle O(n!)}. {\displaystyle O(n!)}omdat ze verschillende efficiëntieniveaus hebben.