forked from cheng/wallet
5e116784bf
new file: images/msdos_linux_partition.webp modified: images/nobody_know_you_are_a_dog.webp modified: libraries.md new file: notes/merkle_patricia_dag.md modified: pandoc_templates/style.css new file: pandoc_templates/vscode.css modified: scale_clients_trust.md modified: setup/contributor_code_of_conduct.md modified: setup/set_up_build_environments.md modified: setup/wireguard.md modified: social_networking.md modified: ../libsodium modified: ../wxWidgets
1.3 KiB
1.3 KiB
title:
Big Circ notation
# katex
...
The definition of
\bigcirc
used by mathematicians is not convenient for engineers.
So in practice we ignore that definition and use our own.
The mathematical definition is, roughly, that if f(n)=\bigcirc\big(g(n)\big)
then f(n)
grows no faster than g(n)
, that there exists some value K such that for values of n
of interest and larger than of interest $f(n)\le Kg(n)$
Which is kind of stupid for engineers, because by that definition an algorithm that takes time \bigcirc(n)
also takes time \bigcirc(n^2)
, \bigcirc(n!)
, etcetera.
So, Knuth defined \large\Omega
, which means, roughly, that there exists some value K such that for values of n
of interest and larger than of interest $f(n)\ge Kg(n)$
Which is also stupid for the same reason.
So what all engineers do in practice is use \bigcirc
to mean that the mathematical definition of \bigcirc
is true, and Knuths definition of \large\Omega
is also largely true, so when we say that an operation take that much time, we mean that it takes no more than that much time, and frequently takes something like that much time.
So, by the engineer's definition of \bigcirc
, if an algorithm takes \bigcirc(n)
time it does not take \bigcirc(n^2)
time.
Which is why we never need to use Knuth's \large\Omega