principleMinor
O(f) vs O(f(n))
Viewed 0 times
stackoverflowprogrammingcode
Problem
I first learned about the Big O notation in an intro to Algorithms class. He showed us that function $g \in O(f(n))$
Afterwords in Discrete Math another Professor, without knowing of the first, told us that we should never do that and that it should be done as $g \in O(f)$ where g and f are functions.
The question is which one of these is right, why, and if they both are, what is the difference?
Afterwords in Discrete Math another Professor, without knowing of the first, told us that we should never do that and that it should be done as $g \in O(f)$ where g and f are functions.
The question is which one of these is right, why, and if they both are, what is the difference?
Solution
There are two views on this, formal and pragmatic.
Formally, you always have $O(f(n)) = O(1)$ as long as $f : \mathbb{N} \to \mathbb{N}$ since $f(n)$ is just a number, i.e. a constant function. $O(f)$, on the other hand, does what you want.
However, you often want to indicate which variable goes to infinity¹. If you let $f : x \mapsto x^2$ and state
$\qquad\displaystyle 2n + k \in O(f)$,
which variable should identify with $x$? Writing
$\qquad\displaystyle 2n + k \in O(f(n))$
can be used (given mutual understanding) to clarify.
Personally, I'd propose to use
$\qquad\displaystyle 2n + k \in O(f)$ for $n \to \infty$
or
$\qquad\displaystyle 2n + k \in O_n(f)$.
However, use of Landau notation is (sadly) not meant to be rigorous most of the time², but is instead used as a lazy shortcut.
-
Never mind that Landau notation gets into trouble when two independent variables are around, anyway.
-
Meaning that many people use it in a sloppy way. Not saying that that's a good thing. Many questions on this site are based in wrong understanding of terms that are founded in teachers promoting sloppiness in the name of (alleged) clarity (imho).
Formally, you always have $O(f(n)) = O(1)$ as long as $f : \mathbb{N} \to \mathbb{N}$ since $f(n)$ is just a number, i.e. a constant function. $O(f)$, on the other hand, does what you want.
However, you often want to indicate which variable goes to infinity¹. If you let $f : x \mapsto x^2$ and state
$\qquad\displaystyle 2n + k \in O(f)$,
which variable should identify with $x$? Writing
$\qquad\displaystyle 2n + k \in O(f(n))$
can be used (given mutual understanding) to clarify.
Personally, I'd propose to use
$\qquad\displaystyle 2n + k \in O(f)$ for $n \to \infty$
or
$\qquad\displaystyle 2n + k \in O_n(f)$.
However, use of Landau notation is (sadly) not meant to be rigorous most of the time², but is instead used as a lazy shortcut.
-
Never mind that Landau notation gets into trouble when two independent variables are around, anyway.
-
Meaning that many people use it in a sloppy way. Not saying that that's a good thing. Many questions on this site are based in wrong understanding of terms that are founded in teachers promoting sloppiness in the name of (alleged) clarity (imho).
Context
StackExchange Computer Science Q#22908, answer score: 4
Revisions (0)
No revisions yet.