Jako je zanimljivo kako zaista malo programera i programskih inženjera razumije zašto ustvari koristimo Veliko-O (Big-O) notaciju u svrhu označavanja asimptotske gornje granice funkcije. Dobar ih dio u podne i ponoć zna izrecitirati formalnu matematičku definiciju za veliko i malo O, thetu, omegu i tildu ~, kao i odokativno procijeniti vremensku složenost nekih jednostavnijih algoritama s kojima se susretnu u praksi - no pravi razlozi korištenja takve asimptotske definicije im, izgleda, ostanu vječna enigma.
Stvar je inače jako jednostavna: u računskoj teoriji složenosti postoji jedno teoremče koje slovi kao Teorem o linearnom ubrzanju (linear speedup theorem) i formalno se može iskazati ovako:
Za proizvoljan rekurzivan (odlučiv) jezik L i za svaki Turingov stroj T koji ga odlučuje, za neku realnu nenegativnu konstantu c, postoji Turingov stroj S nad istom abecedom koji odlučuje L i za kojeg vrijedi:
timeS(n) ≤ c*timeT(n) + n, ∀n∈ N
Drugim riječina, za bilo koji TS koji rješava problem rabeći f(n) resursa, postoji stroj koji rješava isti problem u c*f(n) resursa, za c>0. To je razlog zašto se linearni faktori u konačnici ignoriraju i koristimo Veliko-O notaciju definiranu preko limesa.
Postoji još i općenitiji teorem o ubrzanju (speedup theorem) koji govori samo o postojanju ubrzivog jezika i koji nije primjenjiv samo na odlučive jezika, kao što je slučaj sa teoremom o linearnom ubrzanju. Za dokazivanje teorema koji bi za proizvoljani odlučiv jezik pokazao postojanje više od linearnog ubrzanja ne bi ginula Turingova nagrada ;)
Kvadratno se ubrzanje za neke klase algoritama (Groverov algoritam pretrage) može ostvariti kvantnim računalima, poput onoga kakvog je prototipno konstruirala kompanija D-Wave. Općenito se može pokazati da bilo koji problem koji može biti riješen brute-force pretragom slučajno odabranih instanci, može kvadratno ubrzati