CPSC 331: Tutorial 2
Asymptotics and Correctness
PhD Student
Spring 2018
Today
An array of practice problems + homework help
But first I want to remind you of some definitions, and equivalent forms of those definitions.
Asymptotic Notation
Big-O
Given a function \(f(n)\) and \(g(n)\) we say that \(f(n)\) is \(O(g(n))\) if there exist two positive constants \(c_0\) and \(n_0\) such that
\(f(n) \leq c_0 g(n)\) for every \(n > n_0 \)
This is an asymptotic upper bound -- \(f(n)\) grows at most as fast as \(g(n)\)
This is often written as \(f(n) = O(g(n))\) or \(f(n) \in O(g(n))\)
Asymptotic Notation
Big-O (Limit Form)
Given a function \(f(n)\) and \(g(n)\) we say that \(f(n)\) is \(O(g(n))\) if there exists a constant \(0 \leq c < \infty\) such that
\(\lim_{n \to \infty}\frac{f(n)}{g(n)} = c \)
This definition is equivalent to the last statement, but it might be easier to use this form than the previous (and often it is).
Asymptotic Notation
Big-\(\Omega\)
Given a function \(f(n)\) and \(g(n)\) we say that \(f(n)\) is \(\Omega(g(n))\) if there exist positive two constants \(c_0\) and \(n_0\) such that
\(f(n) \geq c_0 g(n)\) for every \(n > n_0 \) .
This is an asymptotic lower bound -- \(f(n)\) grows no slower than \(g(n)\)
This is often written as \(f(n) = \Omega(g(n))\) or \(f(n) \in \Omega(g(n))\)
Asymptotic Notation
Big-\(\Omega\) (Limit Form)
Given a function \(f(n)\) and \(g(n)\) we say that \(f(n)\) is \(\Omega(g(n))\) if there exists a constant \(0 < c \leq \infty\) such that
\(\lim_{n \to \infty}\frac{f(n)}{g(n)} = c. \)
Again, this definition is equivalent to the last statement, but it might be easier to use this form than the previous (and often it is).
Notice the different conditions on \(c\) compared to the limit definition of \(O(g(n))\)
Asymptotic Notation
Big-\(\Theta\)
Given a function \(f(n)\) and \(g(n)\) we say that \(f(n)\) is \(\Omega(g(n))\) if there exist three positive constants \(c_0,c_1\) and \(n_0\) such that
\(c_0g(n) \leq f(n) \leq c_1 g(n)\) for every \(n > n_0 \) .
This is an asymptotic tight bound -- \(f(n)\) grows no slower and no faster than \(g(n)\)
This is often written as \(f(n) = \Theta(g(n))\) or \(f(n) \in \Theta(g(n))\)
Asymptotic Notation
Big-\(\Theta\) (Limit Form)
Given a function \(f(n)\) and \(g(n)\) we say that \(f(n)\) is \(\Theta(g(n))\) if there exists a constant \(0 < c < \infty\) such that
\(\lim_{n \to \infty}\frac{f(n)}{g(n)} = c. \)
Again, this definition is equivalent to the last statement, but it might be easier to use this form than the previous (and often it is).
Again, notice the different conditions on \(c\) compared to the limit definition of \(O(g(n))\) and \(\Omega(g(n))\)).
Asymptotic Notation
Little-o
Given a function \(f(n)\) and \(g(n)\) we say that \(f(n)\) is \(o(g(n))\) if, for every positive \(c\) there exists a constant \(n_0\) such that
\(f(n) < c \cdot g(n)\) for every \(n > n_0 \) .
The intuition for this is that \(g(n)\) grows strictly faster than \(f(n)\).
How is this different from \(O(g(n))\)?
Asymptotic Notation
Little-o (Limit Form)
Given a function \(f(n)\) and \(g(n)\) we say that \(f(n)\) is \(o(g(n))\) if
\(\lim_{n \to \infty}\frac{f(n)}{g(n)} = 0. \)
This is often written as \(f(n) = o(g(n))\) or \(f(n) \in o(g(n))\)
Asymptotic Notation
Summary
Notation
Relationship
Conditions
\(f(n) = O(g(n))\)
\(f(n) = o(g(n))\)
\(f(n) = \Omega(g(n))\)
\(f(n) = \Theta(g(n))\)
\(f(n) \leq c_0 g(n), \forall n>n_0 \)
\(\exists n_0, \exists c_0 > 0\)
\(f(n) < c_0 g(n), \forall n>n_0 \)
\(\exists n_0, \forall c_0 > 0\)
\(f(n) \geq c_0 g(n), \forall n>n_0 \)
\(\exists n_0, \exists c_0 > 0\)
\(c_0 \leq f(n) \leq c_1 g(n), \forall n>n_0 \)
\(\exists n_0, \exists c_0, \exists c_1 > 0\)
\(\exists\) means "there exists", \(\forall\) means "for all"
Asymptotic Notation
Summary (Limit Definition)
Say we evaluate the limit
\(\lim_{n \to \infty}\frac{f(n)}{g(n)} = c. \)
If \(c = 0\) then \(f(n) = o(g(n))\) and \(f(n) = O(g(n))\)
If \(0 < c < \infty \) then \(f(n) = O(g(n))\), \(f(n) = \Omega(g(n))\) and \(f(n) = \Theta(g(n))\)
If \(c = \infty \) then \(f(n) = \Omega(g(n))\) and \(f(n) = \omega(g(n))\)
Notes
How is this different from \(O(g(n))\)?
If you're going to go the path of limits, you need to make sure you justify that your limits exist.
Sum Law
If the limits \(\lim_{n \to \infty} f(n) = A\) and \(\lim_{n \to \infty} g(n) = B\) exist (and are finite) then
\(\lim_{n \to \infty} f(n)+g(n) = A+B\)
Product Law
If the limits \(\lim_{n \to \infty} f(n) = A\) and \(\lim_{n \to \infty} g(n) = B\) exist (and are finite) then
\(\lim_{n \to \infty} f(n)\cdot g(n) = A\cdot B\)
Notes
How is this different from \(O(g(n))\)?
L'Hopital's Rule
If we have \(\lim_{x \to \infty} f(x)/g(x) \) in an indeterminate form (i.e. \(0/0\) or \(\pm\infty/\pm\infty\)), then we have
\(\lim_{x \to \infty} \frac{f(x)}{g(x)} \) = \(\lim_{x \to \infty} \frac{f'(x)}{g'(x)} \)
Next Week
Recursion and Sorting
CPSC 331: Tutorial 2
By Joshua Horacsek
CPSC 331: Tutorial 2
- 1,297